R语言自适应平滑样条回归分析
原文链接:http://tecdat.cn/?p=14854
一种类型的平滑称为样条平滑。柔性金属(通常是铅),可以用作绘制平滑曲线的参考。将选择一组点(称为结),然后将样条线压在特定的x,y点,然后弯曲以通过下一个点,依此类推。由于金属的柔韧性,此过程将生成通过这些点的平滑曲线。
在数学上,可以通过选择结点并使用(通常是三次)回归来估计结之间的点,并使用演算来确保每条单独的回归线连接在一起时曲线都平滑,从而重现该过程。平滑的程度由参数控制,通常在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,
+ ,...)})
参考文献
2.R语言线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)
5.在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析
6.使用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM
7.R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化
- Membership三步曲之入门篇 - Membership基础示例
- Java-String.intern的深入研究
- 从Membership 到 .NET4.5 之 ASP.NET Identity
- Membership三步曲之进阶篇 - 深入剖析Provider Model
- java finally深入探究
- 背后的故事之 - 快乐的Lambda表达式(一)
- 背后的故事之 - 快乐的Lambda表达式(二)
- JVM GC杂谈之理论入门
- 线程池定制初探
- 由浅入深表达式树(二)遍历表达式树
- 由浅入深表达式树(一)创建表达式树
- 重读算法导论之算法基础
- 算法之数组和问题
- 由浅入深表达式树(完结篇)重磅打造 Linq To 博客园
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android开发之如何自定义数字键盘详解
- 在Android上实现HttpServer的示例代码
- Linux /etc/network/interfaces配置接口方法
- Android中Service和Activity相互通信示例代码
- Android编程实现定时发短信功能示例
- Android实现新浪微博一键分享的实例代码
- Android实现常见的验证码输入框实例代码
- Android实现加载状态视图切换效果
- Retrofit + OkHttp缓存处理的示例代码
- Android图片实现压缩处理的实例代码
- Windows10安装linux子系统的两种方式(图文详解)
- Android 图片处理避免出现oom的方法详解
- session登陆成功第四篇4
- Android编程使用pull方式解析xml格式文件的方法详解
- Android中ActionBar和ToolBar添加返回箭头的实例代码