我正在使用一个自然三次样条对某些数据运行分位数回归模型,该模型需要单调递减(因为它不能在任何点物理增加)。首先,我使用包中的ns()
函数splines
来实现这一点,但很快发现它不会这样做(不足为奇)。所以我mSpline
从包splines2
中找到了应该适合单调样条的函数,但它也不起作用。下面是这两个函数的示例以及它们如何在mtcars
.
如何通过我的方法或其他方法实现获得单调递减样条曲线的目标?
如果可以将其他变量添加到模型中,则可以加分,这些变量不是样条曲线。
library(quantreg)
mod=rq(mpg~ns(hp,df=3),data=mtcars,tau=0.99)
mod=rq(mpg~mSpline(hp,df=3),data=mtcars,tau=0.99) #monotone
preds=predict(mod)
plot(mtcars$mpg~mtcars$hp)
points(preds~mtcars$hp,col=2,cex=1,pch=16)