2

我正在使用一个自然三次样条对某些数据运行分位数回归模型,该模型需要单调递减(因为它不能在任何点物理增加)。首先,我使用包中的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)
4

1 回答 1

1

您问题的第一部分:可以使用 Splines 包中的 splineDesign 和 quantreg(rq 函数的选项 method="fnc" )来实现具有平滑样条和单调性限制的分位数回归。R 代码可从开放存档http://qed.econ.queensu.ca/jae/datasets/haupt002/中https://doi.org/10.1002/jae.2347的补充获得

您问题的第二部分:实现的模型是可加的,允许添加更多样条、参数或半参数组件。

于 2020-04-29T08:30:48.600 回答