基于R统计软件的三次样条和光滑样条模型数据拟合及预测

样条线是拟合非线性模型并从数据中学习非线性相互作用的一种方法。 

由Kaizong Ye,Coin Ge撰写

 三次样条 具有连续的一阶和二阶导数。 我们通过应用基础函数来变换变量  并使用这些变换后的变量拟合模型, 向模型添加非线性, 使样条曲线能够拟合更光滑 。

在实际应用中,我们经常会遇到需要拟合的数据点并非简单的线性关系,这时就需要向模型中添加非线性因素以增强其表达能力。为了实现这一目标,我们可以通过应用一系列的基础函数(也称为基函数)来变换原始变量。这些基函数通常是根据数据点的位置和分布精心选择的,以便更好地捕捉数据的非线性特征。

我们加载工资数据集,使用年龄预测工资

×

在实际应用中,我们常常对总体进行某种分布的假设,抽样得到样本信息,去估计总体参数,这种方法称为参数估计方法。但当对总体信息一无所知,或不假定总体分布形式,只通过样本信息对总体参数进行估计,此时,非参数估计就展现了很强的灵活性。

非参数回归分为局部回归、光滑样条回归、正交回归。光滑样条回归,因其在抽取样本对总体进行回归时,不必依赖总体分布形式,在减小误差、提高预测精确度、提高拟合曲线的光滑度上都体现了良好的特性。

非参数回归模型的一般形式及模型

设Y为因变量  X1,X2,,Xp  为自变量,非参数回归模型的一般形式为

Y=η(X1,X2,,Xp)+ε Y

其中对p元回归函数只作一些连续性或光滑性的要求。由于非参数回归模型不假定回归函的具体形式而增加了模型的灵活性和适应性。

设  (yi,xi) #为来自总体  (Y,X) 的一个样本容量为n的独立同分布的样本,需要基于观测值  (yi,xi) #估计  η(x) 并进行有关的统计推断。

非参数回归的模型为:

E(Y|X=x)=g(X)

数据和模型是统计分析的两个信息来源,数据带有“噪声”,但无偏,而模型实际上是种约束,有助于降低噪声,是响应的。在“偏差–方差”的平衡表上,代表两个极值的分别是标准参数模型和无约束非参数模型。在两个极值之间,存在着大量的非参数或半参数模型,其中大多数被称为平滑方法。非参数估计族可通过惩罚似然法导出各种随机环境下的模型 。



require(splines)
#ISLR包含数据集
require(ISLR)
attach(Wage) #绑定工资数据集
agelims<-range(age)
#生成测试数据
age.grid<-seq(from=agelims[1], to = agelims[2])

三次样条 

 R中使用函数拟合三次样条。

#在年龄 25 ,50 ,60设置3个分割点 
fit<-lm(wage ~ bs(age,knots = c(25,40,60)),data = Wage )
summary(fit)
## 
## Call:
## lm(formula = wage ~ bs(age, knots = c(25, 40, 60)), data = Wage)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -98.832 -24.537  -5.049  15.209 203.207 
## 
## Coefficients:
##                                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                       60.494      9.460   6.394 1.86e-10 ***
## bs(age, knots = c(25, 40, 60))1    3.980     12.538   0.317 0.750899    
## bs(age, knots = c(25, 40, 60))2   44.631      9.626   4.636 3.70e-06 ***
## bs(age, knots = c(25, 40, 60))3   62.839     10.755   5.843 5.69e-09 ***
## bs(age, knots = c(25, 40, 60))4   55.991     10.706   5.230 1.81e-07 ***
## bs(age, knots = c(25, 40, 60))5   50.688     14.402   3.520 0.000439 ***
## bs(age, knots = c(25, 40, 60))6   16.606     19.126   0.868 0.385338    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 39.92 on 2993 degrees of freedom
## Multiple R-squared:  0.08642,    Adjusted R-squared:  0.08459 
## F-statistic: 47.19 on 6 and 2993 DF,  p-value: < 2.2e-16


视频

非线性模型原理与R语言多项式回归、局部平滑样条、 广义相加模型GAM分析

探索见解

去bilibili观看

探索更多视频

绘制回归线

上图显示了三次样条曲线的光滑和局部效果。

光滑样条线

 我们在光滑样条曲线中的目的是通过添加粗糙度最小化误差函数 。


R语言里的非线性模型:多项式回归、局部样条、平滑样条、广义加性模型分析

阅读文章


现在我们可以注意到,红线(即“光滑样条线”)更加波动,并且更灵活地拟合数据。这可能是由于高度的自由度所致。选择参数 λ 和DF最好的办法 是交叉验证。 

实施交叉验证以选择λ值并绘制光滑样条线:

fit2
## Call:
## smooth.spline(x = age, y = wage, cv = TRUE)
## 
## Smoothing Parameter  spar= 0.6988943  lambda= 0.02792303 (12 iterations)
## Equivalent Degrees of Freedom (Df): 6.794596
## Penalized Criterion: 75215.9
## PRESS: 1593.383

该模型也非常光滑,可以很好地拟合数据。

结论

因此, 我们需要对数据或变量进行一些转换,以使模型在学习输入X i和输出  Y之间的非线性相互作用时更灵活,更强大。 


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498