Квантильная регрессия R монотонный куб c сплайн - PullRequest
1 голос
/ 01 апреля 2020

Я использую модель квантильной регрессии для некоторых данных с одним естественным кубическим сплайном c, который должен быть монотонно убывающим (поскольку он не может физически увеличиваться ни в одной точке). Для начала я использовал функцию ns() из пакета splines для достижения этой цели, но быстро обнаружил, что это не сработает (что неудивительно). Итак, я нашел функцию mSpline из пакета splines2, которая должна соответствовать монотонным c сплайнам, но она также не работает. Ниже приведен пример двух функций и их сбой на 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)

1 Ответ

1 голос
/ 29 апреля 2020

Первая часть вашего вопроса: Квантильная регрессия со сглаживающими сплайнами и ограничениями монотонности может быть реализована с помощью splineDesign из пакета Splines вместе с quantreg (option method = "fn c" для функции rq). Код R доступен в приложении к https://doi.org/10.1002/jae.2347 в открытом архиве http://qed.econ.queensu.ca/jae/datasets/haupt002/

Вторая часть вашего вопроса: реализованная модель является аддитивной и позволяет добавить дополнительные сплайны, параметры c или полупараметры c компоненты.

...