시계열분석 질문


임의의 시계열 자료를 아래와 같이 만들었다.

set.seed(7); library(dplyr)
tsdata <- rnorm(100, 50, 10^2) %>% round(2) %>% ts

ARIMA modeling 을 위해 forecast::auto.arima() 함수를 이용하여 적절한 모형식별을 하였고
그로인하여 p,d,q 차수를 알아낸 후 절편이 없는 모델을 위해 아래와 같이 코딩하여 모델적합 객체를 fit 으로 저장하였다.

library(forecast)
auto.arima(tsdata) 
## Series: tsdata 
## ARIMA(2,0,0) with non-zero mean 
## 
## Coefficients:
##          ar1     ar2  intercept
##       0.1558  0.1765    64.2835
## s.e.  0.1013  0.1021    13.7097
## 
## sigma^2 estimated as 8502:  log likelihood=-594.34
## AIC=1196.69   AICc=1197.11   BIC=1207.11
fit <- arima(tsdata, c(2,0,0), include.mean=F) # for no intercept
fit
## 
## Call:
## arima(x = tsdata, order = c(2, 0, 0), include.mean = F)
## 
## Coefficients:
##          ar1     ar2
##       0.2960  0.3244
## s.e.  0.0985  0.0985
## 
## sigma^2 estimated as 9565:  log likelihood = -600.4,  aic = 1206.81

ARIMA(2,0,0) 즉 ARMA(2,0) 모형으로 적합하였고 이에 대한 \(\hat{\phi_1}, \hat{\phi_2}\) 은 각각 0.296, 0.3244 로 계산되었다.
즉 시계열 모형은 아래와 같이 정리 된다고 할 수 있는데

\[Z_t = 0.2960Z_{t-1} + 0.3244Z_{t-2} + \alpha_t\]

질문은 이것이다.

질문 1

주어진 데이터는 \(Z_1 , Z_2, \cdots , Z_{100}\) 까지 있으며 \(Z_{101}\) 값을 예측하기 위해선 직전시차 자료 \(Z_{100}\) 과 2차전 자료 \(Z_{99}\) 를 이용하여

\[\hat{Z}_{101} = 0.2960Z_{100} + 0.3244Z_{99} + \alpha_t\]

가 되는것이라고 생각하는데 이것이 맞는가?

질문 2

이어서 추가적으로 R에서 forecast() 함수를 이용하여 예상되는 \(\hat{Z}_{101}\) 값을 출력해 보았는데

fit %>% forecast(h=10)
##     Point Forecast     Lo 80    Hi 80     Lo 95    Hi 95
## 101      12.347371 -112.9890 137.6838 -179.3381 204.0329
## 102      14.984966 -115.7272 145.6971 -184.9220 214.8919
## 103       8.440715 -132.1012 148.9826 -206.4995 223.3810
## 104       7.359107 -135.8133 150.5315 -211.6042 226.3224
## 105       4.916221 -140.3943 150.2268 -217.3171 227.1495
## 106       3.842272 -142.3700 150.0545 -219.7700 227.4546
## 107       2.731990 -144.0443 149.5082 -221.7429 227.2069
## 108       2.054987 -145.0009 149.1108 -222.8475 226.9575
## 109       1.494452 -145.7210 148.7099 -223.6521 226.6410
## 110       1.108934 -146.1903 148.4082 -224.1658 226.3837

맨위의 101번째 자료 즉 \(\hat{Z}_{101}\) 이 12.347371 로 계산되었다.
즉 질문 1의 내용이 옳다고 가정할 때

\[12.347371 = 0.2960 \times 34.93 + 0.3244 \times 6.19 + \alpha_t\]

이라는 것 인데, 우리가 배우기론 \(\alpha_t\) 는 백색잡음으로 \(\alpha_t \sim (0, \sigma^2_a)\) 인 확률변수이다.
그런데 확률변수임에도 불구하고

fit %>% forecast(h=1)
##     Point Forecast    Lo 80    Hi 80     Lo 95    Hi 95
## 101       12.34737 -112.989 137.6838 -179.3381 204.0329
fit %>% forecast(h=1)
##     Point Forecast    Lo 80    Hi 80     Lo 95    Hi 95
## 101       12.34737 -112.989 137.6838 -179.3381 204.0329
fit %>% forecast(h=1)
##     Point Forecast    Lo 80    Hi 80     Lo 95    Hi 95
## 101       12.34737 -112.989 137.6838 -179.3381 204.0329

반복해서 코드를 수행해 봐도 계산되는 \(\hat{Z}_{101}\) 은 12.34737 으로 항상 일정하다.
실제로 forecast() 함수에서 어떠한 방법으로 시계열 모형의 예측값을 계산하는지 알고싶지만 그건 어려울 것 같고
실제 현업에서 시계열 모형을 통해 예측값을 어떻게 계산하는지 알고싶으며, 예측값 계산시 저 백색잡음 \(\alpha_t\) 의 정체를 정확히 알고싶다.


lovetoken

2016-05-06