如何在R中的ns()中指定度数参数,用于构造5度的自然样条?

问题描述 投票:1回答:1
 library(ISLR) 
 fit=lm(wage~bs(age ,knots =c(25 ,40 ,60),degree = 5,),data=Wage)
 fit=lm(wage~ns(age ,knots =c(25 ,40 ,60),degree = 5,),data=Wage)

我能够建立5次多项式的回归样条,但是我如何构建5次自然样条,因为ns()函数缺少度数参数。

我只能使用ns()生产立方体自然样条。是否还有其他功能可用于生成二次自然样条等等?

r regression spline
1个回答
1
投票

ns明确地构造了一个自然的三次样条。您无法自定义多项式度数。要了解原因,您需要一些关于样条线的基本知识。


一般情况下,d度的样条与k结(包括k - 2内部结和2边界结,有

  • (d + 1)(k - 1)分段多项式系数
  • d(k - 2)这些系数的连续性约束

因此将有(d + 1)(k - 1) - d(k - 2) = k + d - 1无约束系数。这意味着

  • 对于d = 1的线性样条,k结给出正确的k自由系数;
  • 对于d = 2的二次样条,k结给出正确的k + 1自由系数;
  • 对于d = 3的三次样条,k结给出了正确的k + 2自由系数。

这些是标准样条线,您可以从构造函数bs获得。


“自然”意味着额外的边界条件,因此k结给出k自由系数。显然,线性样条很容易“自然”;二次样条需要一个约束;三次样条需要两个以上的约束。

设置三次样条的自然条件是有意义的:2个边界节点的每一个的二阶导数为0.但是,对于其他样条曲线,您需要什么条件并不明显。因此,ns只允许您构造三次样条。


请注意,bsns希望您仅通过参数knots提供内部结。

© www.soinside.com 2019 - 2024. All rights reserved.