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
显式构造自然三次样条曲线。不能自定义多项式次数。要理解原因,您需要一些关于样条曲线的基本知识。
通常对于具有k
节点的d
次样条曲线(包括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
提供内部结。