Excel로 하는 미래 예측(4): 시계열 예측

지수평활화법(FORECAST.ETS)는 3차 평활화를 수행한다. 데이터 추동 예측에서 소개한 지수평활화가 1차 평활화라고 한다면 두 차례 더 평활화를 거치는 함수이다. ETS는 Exponential Triple Smoothing의 머리글자이다. 지수평활화(exponential smoothing)가 백색 소음을 잡아주는 평활화라고 한다면 2차 평활화는 추세(trend)를 반영하고, 3차 평활화는 계절성(seasonality)을 반영한다. 수식으로 표현하면 다음과 같다.

1차 지수 평활화는,

는 측정된 시계열 데이터이고, 는 예측된 시계열 데이터(시간 t에서 평활화된 값)이다. 전 시구간에서 예측된 값의 오류를 다음 시구간 값을 예측할 때 일정한 비율()로 반영해 주는 식이다.

2차 지수 평활화는 다음과 같이 표현될 수 있다.

 시점 t에서의 추세(trend)에 대한 최적의 추정치

는 기본 요인(base factor) 혹은 데이터 평활화 요인(data smoothing factor)으로 불리며  이다. 는 추세 평활화 요인(trend smoothing factor)라고 불리며  이다. 를 넘어서 예측하려면 다음 공식을 사용한다.

3차 지수평활화(multiplicative의 경우)는 아래와 같이 계산된다.

: 계절적 조정 요인의 시퀀스(the sequence of seasonal correction factors). 그것은 관찰이 진행 중인 사이클에서 어느 시점 t mod L에서 예측된 추세의 예상된 비율이다.

L: 계절적 변동 주기(cycle)의 길이

는 계절적 변동 평활화 요인(the seasonal change smoothing factor)이며,  를 넘어서 예측하려면 다음 공식을 사용한다.

지수평활법을 이론적으로 이해하기는 다소 어렵지만 엑셀로 실행하는 것은 쉽다. 아래 그림에서처럼 예측값을 넣으려는 셀에 =FORECAST.ETS를 치고, 예측시점(여기서는 A38), 표적변수 데이터(B2:B37), 관찰한 시점들(A2:A37)을 넣어주면 된다.

그 이후 여러 시점들에 대해 예측하려면 그 수식을 복사하면 된다.  값을 구하려면, 셀에 =FORECAST.ETS.STAT(B2:B37,A2:A37,1)을 넣으면 된다.  값은 =FORECAST.ETS.STAT(B2:B37,A2:A37,2)을,  값은 =FORECAST.ETS.STAT(B2:B37,A2:A37,3)을 넣으면 된다. 계절성 주기(L)를 알아내려면 =FORECAST.ETS.SEASONALITY(D2:D51,A2:A51)을 넣으면 된다. 이렇게 계산된 계절성 주기는 6이고, 알파 값은 0.126, 베타는 0.001, 감마도 0.001이다.

이상으로 표적변수의 시계열 데이터만으로 예측하는 시계열 예측(time series forecasting)의 다양한 모형과 함수를 이해하면서 엑셀로 구현해 보았다. 아마도 그 정도만 구현할 수 있으면 현업의 실무적 요구에 잘 대응할 수 있으리라 생각된다.

미래 예측이 어렵다면 그것은 도구의 문제가 아니라 상상력, 혹은 이론과 학습의 부족에서 먼저 그 원인을 찾아야 하지 않을까. 다행한 점은 고등학교 정도의 수학만 잘 구사할 수 있으면 대부분의 문헌과 강의를 이해할 수 있다는 것이다.

엑셀이 시계열 예측만 도와주는 것이 아니다. 선형회귀와 같은 지도학습모형에 의한 예측도 수행하게 해준다. 추가기능(add-ins)을 이용하면 유용한 미래 예측을 해낼 수 있다. 다음에는 그 가능성을 살펴보겠다.

Excel로 하는 미래 예측(3): 시계열 예측

지난 포스팅에서 시계열 예측 중 데이터 추동 예측을 소개했다. 이번에는 모형 추동 예측을 살펴보자. 표적 변수의 과거 데이터에 의존해서 미래를 예측한다는 점은 데이터 추동 예측의 경우와 동일하지만 모형 추동 예측은 단지 개별적 데이터들의 집합에만 의존하는 것이 아니라 데이터들로 만들어지는 변동의 형태를 미래 예측에 반영하는 방법이다. 예컨대 변동이 선형(linear)이라는 점을 고려할 수도 있고 아니면 변동의 주기성–계절적 부침이라고 한다–이나 상향적 경향–추세라고 한다–을 고려할 수도 있다.

아래 그림들을 보면, (a)의 경우는 주기성이 분명해 보이고 (b)의 경우는 주기성이나 트렌드가 보이지 않는다. (A)의 경우는 주기성을 반영해서 미래를 예측한다면 오류를 줄일 수 있을 것이다.

모형 추동 예측에서 가장 널리 쓰이는 것은 선형회귀 모형이다. 시계열 예측의 선형회귀 모형은 크게 두 가지를 생각할 수 있다. 하나는 시간(시구간)을 예측변수로 갖는 모형–단순회귀모형, 다른 하나는 표적변수의 과거값을 독립변수로 갖는 모형–자기회귀모형이다.

데이터에 계절성(seasonality)이 있으면 단순회귀모형의 적합 결과가 좋지 않다(위 그림 참조).  단순회귀모형의 그런 단점을 개선하는 데는 두 가지 방법이 있다. 하나는 다항회귀(polynomial regression)를 사용하는 방법이다. 시구간의 2차항이나 3차항을 추가하거나 사인, 코사인 함수를 포함한 항을 추가하여 다항회귀모형을 만든다.

다른 하나는 계열 데이터의 각 시구간에 더미변수를 도입하는 방법이다. 만약 12개의 시구간이 있다면 11개의 더미변수를 도입하면 된다(12월은 기준 범주가 되어 더미변수가 생략된다). 시간 변수를 포함해서 모두 12개의 독립변수를 지닌 회귀모형이 되며 각 더미변수는 계절성을 포착한다. (아래 그림 2개 참조)

자기회귀모형(Autoregressive model, AR 모형)은 지연 계열(lag series)에 적용되는 회귀모형이다. 측정된 데이터가 1년씩 미룬 지연(lag) 데이터 혹은 2년 지연 계열, 3년 지연 계열 등과 상당한 정도의 상관관계를 가지는 경우 자기상관관계(autocorrelation)이라고 부르며 예측과정에 활용할 수 있다. 자기상관이 존재할 때 자기회귀모형을 적용하는 것이 하나의 해법이 된다. 자기회귀 모형의 일반식은 다음과 같이 표시될 수 있다.

1차 지연계열 데이터만을 가진 자기회귀모형을 AR(1), 2차 지연계열 데이터를 가진 자기회귀모형은 AR(2) 등으로 표시한다(아래 그림 참조).

지연계열 데이터를 만드는 방법은 간단하다. 아래 그림에서처럼 원 데이터를 복사해서 한 칸(여기서는 1개월)을 아래로 내리거나(Lag_1), 두 칸을 내리거나(Lag_2), 세 칸을 내리면 된다(Lag_3). 아래 사진에서처럼 공통의 데이터(노란색 부분)를 가지고 상관관계를 구하거나 회귀모형을 적합하면 된다.

아래 그림에서 보듯이 Yt와 Lag_1의 자기상관은 0.487451, Yt와 Lag_2의 자기상관은 -0.13216, Yt와 Lag_3의 자기상관은 -0.45576으로, 자기회귀모형의 적합이 필요함을 시사한다. 상관분석과 회귀분석은 모두 엑셀의 데이터-데이터분석 기능을 사용해서 수행하였다. 회귀분석 결과를 보면, 결정계수가 0.7557로 위에서 본 단순회귀모형의 결정계수 0.1798보다 크게 향상되었다.

AR 모형은 정상 시계열 데이터(stationary time series data)인 경우에만 사용 가능하다. 정상 시계열 데이터란 추세(trend)와 계절성(seasonality)이 없고 백색 소음(white noise)만 있는 시계열 데이터이다(아래 그림 참조).

이 조건이 충족되기가 보기만큼 까다롭지는 않다. 약간의 변형만 가하면 비정상 시계열 데이터를 정상 시계열 데이터로 전환할 수 있기 때문이다.

정상성(stationarity)을 확보하는 흔한 방법은 차분(differencing)을 이용하는 것이다. 차분이란 아래 식처럼 금년도 값에서 전년도 값을 뺀 것을 말한다.

만약 그렇게 차분을 해서도 정상성을 확보하지 못하면  아래 식처럼 다시 한번 차분을 할 수 있다(제2차 차분, 차분 차수가 2).

비정상 시계열 데이터의 경우 차분을 사용하지 않고 엑셀이 제공하는 지수평활법 함수를 사용해도 좋다. 2016 엑셀은 예측 함수를 4가지 제공한다. 시구간만을 독립변수로 갖는 단순선형회귀 예측을 계산하는 함수인FORECAST.LINEAR, 지수평활법 예측을 계산하는 함수 FORECAST.ETS, 지수평활법의 95% 신뢰구간을 보여주는 FORECAST.ETS.CONFINT, 계절성의 주기를 보여주는 FORECAST.ETS.SEASONALITY, 세 가지 계수를 보여주는 FORECAST.ETS.STAT를 제공한다.

사용법은 간단하다. 단순선형예측의 경우 예측하려는 셀에 =FORECAST.LINEAR를 치고, 예측하는 날짜(여기서는 A38), 표적변수 데이터(여기서는 B2:B37), 데이터가 있는 날짜(여기서는 A2:A37)를 입력하면 된다. 그리고 그 이후 날짜에 대한 예측을 추가하려면 그 수식을 복사하면 된다. 지수평활법도 마찬가지이다.

FORECAST.ETS는 편리한 함수이나 약간 자세한 설명이 필요함으로 다음 포스팅에서 독립해서 다루겠다.