R中的单调样条

Monotone spline in R

我正在尝试在 R 中使用 the spline2 package 来构建单调样条。

我在评估模型的自变量新值时遇到问题。总的来说,我很难掌握 "predict" 的 R 处理及其与 spline2 的关系,以及如何使用生成的 bs 对象。

我试着按照 this example 使用 spline1。我的数据位于名为 BRIyII 的数据框中,具有自变量 t 和因变量 P,因此:

plot(BRIyII$t,BRIyII$P)

产量:

所以我这样做:

knots=c(9)
myMat=mSpline(BRIyII$t, knots = knots, degree = 3, intercept = TRUE)
mylm=lm(BRIyII$P~myMat)

现在,如果我们:

pr = predict(mylm,data.frame(BRIyII$t))
points(BRIyII$t,pr,col = "red")

它产生:

所以我的问题是:

1- 由于最右侧的预测值(红点)低于左侧的预测值,我是否误解了 m 样条曲线的 "monotonic" 性质?

2- 我如何评估 BRIyII$t 中定义的值以外的样条曲线?我尝试了几种组合,但我缺乏 R 语法知识。理想情况下,我想做类似的事情:

newdata=seq.int(0,41.5,0.1) 

我将解决问题 #1,因为问题 #2 已在评论中解决。

splines2 文档将 M-spline 基称为 "monotone regression spline" 基,但我认为这是一种误导。估计单调回归样条的方法是使用 I 样条基, 限制回归系数为非负 。 I 样条是 M 样条的积分,因此是非递减的。所以它们的任何非负线性组合也将是非递减的。因此,您可以使用 splines2::iSpline 和非负回归方法(如 nnls::nnls)来估计单调回归函数。

有关 M 样条、I 样条和单调回归的解释,请查看:

Ramsay, JO (1988) Monotone regression splines in action. Statistical Science 3(4), 425-461.