R 에서 아리마 모형으로 시계열 분석하는 법
실습
R에서 내장데이터 WWWusage
를 불러와 그래프를 그려 확인해보자.
WWWusage
는 먼 옛날 인터넷에 접속하는 이용자수를 나타내는 시계열 데이터로써, 그 추이를 파악하기 위해서는 시계열 분석을 해야한다. 시계열 분석에서 가장 대표적인 모형은 아리마 모형이나, 같은 아리마 모형이라고 해도 실제로 적절한 모형을 찾아내는 방법은 여러가지가 있다.
다행스럽게도 R에서는 forecast
패키지의 auto.arima()
함수를 사용해 쉽고 빠르게 그럴싸한 모형을 얻을 수 있다. 옳게 된 분석이라고는 할 수 없으나, 간단한 분석이라면 사실 이 함수를 사용하는 것만으로도 분석의 반 이상이 끝난다. auto.arima()
는 변수 선택 기준과 변수 선택 절차를 따라 최적의 모형을 찾아내준다.
물론 이것이 최고, 최선의 모형이라는 뜻은 아니므로, 분석자는 데이터를 정확하게 이해하고 그에 맞는 모형을 계속 찾아야한다. 숙련된 분석자에게도 대강의 결과를 얻을 수 있다는 점에서 충분히 유용한 것은 사실이나, auto.arima()
에 의지하는 태도는 지양해야한다.
주의사항
주의해야할 점으로 아리마 모형은 정상성을 만족하는 데이터에 대한 결과를 내놓는데, $ARIMA ( p , d , q )$ 에서 $d$ 가 필요한 차분의 횟수라는 것이다. 다시 말해, 데이터에 변환이 필요하다면 변환을 한 데이터를 집어넣어야하지만 차분이 필요한 데이터라도 차분을 해선 안 된다는 것이다. 물론 적절하게 차분을 한다면 그에 맞는 아르마 모형 $ARMA(p,q)$ 을 얻을 수 있다.말이 복잡한데, 이해하기 어려우면 그냥 다음의 단순한 수칙 두 가지만 생각하자:(1) 변환이 필요하면 auto.arima()
에 넣기 전에 변환을 해야한다.(2) 차분이 필요해도 auto.arima()
에 넣기 전에 차분을 하면 안 된다.
확인
위에서 얻은 모형을 통해 얻은 적합치가 실제 데이터를 얼마나 잘 설명하는지 확인해보자. 검은 실선은 실제 데이터고, 빨간 실선은 적합치다. 쉬운 데이터기는 하지만 모형이 데이터를 잘 설명하는 것을 알 수 있다.
코드
install.packages("forecast")
library(forecast)
win.graph(6,3); WWWusage; plot(WWWusage,main='WWWusage\')
out<-auto.arima(WWWusage); out
summary(out)
win.graph(6,3); WWWusage; plot(WWWusage,main='WWWusage\')
lines(out$fitted,col='red')