R 에서 아리마 모형으로 시계열 분석하는 법
How to analyze Time Series with arima model in 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')