Как создать интервал прогнозирования в 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 в качестве предикторной переменной и миль на галлон в качестве переменной отклика.
#fit simple linear regression model model <- lm(mpg ~ disp, data = mtcars) #view summary of fitted model summary(model) #Call: #lm(formula = mpg ~ availability, 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 *** #--- #Significant. 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
Далее мы будем использовать подобранную регрессионную модель, чтобы спрогнозировать значение миль на галлон на основе трех новых значений disp .
#create data frame with three new values for avail 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 avail predict(model, newdata = new_disp) #1 2 3 #23.41759 21.35683 19.29607
Способ интерпретации этих значений следующий:
- Мы ожидаем, что для нового автомобиля с EPA 150 расход топлива составит 23,41759 миль на галлон.
- Мы ожидаем, что для нового автомобиля с EPA 200 расход топлива составит 21,35683 миль на галлон.
- Мы ожидаем, что для нового автомобиля с EPA 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% миль на галлон для автомобиля с EPA 150 находится между 16,62968 и 30,20549 .
- Интервал прогнозирования 95% миль на галлон для автомобиля с EPA 200 находится между 14,60704 и 28,10662 .
- Интервал прогнозирования 95% миль на галлон для автомобиля с EPA 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) #createplot 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
Когда использовать доверительный интервал вместо интервала прогнозирования
Интервал прогнозирования отражает неопределенность вокруг одного значения. Доверительный интервал отражает неопределенность вокруг прогнозируемых средних значений. Таким образом, интервал прогнозирования всегда будет шире доверительного интервала для того же значения.
Вам следует использовать интервал прогнозирования, если вас интересуют конкретные отдельные прогнозы, поскольку доверительный интервал создает слишком узкий диапазон значений, что приводит к большей вероятности того, что интервал не будет содержать истинное значение.