Как создать интервал прогнозирования в R


Модель линейной регрессии может быть полезна для двух вещей:

(1) Количественная оценка взаимосвязи между одной или несколькими переменными-предикторами и переменной отклика.

(2) Использование модели для прогнозирования будущих значений.

Что касается (2) , когда мы используем регрессионную модель для прогнозирования будущих значений, мы часто заинтересованы в прогнозировании как точного значения , так и интервала , который содержит диапазон вероятных значений. Этот интервал известен как интервал предсказания .

Например, предположим, что мы подгоняем простую модель линейной регрессии, используя часы обучения в качестве переменной-предиктора и баллы за экзамены в качестве переменной-ответа. Используя эту модель, мы можем предсказать, что студент, который занимается 6 часов, получит на экзамене 91 балл.

Однако из-за неопределенности этого прогноза мы можем создать интервал прогнозирования, который говорит о 95% вероятности того, что студент, который занимается 6 часов, получит экзаменационный балл от 85 до 97.Этот диапазон значений известен как интервал прогнозирования 95%, и часто он более полезен для нас, чем просто знание точного прогнозируемого значения.

Как создать интервал прогнозирования в R

Чтобы проиллюстрировать, как создать интервал прогнозирования в R, мы будем использовать встроенный набор данных mtcars , который содержит информацию о характеристиках нескольких разных автомобилей:

#view first six rows of *mtcars*
head(mtcars)

# mpg cyl disp hp drat wt qsec vs am gear carb
#Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
#Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
#Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
#Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
#Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
#Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

Во-первых, мы подгоним простую модель линейной регрессии, используя disp в качестве переменной-предиктора и mpg в качестве переменной отклика.

#fit simple linear regression model
model <- lm(mpg ~ disp, data = mtcars)

#view summary of fitted model
summary(model)

#Call:
#lm(formula = mpg ~ disp, data = mtcars)
#
#Residuals:
# Min 1Q Median 3Q Max 
#-4.8922 -2.2022 -0.9631 1.6272 7.2305 
#
#Coefficients:
# Estimate Std. Error t value Pr(>|t|) 
#(Intercept) 29.599855 1.229720 24.070 < 2e-16 \*\*\*
#disp -0.041215 0.004712 -8.747 9.38e-10 \*\*\*
#---
#Signif. codes: 0 '\*\*\*' 0.001 '\*\*' 0.01 '\*' 0.05 '.' 0.1 ' ' 1
#
#Residual standard error: 3.251 on 30 degrees of freedom
#Multiple R-squared: 0.7183, Adjusted R-squared: 0.709 
#F-statistic: 76.51 on 1 and 30 DF, p-value: 9.38e-10

Затем мы воспользуемся подобранной регрессионной моделью, чтобы предсказать значение mpg на основе трех новых значений disp .

#create data frame with three new values for *disp*new_disp <- data.frame(disp= c(150, 200, 250))

#use the fitted model to predict the value for *mpg* based on the three new values
#for *disp*predict(model, newdata = new_disp)

# 1 2 3 
#23.41759 21.35683 19.29607

Способ интерпретации этих значений следующий:

  • Для новой машины с расходом 150 мы прогнозируем, что она будет иметь расход 23,41759 миль на галлон.
  • Для новой машины с расходом 200 мы прогнозируем, что она будет иметь расход 21,35683 миль на галлон.
  • Для новой машины с расходом 250 мы прогнозируем, что она будет иметь расход 19,29607 миль на галлон.

Затем мы будем использовать подобранную модель регрессии, чтобы сделать интервалы прогнозирования вокруг этих прогнозируемых значений:

#create prediction intervals around the predicted values
predict(model, newdata = new_disp, interval = " predict ")

# fit lwr upr
#1 23.41759 16.62968 30.20549
#2 21.35683 14.60704 28.10662
#3 19.29607 12.55021 26.04194

Способ интерпретации этих значений следующий:

  • 95-процентный интервал прогнозирования расхода на галлон для автомобиля с расходом 150 составляет от 16,62968 до 30,20549 .
  • 95-процентный интервал прогнозирования расхода на галлон для автомобиля с расходом 200 составляет от 14,60704 до 28,10662 .
  • 95-процентный интервал прогнозирования расхода миль на галлон для автомобиля с расходом 250 находится между 12,55021 и 26,04194 .

По умолчанию R использует интервал предсказания 95%. Однако мы можем изменить это на что угодно, используя команду level.Например, следующий код иллюстрирует, как создать интервалы предсказания 99 %:

#create 99% prediction intervals around the predicted values
predict(model, newdata = new_disp, interval = " predict", level = 0.99 )

# fit lwr upr
#1 23.41759 14.27742 32.55775
#2 21.35683 12.26799 30.44567
#3 19.29607 10.21252 28.37963

Обратите внимание, что интервалы предсказания 99% шире, чем интервалы предсказания 95%. Это имеет смысл, потому что чем шире интервал, тем выше вероятность того, что он будет содержать предсказанное значение.

Как визуализировать интервал прогнозирования в R

В следующем коде показано, как создать диаграмму со следующими функциями:

  • Диаграмма рассеяния точек данных для расхода и миль на галлон
  • Синяя линия для подобранной линии регрессии
  • Серые полосы уверенности
  • Красные полосы предсказания
#define dataset
data <- mtcars[ , c("mpg", "disp")]

#create simple linear regression model
model <- lm(mpg ~ disp, data = mtcars)

#use model to create prediction intervals
predictions <- predict(model, interval = " predict ")

#create dataset that contains original data along with prediction intervals
all_data <- cbind(data, predictions)

#load *ggplot2* library
library(ggplot2)

#create plot
ggplot(all_data, aes(x = disp, y = mpg)) + #define x and y axis variables
 geom_point() + #add scatterplot points
 stat_smooth(method = lm) + #confidence bands
 geom_line(aes(y = lwr), col = "coral2", linetype = "dashed") + #lwr pred interval
 geom_line(aes(y = upr), col = "coral2", linetype = "dashed") #upr pred interval 
Интервал предсказания в R

Когда использовать доверительный интервал против интервала прогнозирования

Интервал прогнозирования фиксирует неопределенность вокруг одного значения. Доверительный интервал отражает неопределенность средних прогнозируемых значений. Таким образом, интервал прогнозирования всегда будет шире доверительного интервала для одного и того же значения.

Вы должны использовать интервал прогнозирования, когда вас интересуют конкретные индивидуальные прогнозы, потому что доверительный интервал будет давать слишком узкий диапазон значений, что приведет к большей вероятности того, что интервал не будет содержать истинное значение.

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.