0

我正在尝试使用R 中的 spline2 包来构建单调样条曲线。

我在评估模型以获取自变量的新值时遇到了麻烦。一般来说,我很难掌握 R 对“预测”的处理及其与 spline2 的关系,以及如何使用生成的 bs 对象。

我尝试按照使用 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 样条的“单调”性质?

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

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

1 回答 1

5

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

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

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

Ramsay, JO (1988) 单调回归样条在行动中。统计科学3(4),425-461。

于 2017-09-25T21:02:56.603 回答