2017-01-14 19 views
0

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

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) больше, чем один квантиль и только предсказанные значения (не ХИ) также не работает нормально

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") 

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

 Смежные вопросы

  • Нет связанных вопросов^_^