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阶多项式的回归样条,但是由于ns()
函数缺少程度自变量,我如何建立5阶的自然样条。
我只能使用ns()
生成三次自然样条。
还有其他函数可以用来产生二次自然样条等吗?
答案 0 :(得分: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
个自由系数。显然,线性样条很容易“自然”。二次样条还需要一个约束;三次样条曲线还需要两个约束。
设置三次样条的自然条件很有意义:两个边界结的每一个的二阶导数均为0。但是,对于其他程度的样条,您需要什么条件并不明显。因此,ns
仅允许您构造三次样条。
请注意,bs
和ns
希望您仅通过参数knots
提供内部结。