最新R语言局部多项式回归拟合LOESS回归案例分析报告 附代码数据Word文件下载.docx
《最新R语言局部多项式回归拟合LOESS回归案例分析报告 附代码数据Word文件下载.docx》由会员分享,可在线阅读,更多相关《最新R语言局部多项式回归拟合LOESS回归案例分析报告 附代码数据Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
![最新R语言局部多项式回归拟合LOESS回归案例分析报告 附代码数据Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-10/24/c0dbb03a-3259-4321-bdc4-c6598f405fae/c0dbb03a-3259-4321-bdc4-c6598f405fae1.gif)
它控制平滑的程度。
所以,值越大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{
-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回归是用来平滑易变的时间序列的最常见的方法。
这是一种非参数方法,其中最小二乘回归在局部子集中执行,这使得它成为平滑任何数值向量的合适候选者。
代码为剧情
#Plotitplot(economics$uempmed,x=economics$date,type="
eco