9.3 예측하기

ARIMA 오차를 고려하는 회귀 모델을 사용하여 예측하려면, 모델의 ARIMA 부분과 모델의 회귀 부분을 예측해야 하고, 결과를 합쳐야 합니다. 보통의 회귀 모델처럼, 예측값을 얻기 위해, 예측변수(predictor variable)를 먼저 예측해야 합니다. 예측변수(predictor variable)가 미래에 어떻게 될 지 아는 경우는 (예를 들면, 시간, 요일 등 달력과 관련 있는 변수), 비교적 간단합니다. 하지만, 예측변수(predictor variable)가 알려지지 않은 경우에는, 각각을 따로 모델링해야 하거나, 각 예측변수(predictor variable)에 대한 가상의 미래 값을 사용해야 합니다.

9.3.1 예제: 미국 개인 소비와 소득

개인 가처분 소득(personal disposable income)의 미래 백분율 변화가 이전 40년 백분율 값의 평균과 같을 것이라고 가정하고, 다음 8개의 분기에 대해 예측값을 계산해보겠습니다.

fcast <- forecast(fit, xreg=rep(mean(uschange[,2]),8))
autoplot(fcast) + xlab("연도") +
  ylab("백분율 변화")
ARIMA(1,0,2) 오차 모델을 고려하여, 가처분 소득의 백분율 변화에 대한 소비 지출의 백분율 변화를 회귀하여 얻은 예측값.

Figure 9.4: ARIMA(1,0,2) 오차 모델을 고려하여, 가처분 소득의 백분율 변화에 대한 소비 지출의 백분율 변화를 회귀하여 얻은 예측값.

이제 소득 예측변수(predictor variable)를 가지고 데이터의 몇 가지 변형을 설명할 수 있기 때문에 이 모델의 예측구간(prediction interval)은 8.5 절에서 만든 모델에서 나타나는 것보다 좁게 나타납니다.

회귀 모델로부터(ARIMA 오차를 고려한 모델이나 그렇지 않은 것이나) 얻은 예측 구간은 예측변수(predictor variable)의 예측값의 불확실성을 계산에 넣지 않는다는 것을 알아차리는 것이 중요합니다. 따라서 예측변수(predictor variable)의 가정한(또는 추정한) 미래 값을 가정하는 조건에서 이러한 예측구간을 해석해야합니다.

예제: 전기 수요 예측

일별 전기 수요는 기온의 함수로 모델링 할 수 있습니다. 전력 사용량 고지서에서 볼 수 있는 것처럼, 더운 날에는 냉방 때문에, 추운 날에는 난방 때문에 전기를 더 사용합니다. 덥거나 추운 날에 수요가 더 높아지는 것이 그림 9.5의 U자 모양에 반영되어 나타납니다. 여기에서 일별 수요는 일별 최대 기온과 함께 나타냈습니다.

2014년 호주 빅토리아 주의 일별 전력 수요 대비 일별 최대 기온.

Figure 9.5: 2014년 호주 빅토리아 주의 일별 전력 수요 대비 일별 최대 기온.

elecdaily에는 일별 전체 수요값, 근무일을 가리키는 표시자 변수(indicator variable; 여기에서 근무일은 1, 근무일이 아니면 0으로 저장되어있습니다), 일별 최고 기온 등의 데이터가 있습니다. 그림 9.6은 일별 수요와 일별 최고 기온의 시계열을 나타냅니다. 주 단위의 계절성이 있기 때문에, 해당 주기를 7로 두었습니다. 그림은 비-선형이면서 동적인 모델이 필요하다는 것을 강조합니다.

2014년 호주 빅토리아 주의 일별 전력 수요와 일별 최대 기온.

Figure 9.6: 2014년 호주 빅토리아 주의 일별 전력 수요와 일별 최대 기온.

이 예제에서는 auto.arima() 함수를 이용하여 ARMA 오차를 고려하는 2차 회귀 모델을 맞춰보겠습니다.

xreg <- cbind(MaxTemp = elecdaily[, "Temperature"],
              MaxTempSq = elecdaily[, "Temperature"]^2,
              Workday = elecdaily[, "WorkDay"])
fit <- auto.arima(elecdaily[, "Demand"], xreg = xreg)
checkresiduals(fit)
근무일과 U자형 기온 효과를 고려한 일별 전력 수요 동적 회귀 모델에 대한 잔차 진단.

Figure 9.7: 근무일과 U자형 기온 효과를 고려한 일별 전력 수요 동적 회귀 모델에 대한 잔차 진단.

#> 
#>  Ljung-Box test
#> 
#> data:  Residuals from Regression with ARIMA(2,1,2)(2,0,0)[7] errors
#> Q* = 28.2, df = 4, p-value = 1.1e-05
#> 
#> Model df: 10.   Total lags used: 14

이 모델의 잔차에 몇 가지 주목할 만한 자기 상관이 있습니다. 이 말은 예측구간(prediction interval)이 정확한 범위를 나타내지 않을 수도 있다는 것을 의미합니다. 게다가, 잔차의 히스토그램(histogram)에서 양(+)의 값을 갖는 이상값이 하나 보입니다. 이것도 예측구간의 범위에 영향을 줄 수 있습니다.

추정한 모델을 이용하여 2015년 1월 1일 목요일부터 14일 앞을 예측합니다 (새해 첫 날은 공휴일이라 비업무일입니다). 이 경우에, 다음 14일에 대한 기상청 데이터로부터 날씨 예측값을 얻을 수 있습니다. 하지만 설명을 위해, (5.6 절에서 소개한) 시나리오 기반 예측을 사용할 것입니다. 여기에서 다음 14일 기온을 일정하게 섭씨 26도로 둡니다.

fcast <- forecast(fit,
  xreg = cbind(MaxTemp=rep(26,14), MaxTempSq=rep(26^2,14),
    Workday=c(0,1,0,0,1,1,1,1,1,0,0,1,1,1)))
autoplot(fcast) + ylab("전력 수요 (GW)")
일별 전력 수요에 대한 동적 회귀 모델로부터 얻은 예측값. 모든 미래 기온값은 26도로 두었고, 근무일 가변수를 알려진 미래값으로 두었습니다.

Figure 9.8: 일별 전력 수요에 대한 동적 회귀 모델로부터 얻은 예측값. 모든 미래 기온값은 26도로 두었고, 근무일 가변수를 알려진 미래값으로 두었습니다.

2015년의 첫 2주에 대한 점 예측값이 그럴듯하게 보입니다. 2014년 말에 전력 수요 감소가(많은 사람이 여름 휴가를 떠나서. 옮긴이-호주는 남반구에 있어서 연말이 여름) 다음 2주에 대한 예측값에도 비슷하게 낮은 수요로 나타납니다.