[R] 시계열 데이터 분석 - Time Series Analysis, part 2

반응형

지수예측모델 

지수예측모델(exponential forecasting model)은 단순하면서도 비교적 우수한 단기예측 성능을 보입니다.

 

지수예측모델은 

1. 단순지수평활법(simple exponential smoothing) : 수준 추정

2. 홀트지수평활법(Holt exponential smoothing) : 수준, 기울기 추정 

3. 홀트-윈터스지수평활법(Holt-Winters exponential smoothing): 수준, 기울기, 계절 요인 추정 

으로 구분할 수 있습니다.

 

모델을 선정할 때, 시계열의 핵심 성분 (추세, 계절성)과 이러한 성분이 평활법에 어떻게 들어갈지 감안해야 합니다. 

 

R 에서는 forcast::ets() 함수를 이용해 지수예측모델을 생성할 수 있는데요.

다음 그림을 보면 이해하기 편합니다.

평활법의 유형에 따라 ets() 함수의 model 에 지정할 수 있는 모델이 달라집니다. 

 

예시를 통해서 알아보겠습니다.


연도별로 달라지는 유량 

R에서 LakeHuron 데이터셋을 plotting 한 결과입니다. 

이 그래프를 보면 상승 추세나 하락 추세는 관찰되지 않고 있으며, 연도별로 측정값이 나타나므로 계절적 요소가 존재하지 않는다는 것을 알 수 있습니다. >> 단순지수평활법 채택

 

ets() 함수에서 model 매서드에 "ANN"을 지정하면 단순지수평활법 모델을 사용하겠다는 뜻입니다.

ANN은 '불규칙 성분만이 수준과 가법적으로 결합하는 시계열 예측 모델' 을 분석하는 것입니다.

데이터를 보고 적합한 방법을 고르기 위해서는 맨 처음의 이미지를 참고하시면 됩니다. 

단순지수평활법을 적용한 결과 매우 큰 alpha 값을 보입니다. 이는 예측 시 최우선적으로 고려합니다.

 

다음으로 1년 후의 호수의 수위를 예측해보겠습니다. 

forecast() 함수를 사용합니다. 

 

마지막으로 accuracy(lake.ets) 를 통해 예측 정확도를 계산할 수 있습니다. 

 


다른 데이터 셋도 살펴보겠습니다.

 

R 에 fpp 라이브러리에 내장되어 있는 elecsales 데이터를 불러오겠습니다. 

1989년부터 2008년까지 1년 주기로 미국 남부 지역의 전기 사용량을 측정한 시계열 데이터입니다.

 

data(elecsales)

위로 상승하는 추세를 보이며, 계절성은 없어보입니다. 

추세를 보이는 시계열 데이터는 홀트지수평활법을 사용하여 분석해보겠습니다.

 

elecsales.ets <- ets(elecsales, model="AAN")   >> 상승 추세가 보이므로 model 은 AAN이 적합
elecsales.ets

alpha 값과 beta 값이 매우 낮으므로 예측을 할 때 과거의 관측값을 우선적으로 고려합니다.

5년간의 전력 판매량을 알아보고 이후의 판매량을 예측해보겠습니다.

맨 처음 데이터를 마주했을 때

가장 먼저 plot을 그려서 어떤 추세가 관찰되는지를 파악하고 그에 맞는 모델을 선정하여 분석을 진행하면 됩니다.

함수가 익숙하지 않아서 저도 굉장히 오래 걸렸는데 하다보면 익숙해지는 느낌을 받으실 거에요.

 

R의 AirPassengers 라는 데이터셋은 plot을 하게 되면 승법 모델로 설명이 가능합니다.

승법 모델은 분석하기 까다롭기 때문에 log를 씌워서 가법 모델로 변경후 분석하면 될 것 같습니다.

감사합니다 :0

반응형