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.
我正在尝试在 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.