#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")
Вот результат:
Комментарии:
1. Возможно ли получить значения нижней и верхней границ для q (мое прогнозируемое значение) вместо графика. Я использую y ~ q, и мне нужно иметь возможность получать верхнюю и нижнюю границы для q. Я рассматриваю y (фактический) как зависимый, а q (прогнозируемый) — как независимые переменные.
2. Да, значения данных в «Нижнем» и «Верхнем» объектах в моем коде именно такие. Само прогнозируемое значение не имеет значения, но я предполагаю, что вы будете использовать квантиль .50.