본문 바로가기
통계/시계열 분석

[시계열 분석] 차분(Differencing)과 ARIMA(p,d,q) 모형

by 근수짜세 2022. 8. 16.


 ARMA모형은 박스-제킨스 방법론에 따른 정상시계열에 대한 분석 방법이다. 그렇다면 비정상시계열에 대한 분석은 어떻게 진행될까? 단순히 비정상시계열을 정상시계열로 바꿔주기만 하면 된다. 비정상시계열에는 여러 종류가 있겠지만 오늘은 (확률적) 추세를 가지는 비정상시계열에 대한 분석방법인 ARIMA모형에 대해 다루려고 한다.

 

 추세를 가지는 비정상시계열을 어떻게 정상시계열로 바꿀 수 있을까? 단순히 추세만 제거해주면 된다. 추세를 제거해주는 방법 중 하나가 차분(Differencing)이라 할 수 있다. 우선 시계열 $y_{t}$에 대한 차분이 어떻게 정의되는지 살펴보자.


  • $y_{t}$에 대한 1차 차분 :

$$ w_{t} = (1-B)y_{t} = y_{t} - y_{t-1} $$

  • $y_{t}$에 대한 d차 차분 :

$$w_{t} = (1-B)^{d} y_{t} $$


1차 차분은 시계열 $y_{t}$를 이전 시점의 시계열 $y_{t-1}$를 빼주기만 하면 된다. 한 번 차분된 데이터에 다시 차분을 하는 것이 2차 차분이다. 즉, d차 차분은 차분을 d번 중첩적 한거라 볼 수 있다. 여기서 $w_{t}$를 차분계열이라고 부른다. 그렇다면 이러한 차분이 어떻게 추세를 제거시킬 수 있을까? 선형적 추세를 갖는 시계열 데이터를 예로 1차 차분을 진행해보자.


$$y_{t} = \beta_{0} + \beta_{1}t + \epsilon_{t} $$

 

여기서 $y_{t}$에 대한 1차 차분을 진행하면,

\begin{align} w_{t}  & = y_{t} - y_{t-1} \\ & = \beta_{0} +\beta_{1}t + \epsilon_{t} - (\beta_{0} + \beta_{1}(t-1) + \epsilon_{t-1}) \\ &= \beta_{1} + \epsilon_{t} - \epsilon_{t-1} \end{align}


 1차 차분에 의해 추세가 제거된 것을 확인할 수 있다. 이렇게 추세가 제거된 차분계열 $w_{t}$에 대해 ARMA모형을 적합시키는 것을 ARIMA 모형이라고 부른다. (위의 결정적추세의 차분결과가 가역성 조건을 위반하게 됨을 확인하자. 실제로 선형적추세와 같은 결정적추세에 차분을 진행해주게 되면 과대차분(Over-differencing)이 발생한다.)


  • ARIMA(p,d,q)모형 : 

$$ (1-\phi_{1}B- \cdots - \phi_{p}B^{p})(1-B)^{d}y_{t} = \theta_{0} + (1-\theta_{1}B - \cdots -\theta_{q}B^{q})a_{t} $$

 $\Leftrightarrow$

$$\phi_{p}(B)w_{t} = \theta_{0} + \theta_{q}(B)a_{t} $$


 여기서 $\theta_{0}$는 추세와 관련된 모수다. 통상적으로 1~2번의 차분(d=1,2)만으로도 충분히 정상성을 만족한다고 한다.

 

 

 마지막으로 R에서 ARIMA 모델을 적합해보자. r에서 'auto.arima()' 함수(알고리즘)를 사용하면 최적의 ARIMA모형을 찾기까지 자동화되어 사용하기 편리하다. 하지만 알고리즘 사용없이 sample ACF와 sample PACF를 통해서도 모형 식별이 가능하기 때문에 자동화 기능이 없는 'Arima()' 함수를 사용한다.

 

 elecequip 데이터는 유로 지역의 월별 전기장비 신규구매지수를 나타낸다.  우선 데이터가 계절성을 띄고 있어 stl분해를 통해 계절성을 분리했는데 이 부분은 다음에 다루기러 하고 그냥 넘어가자. 

library(fpp2)
elecequip %>% stl(s.window='periodic') %>% seasadj -> eeadj
autoplot(eeadj)

시계열이 정상성을 띄지 않음을 시각적으로 쉽게 파악할 수 있다. 정상성을 만족하도록 차분을 해보자. 'diff' 는 시계열에 차분을 해주는 함수다. 

eeadj %>% diff %>% ggtsdisplay(main="")

차분계열이 정상성을 띄는 것을 시각적으로 확인할 수 있다. 또한 ARMA모형의 식별 절차에 따라 sample PACF가 시차 4에서 절단된 형태를 가지기 때문에 ARIMA(3,1,0)을 모형의 후보로 넣을 수 있다. 이렇게 식별된 모형을 'Arima()'함수를 사용하여 시계열에 적합해보자.

(fit <- Arima(eeadj, order=c(3,1,0)))
# Series: eeadj 
# ARIMA(3,1,0) 

# Coefficients:
#           ar1      ar2     ar3
#       -0.3418  -0.0426  0.3185
# s.e.   0.0681   0.0725  0.0682

# sigma^2 = 9.639:  log likelihood = -493.8
# AIC=995.6   AICc=995.81   BIC=1008.67

 모형의 계수($\phi_{1}, \phi_{2}, \phi_{3}$) 에 대한 점 추정치와 standard error가 출력되고 백색잡음의 분산 $\sigma^{2}$에 대한 추정치도 제공된다. 모형이 얼마나 잘 적합되었는지를 나타내는 AIC와 BIC 그리고 log likelihood 값또한 출력된다. 출력된 값들에 대한 자세한 해석은 여기를 참고하자. 영어 문서지만 너무 잘 설명된 것 같다.

댓글