Пакет 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
аргумент, чтобы использовать эту функцию в будущем без необходимости реализации цикла.