Возможно ли найти интервал прогнозирования с помощью квантильной регрессии?

#r #regression #quantile #quantreg

#r #регрессия #квантиль #quantreg

Вопрос:

При попытке запустить приведенный ниже код predict выдает ошибку, в которой говорится, что интервал arg должен быть none или confidence, и поэтому мне интересно, есть ли способ получить интервал прогнозирования с помощью квантильной регрессии?

Примечание: если я заменю rq на lm, я смогу найти интервал прогнозирования, но я хочу найти его с помощью rq.

 #mycode:
    library(quantreg)
    mydata <- read.csv("C:\Users\gokul\Desktop\Book4.csv")
    
    attach(mydata)
    summary(mydata)
    
    mod = rq(y~q) # y is my dependent and q is my independent variables
    summary(mod)
    
    predict(mod, data.frame(q), interval = "prediction",level = 0.10)
  

Фрагмент CSV-файла:

 dput(head(mydata,10))
structure(list(y = c(71143L, 68061L, 66603L, 66907L, 69073L, 
                     72901L, 77521L, 81728L, 84842L, 87877L), q = c(71416.79329, 68003.59226, 
                                                                    66533.66142, 66620.44529, 68640.60953, 72945.13676, 77743.82153, 
                                                                    81604.52442, 84887.47483, 87904.33486)), row.names = c(NA, 10L
                                                                    ), class = "data.frame")
  

Комментарии:

1. Прочитайте руководство: rdocumentation.org/packages/quantreg/versions/5.67/topics/… Правильное значение для interval аргумента равно "confidence" , не "prediction" .

2. @Jean-ClaudeArbaut да, я знаю, но я хочу иметь возможность найти его для квантильной регрессии. Я хочу, чтобы метод находил интервал прогнозирования в квантильной регрессии, а не в линейной модели

3. Прочитайте еще раз…..

Ответ №1:

Конечно, просто используйте функции квантилей 0.05 и 0.95. Это даст вам 90%-ные пределы прогнозирования. Измените 0,05 и 0,95 на 0,025 и 0,975, если вы хотите ограничить 95%. Вот некоторый R-код.

 n = 1000
beta0 = 2.1; beta1 = 0.7
set.seed(12345)
X = runif(n, 10, 20)
Y = beta0   beta1*X   .4*X*rnorm(n)

library(quantreg)
fit.05 = rq(Y ~ X, tau = .05)
fit.95 = rq(Y ~ X, tau = .95)

Lower = fit.05$fitted.values
Upper = fit.95$fitted.values

plot(X,Y, main = "Scatterplot with 90% Prediction Limits")
points(X,Lower, pch=".", col="red")
points(X,Upper, pch=".", col="red")
  

Вот результат:

Диаграмма рассеяния с 90%-ными ограничениями

Комментарии:

1. Возможно ли получить значения нижней и верхней границ для q (мое прогнозируемое значение) вместо графика. Я использую y ~ q, и мне нужно иметь возможность получать верхнюю и нижнюю границы для q. Я рассматриваю y (фактический) как зависимый, а q (прогнозируемый) — как независимые переменные.

2. Да, значения данных в «Нижнем» и «Верхнем» объектах в моем коде именно такие. Само прогнозируемое значение не имеет значения, но я предполагаю, что вы будете использовать квантиль .50.