在数学上,可以通过选择结点并使用(通常是三次)回归来估计结之间的点,并使用演算来确保每条单独的回归线连接在一起时曲线都平滑,从而重现该过程。
平滑的程度由参数控制,通常在0和1之间的范围内。
可下载资源
为了说明,我们考虑由来自1910至2004年的小麦产量数据集 。
生成数据图,并叠加样条曲线平滑度。
> plot(wheat$year,wheat$production)
> lines(smooth.spline(wheat$year,wheat$production))
结果如下:
应用的平滑量 由参数 spar 控制 。我们检查效果:
sapply(spars,plotfn)
该图显示如下:
自适应平滑算法
尽管大多数平滑器需要指定带宽,数据部分或平滑级别,但超级平滑的不同之处在于它可以自行解决这些问题。因此,它是需要平滑处理而无需任何用户干预的情况的绝佳选择。Supersmoother通过执行许多简单的局部回归平滑来工作,并且在每个x值处,它使用这些平滑来确定要使用的最佳y值。在R中,可通过 supsmu 函数获得 超级平滑器。
为了说明这一点,考虑汽车数据。以下几行产生了 重量 与 MPG的关系图,并叠加了一条超平滑线。
该图显示如下:
带有面板的平滑算法
在使用点阵图形时,我们已经看到了 panel.lmline 的使用 ,它在点阵图的每个面板中显示最佳回归线。可以使用类似的函数 panel.loess 在图的每个面板中叠加局部加权回归平滑器。作为简单说明,考虑内置的 Orange 数据集,其中包含有关几棵橙树的年龄和周长的信息。首先,让我们看一幅具有最佳回归线平滑度的图,该图叠加在 每 棵树的年龄 与 周长图上 :
要创建相同的图,但要使用 panel.loess 函数,可以使用以下代码:
> xyplot(circumference~age|Tree,
+ ...)})
如果 您想让它更平滑,可以使用 panel.lines 函数直接绘制它:
> xyplot(circumference~age|Tree,
+ ,...)})
可下载资源
关于作者
Kaizong Ye是拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。
本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。
非常感谢您阅读本文,如需帮助请联系我们!