R에서 예측 구간을 만드는 방법


선형 회귀 모델은 다음 두 가지에 유용할 수 있습니다.

(1) 하나 이상의 예측 변수와 반응 변수 간의 관계를 정량화합니다.

(2) 모델을 사용하여 미래 가치를 예측합니다.

(2) 와 관련하여 회귀 모델을 사용하여 미래 값을 예측할 때 정확한 값 과 가능한 값의 범위를 포함하는 구간을 모두 예측하려는 경우가 많습니다. 이 간격을 예측 간격 이라고 합니다.

예를 들어, 학습 시간을 예측 변수로 사용하고 시험 점수를 응답 변수로 사용하여 간단한 선형 회귀 모델을 적합하다고 가정합니다. 이 모델을 사용하면 6시간 동안 공부하는 학생이 시험에서 91 점을 받을 것이라고 예측할 수 있습니다.

그러나 이 예측에는 불확실성이 있으므로 6시간 동안 공부하는 학생이 85 에서 97 사이의 시험 점수를 얻을 확률이 95%임을 나타내는 예측 구간을 만들 수 있습니다. 이 값 범위는 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 ~ 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 에 대한 세 가지 새로운 값을 기반으로 mpg 값을 예측하겠습니다.

 #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인 새 자동차의 경우 mpg23.41759 가 될 것으로 예상됩니다.
  • EPA가 200인 새 자동차의 경우 mpg21.35683 이 될 것으로 예상됩니다.
  • EPA가 250인 새 자동차의 경우 mpg19.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

이 값을 해석하는 방법은 다음과 같습니다.

  • EPA 가 150인 자동차의 95% mpg 예측 구간은 16.62968 에서 30.20549 사이입니다.
  • EPA 가 200인 자동차의 95% mpg 예측 구간은 14.60704 에서 28.10662 사이입니다.
  • EPA 가 250인 자동차의 95% mpg 예측 구간은 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에서 예측 구간을 시각화하는 방법

다음 코드는 다음 기능을 사용하여 차트를 만드는 방법을 보여줍니다.

  • 가용성mpg 에 대한 데이터 포인트의 산점도
  • 적합 회귀선에 대한 파란색 선
  • 회색 신뢰 밴드
  • 빨간색 예측 밴드
 #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

신뢰 구간과 예측 구간을 사용하는 경우

예측 구간은 단일 값에 대한 불확실성을 포착합니다. 신뢰 구간은 예측된 평균값에 대한 불확실성을 포착합니다. 따라서 예측 구간은 동일한 값에 대한 신뢰 구간보다 항상 넓습니다.

특정 개별 예측에 관심이 있는 경우 예측 구간을 사용해야 합니다. 신뢰 구간은 너무 좁은 값 범위를 생성하여 구간에 실제 값이 포함되지 않을 확률이 더 커지기 때문입니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다