R 에서 EACF를 사용한 ARMA 모형 선택법
실습 1
PACF는 의 차수를, ACF는 의 차수를 정할 때 큰 도움이 된다.
직접 그 예를 살펴보자. ma1.2.s
데이터는 모델에서, ar1.s
데이터는 모델에서 나온 TSA
패키지의 샘플 데이터다. TSA
패키지의 acf()
함수와 pacf()
함수를 사용하면 다음과 같이 여러 시차 에 대해 코릴로그램correlogram을 그려준다.
그림만 봤을 때 파란 선을 넘어가는 가 많다고 해서 아르마 모형이라고 판단하는 것은 위험하다. 아르마 모형의 가역성 때문에 라도 처럼 보일 수 있고, 라도 처럼 보일 수 있기 때문이다. 실제로 왼쪽 위 의 ACF와 오른쪽 아래 의 PACF는 그 크기가 점점 감소하는 식의 이상한 추이를 보인다. 반면 의 PACF와 의 ACF는 이후로 칼같이 떨어진다.
문제는 실제 데이터는 이렇게 인지 인지 미리 알 방법이 없다는 것이다.
가령 arma11.s
는 수식 과 같이 정의된 모델에서 나온 샘플 데이터인데, 그 ACF와 PACF를 그려보면 다음과 같이 나타난다.
arma11.s
는 분명히 를 따라야하지만 위의 그림만 보아서는 영락없는 모형이다. 이는 반대로 말해서 ACF와 PACF만으로 모형을 찾고 있었다면 모형이었는데도 모형으로 판단했을 가능성이 있다는 것이다.
보통 ACF와 PACF로 모형을 검사해보면 보통 위의 표와 같은 추이가 나타난다고 한다. 의 PACF에 ‘점점 감소?‘라고 물음표가 붙은 이유는 바로 위의 arma11.s
처럼 바로 급감하는 경우도 왕왕 있기 때문이다. 시계열에 대해 설명하는 그 어떤 문서든 저 표를 참고하지만, 반드시 필요충분인 것은 아니다. ACF와 PACF가 점점 감소한다면 를 의심해볼 수 있지만 라고 ACF와 PACF가 둘 다 점점 감소하는 것은 아니다.
그에 비해 EACF는 에서 샘플링되었음을 디텍트해낸다.
다른 예제로써 내장데이터 lynx
를 살펴보자. lynx
는 1821년부터 1934년까지 캐나다에서 스라소니가 덫에 잡힌 수에 대한 연간 데이터다.
ACF와 PACF만 보았을 때 lynx
는 영락없는 모형을 따라야하지만, 실제로는 다음과 같이 모형을 따를 수 있다.
실제로 auto.arima()
함수를 통해 간단하게 확인해봐도 일단 가 아닌 것은 확실하게 장담할 수 있다. 이렇듯 전공자와 비전공자의 차이, 제대로 공부한 사람과 대충 공부한 사람의 차이는 분석 자체를 내놓을 수 있느냐 없느냐가 아니라 ACF, PACF, EACF를 볼 수 있어서 분석을 한 눈에 보았을 때 위화감, 문제점을 빠르게 눈치채느냐 못채느냐의 차이가 있다. 그림만 볼 줄 알아도 큰 도움이 되고, 이론적으로도 이해하고 있다면 더할나위 없다.
코드
아래는 예제코드다.
library(TSA)
win.graph(6,6); par(mfrow=c(2,2))
data(ar1.s); acf(ar1.s, main="ACF of AR(1)"); pacf(ar1.s, main="PACF of AR(1)")
data(ma1.2.s); acf(ma1.2.s, main="ACF of MA(1)"); pacf(ma1.2.s, main="PACF of MA(1)")
win.graph(6,3); par(mfrow=c(1,2))
data(arma11.s); acf(arma11.s, main="ACF of ARMA(1,1)"); pacf(arma11.s, main="PACF of ARMA(1,1)")
eacf(arma11.s)
win.graph(6,3); par(mfrow=c(1,2))
data(lynx); acf(lynx, main="ACF of lynx"); pacf(lynx, main="PACF of lynx")
eacf(lynx)
library(forecast)
out<-auto.arima(lynx); summary(out)
같이보기
Cryer. (2008). Time Series Analysis: With Applications in R(2nd Edition): p117. ↩︎