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()
生产立方体自然样条。是否还有其他功能可用于生成二次自然样条等等?
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
只允许您构造三次样条。
请注意,bs
和ns
希望您仅通过参数knots
提供内部结。