r语言 - 如何得到分段常数公式项



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

>     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中是否有一种正统的方法来构造这些,最好是可以用作模型公式项的方法?我相信我可以破解一些东西,但我想要习惯的方式,如果它存在的话。

您可以使用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]

相关内容

  • 没有找到相关文章

最新更新