欢迎光临散文网 会员登陆 & 注册

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

2021-03-04 10:56 作者:拓端tecdat  | 我要投稿

原文链接:http://tecdat.cn/?p=9670

 

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

三次样条

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

 

  1. require(splines)

  2. #ISLR包含数据集

  3. require(ISLR)

  4. attach(Wage) #绑定工资数据集

  5. agelims<-range(age)

  6. #生成测试数据

  7. age.grid<-seq(from=agelims[1], to = agelims[2])

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

  1. #在年龄 25 ,50 ,60设置3个分割点

  2. fit<-lm(wage ~ bs(age,knots = c(25,40,60)),data = Wage )

  3. summary(fit)

  4. ##

  5. ## Call:

  6. ## lm(formula = wage ~ bs(age, knots = c(25, 40, 60)), data = Wage)

  7. ##

  8. ## Residuals:

  9. ##     Min      1Q  Median      3Q     Max

  10. ## -98.832 -24.537  -5.049  15.209 203.207

  11. ##

  12. ## Coefficients:

  13. ##                                 Estimate Std. Error t value Pr(>|t|)

  14. ## (Intercept)                       60.494      9.460   6.394 1.86e-10 ***

  15. ## bs(age, knots = c(25, 40, 60))1    3.980     12.538   0.317 0.750899

  16. ## bs(age, knots = c(25, 40, 60))2   44.631      9.626   4.636 3.70e-06 ***

  17. ## bs(age, knots = c(25, 40, 60))3   62.839     10.755   5.843 5.69e-09 ***

  18. ## bs(age, knots = c(25, 40, 60))4   55.991     10.706   5.230 1.81e-07 ***

  19. ## bs(age, knots = c(25, 40, 60))5   50.688     14.402   3.520 0.000439 ***

  20. ## bs(age, knots = c(25, 40, 60))6   16.606     19.126   0.868 0.385338

  21. ## ---

  22. ## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

  23. ##

  24. ## Residual standard error: 39.92 on 2993 degrees of freedom

  25. ## Multiple R-squared:  0.08642,    Adjusted R-squared:  0.08459

  26. ## F-statistic: 47.19 on 6 and 2993 DF,  p-value: < 2.2e-16

 绘制回归线

 

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

光滑样条线

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

 

 

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

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

  1. fit2

  2. ## Call:

  3. ## smooth.spline(x = age, y = wage, cv = TRUE)

  4. ##

  5. ## Smoothing Parameter  spar= 0.6988943  lambda= 0.02792303 (12 iterations)

  6. ## Equivalent Degrees of Freedom (Df): 6.794596

  7. ## Penalized Criterion: 75215.9

  8. ## PRESS: 1593.383

结果选择了lambda=0.0279和df = 6.794596 

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

结论

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

最受欢迎的见解

1.R语言多元Logistic逻辑回归 应用案例

2.面板平滑转移回归(PSTR)分析案例实现

3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)

4.R语言泊松Poisson回归模型分析案例

5.R语言回归中的Hosmer-Lemeshow拟合优度检验

6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

7.在R语言中实现Logistic逻辑回归

8.python用线性回归预测股票价格

9.R语言如何在生存分析与Cox回归中计算IDI,NRI指标


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

分享到微博请遵守国家法律