我可以为这样的分段线性样条生成模型矩阵:
> k=seq(0,8,by=2)
> x=seq(0,6,by=1)
> bs(x, degree=1, knots=k, Boundary.knots=c(min(k),max(k)))
1 2 3 4 5 6
[1,] 1.0 0.0 0.0 0.0 0 0
[2,] 0.5 0.5 0.0 0.0 0 0
[3,] 0.0 1.0 0.0 0.0 0 0
[4,] 0.0 0.5 0.5 0.0 0 0
[5,] 0.0 0.0 1.0 0.0 0 0
[6,] 0.0 0.0 0.5 0.5 0 0
[7,] 0.0 0.0 0.0 1.0 0 0
但 0 度样条(即阶跃函数)是不允许的:
> bs(x, degree=0, knots=k, Boundary.knots=c(min(k),max(k)))
Error in bs(x, degree = 0, knots = k, Boundary.knots = c(min(k), max(k)):
'degree' must be integer >= 1
是否有一种正统的方法可以在 R 中构建这些,最好是可以用作模型公式术语的方法?我敢肯定我可以破解一些东西,但我想要惯用的方式,如果它存在的话。