【原创】R语言报告论文(附代码数据) 有问题到淘宝找“大数据部落”就可以了
R语言局部多项式回归拟合LOESS回归案例分析报告
LOESS回归是用来拟合平滑易变的时间序列的最常见的方法。这是一种非参数方法,其中最小二乘回归在局部子集中执行。
介绍
局部回归的LOESS是一种非参数方法,适合多重回归。如果你知道你的X变量被绑定在一个范围内,这可以是特别足智多谋的。
可以使用loess()数值向量来进行LOESS回归,以使其平滑并在局部(即,在训练值X s内)预测Y. 邻域的大小可以使用span参数来控制,范围在0到1之间。它控制平滑的程度。所以,值越大span,拟合曲线越平滑。 在没有解释变量的情况下,预测变量可以仅仅是从1到观察次数的指数。如果有其他解释变量可用,也可以使用它们(最多4个)。
例子
对于这个例子,我们将尝试根据数据包中的数据集,对失业的中位数时间进行局部回归和平滑处理。我们只考虑这个分析的前80行,因此在下面的图表中更容易观察平滑的程度。economicsggplot2
data(economics, package=\) # load data economics$index <-1:nrow(economics) # create index variable economics <-economics[1:80, ] # retail 80rows for better graphical understanding loessMod10 <-loess(uempmed ~index, data=economics, span=0.10) # 10% smoothing span loessMod25 <-loess(uempmed ~index, data=economics, span=0.25) # 25% smoothing span loessMod50 <-loess(uempmed ~index, data=economics, span=0.50) # 50% smoothing span 预测LOESS
# get smoothed output smoothed10 <-predict(loessMod10) smoothed25 <-predict(loessMod25) smoothed50 <-predict(loessMod50)
从上图可以看出,随着跨度的增加,曲线的平滑度也随之增加。
# Plot itplot(economics$uempmed, x=economics$date, type=\, main=\, xlab=\, ylab=\)lines(smoothed10, x=economics$date, col=\)lines(smoothed25, x=economics$date, col=\)lines(smoothed50, x=economics$date, col=\) 寻找最佳的平滑范围
随着平滑span度的变化,拟合曲线的精度也会发生变化。如果你的意图是最小化错误,那么optim()可以用它来找到span最小化平方误差和(SSE)的值。对于这种情况,从图形上直观的看,较低的上证指数可能会在较低的价值下实现span,但对于更具挑战性的情况,optimizing跨度可能有所帮助。
为了实现optim(),我们定义了计算SSE的函数。需要一个错误处理机制来解决span产生非数字的非常低的值和情况。模拟退火方法(SANN)在这里实现,以找到span最小的SSE。该par参数指定的第一个值span处optim()开始搜索。
# define function that returns the SSE calcSSE <-function(x){ loessMod <-try(loess(uempmed ~index, data=economics, span=x), silent=T) res <-try(loessMod$residuals, silent=T) if(class(res)!=\){