最新R语言局部多项式回归拟合LOESS回归案例分析报告 附代码数据.docx
《最新R语言局部多项式回归拟合LOESS回归案例分析报告 附代码数据.docx》由会员分享,可在线阅读,更多相关《最新R语言局部多项式回归拟合LOESS回归案例分析报告 附代码数据.docx(14页珍藏版)》请在冰豆网上搜索。
最新R语言局部多项式回归拟合LOESS回归案例分析报告附代码数据
R语言局部多项式回归拟合LOESS回归案例分析报告
LOESS回归是用来拟合平滑易变的时间序列的最常见的方法。
这是一种非参数方法,其中最小二乘回归在局部子集中执行。
介绍
局部回归的LOESS是一种非参数方法,适合多重回归。
如果你知道你的X变量被绑定在一个范围内,这可以是特别足智多谋的。
可以使用loess()数值向量来进行LOESS回归,以使其平滑并在局部(即,在训练值X s内)预测Y. 邻域的大小可以使用span参数来控制,范围在0到1之间。
它控制平滑的程度。
所以,值越大span,拟合曲线越平滑。
在没有解释变量的情况下,预测变量可以仅仅是从1到观察次数的指数。
如果有其他解释变量可用,也可以使用它们(最多4个)。
例子
对于这个例子,我们将尝试根据数据包中的数据集,对失业的中位数时间进行局部回归和平滑处理。
我们只考虑这个分析的前80行,因此在下面的图表中更容易观察平滑的程度。
economicsggplot2
data(economics,package="ggplot2")#loaddata
economics$index<-1:
nrow(economics)#createindexvariable
economics<-economics[1:
80,]#retail80rowsforbettergraphicalunderstanding
loessMod10<-loess(uempmed~index,data=economics,span=0.10)#10%smoothingspan
loessMod25<-loess(uempmed~index,data=economics,span=0.25)#25%smoothingspan
loessMod50<-loess(uempmed~index,data=economics,span=0.50)#50%smoothingspan
预测LOESS
#getsmoothedoutput
smoothed10<-predict(loessMod10)
smoothed25<-predict(loessMod25)
smoothed50<-predict(loessMod50)
从上图可以看出,随着跨度的增加,曲线的平滑度也随之增加。
#Plotitplot(economics$uempmed,x=economics$date,type="l",main="LoessSmoothingandPrediction",xlab="Date",ylab="Unemployment(Median)")lines(smoothed10,x=economics$date,col="red")lines(smoothed25,x=economics$date,col="green")lines(smoothed50,x=economics$date,col="blue")
寻找最佳的平滑范围
随着平滑span度的变化,拟合曲线的精度也会发生变化。
如果你的意图是最小化错误,那么optim()可以用它来找到span最小化平方误差和(SSE)的值。
对于这种情况,从图形上直观的看,较低的上证指数可能会在较低的价值下实现span,但对于更具挑战性的情况,optimizing跨度可能有所帮助。
为了实现optim(),我们定义了计算SSE的函数。
需要一个错误处理机制来解决span产生非数字的非常低的值和情况。
模拟退火方法(SANN)在这里实现,以找到span最小的SSE。
该par参数指定的第一个值span处optim()开始搜索。
#definefunctionthatreturnstheSSE
calcSSE<-function(x){
loessMod<-try(loess(uempmed~index,data=economics,span=x),silent=T)
res<-try(loessMod$residuals,silent=T)
if(class(res)!
="try-error"){
if((sum(res,na.rm=T)>0)){
sse<-sum(res^2)
}
}else{
sse<-99999
}
return(sse)
}#RunoptimtofindspanthatgivesminSSE,startingat0.5optim(par=c(0.5),calcSSE,method="SANN")#>$par#>[1]0.05433545#>#>$value#>[1]3.85753e-28#>#>$counts#>functiongradient#>10000NA#>#>$convergence#>[1]0#>#>$message#>NULL
对于这种情况,最好的span结果是0.05433SSE和最小的SSE 3.85e-28。
LOESS回归是用来平滑易变的时间序列的最常见的方法。
这是一种非参数方法,其中最小二乘回归在局部子集中执行,这使得它成为平滑任何数值向量的合适候选者。
介绍
局部回归的LOESS是一种非参数方法,适合多重回归。
如果你知道你的X变量被绑定在一个范围内,这可以是特别足智多谋的。
可以使用loess()数值向量来进行LOESS回归,以使其平滑并在局部(即,在训练值X s内)预测Y. 邻域的大小可以使用span参数来控制,范围在0到1之间。
它控制平滑的程度。
所以,值越大span,拟合曲线越平滑。
在没有解释变量的情况下,预测变量可以仅仅是从1到观察次数的指数。
如果有其他解释变量可用,也可以使用它们(最多4个)。
例子
对于这个例子,我们将尝试根据数据包中的数据集,对失业的中位数时间进行局部回归和平滑处理。
我们只考虑这个分析的前80行,因此在下面的图表中更容易观察平滑的程度。
economicsggplot2
data(economics,package="ggplot2")#loaddata
economics$index<-1:
nrow(economics)#createindexvariable
economics<-economics[1:
80,]#retail80rowsforbettergraphicalunderstanding
loessMod10<-loess(uempmed~index,data=economics,span=0.10)#10%smoothingspan
loessMod25<-loess(uempmed~index,data=economics,span=0.25)#25%smoothingspan
loessMod50<-loess(uempmed~index,data=economics,span=0.50)#50%smoothingspan
预测LOESS
#getsmoothedoutput
smoothed10<-predict(loessMod10)
smoothed25<-predict(loessMod25)
smoothed50<-predict(loessMod50)
从上图可以看出,随着跨度的增加,曲线的平滑度也随之增加。
代码为剧情
#Plotitplot(economics$uempmed,x=economics$date,type="l",main="LoessSmoothingandPrediction",xlab="Date",ylab="Unemployment(Median)")lines(smoothed10,x=economics$date,col="red")lines(smoothed25,x=economics$date,col="green")lines(smoothed50,x=economics$date,col="blue")
寻找最佳的平滑范围
随着平滑span度的变化,拟合曲线的精度也会发生变化。
如果你的意图是最小化错误,那么optim()可以用它来找到span最小化平方误差和(SSE)的值。
对于这种情况,从图形上直观的看,较低的上证指数可能会在较低的价值下实现span,但对于更具挑战性的情况,optimizing跨度可能有所帮助。
为了实现optim(),我们定义了计算SSE的函数。
需要一个错误处理机制来解决span产生非数字的非常低的值和情况。
模拟退火方法(SANN)在这里实现,以找到span最小的SSE。
该par参数指定的第一个值span处optim()开始搜索。
#definefunctionthatreturnstheSSE
calcSSE<-function(x){
loessMod<-try(loess(uempmed~index,data=economics,span=x),silent=T)
res<-try(loessMod$residuals,silent=T)
if(class(res)!
="try-error"){
if((sum(res,na.rm=T)>0)){
sse<-sum(res^2)
}
}else{
sse<-99999
}
return(sse)
}#RunoptimtofindspanthatgivesminSSE,startingat0.5optim(par=c(0.5),calcSSE,method="SANN")#>$par#>[1]0.05433545#>#>$value#>[1]3.85753e-28#>#>$counts#>functiongradient#>10000NA#>#>$convergence#>[1]0#>#>$message#>NULL
对于这种情况,最好的span结果是0.05433SSE和最小的SSE 3.85e-28。
LOESS回归是用来平滑易变的时间序列的最常见的方法。
这是一种非参数方法,其中最小二乘回归在局部子集中执行,这使得它成为平滑任何数值向量的合适候选者。
介绍
局部回归的LOESS是一种非参数方法,适合多重回归。
如果你知道你的X变量被绑定在一个范围内,这可以是特别足智多谋的。
可以使用loess()数值向量来进行LOESS回归,以使其平滑并在局部(即,在训练值X s内)预测Y. 邻域的大小可以使用span参数来控制,范围在0到1之间。
它控制平滑的程度。
所以,值越大span,拟合曲线越平滑。
在没有解释变量的情况下,预测变量可以仅仅是从1到观察次数的指数。
如果有其他解释变量可用,也可以使用它们(最多4个)。
例子
对于这个例子,我们将尝试根据数据包中的数据集,对失业的中位数时间进行局部回归和平滑处理。
我们只考虑这个分析的前80行,因此在下面的图表中更容易观察平滑的程度。
economicsggplot2
data(economics,package="ggplot2")#loaddata
economics$index<-1:
nrow(economics)#createindexvariable
eco