如何制作分段常数公式项?

时间:2015-07-28 14:51:20

标签: r splines

我可以像这样生成分段线性样条的模型矩阵:

>     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中构建这些,最好是可以用作模型公式术语的方法?我确信我可以破解某些东西,但我喜欢惯用的方式,如果它存在的话。

1 个答案:

答案 0 :(得分:0)

您可以使用cut

> data.frame(x,cut_x=cut(x, breaks=k,include.lowest=T))
  x cut_x
1 0 [0,2]
2 1 [0,2]
3 2 [0,2]
4 3 (2,4]
5 4 (2,4]
6 5 (4,6]
7 6 (4,6]