Пакет quantreg: predict.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 и избегая циклов?


person ehi    schedule 14.01.2017    source источник


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

person Davide Passaretti    schedule 14.01.2017