Пакет Quantreg: Forex.RQ принимает только один тау

Я использую quantreg пакет для расчета квантильных регрессий. Я подгоняю регрессии для ряда случаев и хотел бы рассчитать прогнозные значения и 95% доверительные интервалы. Проблема в том, что функция predict.qr кажется, не учитывает более одного квантиля, если вы добавляете пределы доверия. До сих пор я решил проблему с помощью циклов, но это делает мой код ужасно длинным. Минимальный пример:

1) один квантиль (0.5) работает нормально

# prediction data set
pred.df <- data.frame(disp = 150:160) 

fit <- rq(mpg ~ disp, data = mtcars, tau = 0.5)

predict.rq(fit, 
           newdata = pred.df, 
           interval = "confidence")

2) более одного квантиля и только прогнозируемые значения (без ci) также работают нормально

fit <- rq(mpg ~ disp, data = mtcars, tau = c(0.5, 0.6))
predict.rq(fit, 
           newdata = pred.df)

3) когда более одного квантиля (0.5, 0.75) и ci, он больше не работает

fit <- rq(mpg ~ disp, data = mtcars, tau = c(0.5, 0.6))

predict.rq(fit, 
           newdata = pred.df, 
           interval = "confidence")

Поэтому мой вопрос: возможно ли получить прогнозируемые значения и доверительные интервалы для более чем одной квантильной регрессии, используя только Предикат.rq и избегая циклов?

1 ответ

Вы можете использовать lapply(), который является циклом, но это быстро реализовать:

lapply(c(0.5, 0.6), function(tau) {

fit <- rq(mpg ~ disp, data = mtcars, tau = tau)

predict.rq(fit, 
           newdata = pred.df, 
           interval = "confidence")
})

Кроме того, вы можете создать функцию-обертку для вашего кода, а затем использовать Vectorize() иметь векторизованную версию такой функции относительно tau аргумент, чтобы использовать эту функцию в будущем без необходимости реализации цикла.

Другие вопросы по тегам