평활화 (Smoothing)
일반적으로 하나의 데이터 세트는 신호(signal)와 노이즈(noise)라는 두 가지 성분으로 이루어져 있다고 생각할 수 있다. 신호는 수집된 프로세스의 고유한 동학(dynamics)에서 비롯되는 패턴이고, 이는 단순 상수 프로세스에서부터 복잡한 구조에 이르기까지 다양하다. 예를 들어 상수 프로세스는 다음과 같이 표현된다.
$$ y_t = \mu + \epsilon_t $$
보통 노이즈 $ \epsilon_t $ 에 대해서는 평균이 $ 0 $ 이고, 분산이 $ \sigma^2 $ 으로 일정하며, 자기상관이 없다고 가정한다.
평활화(참고링크)는 신호와 노이즈를 분리하는 기법 중 하나로 스무더(smoother)가 필터처럼 작동하여 신호의 추정치(estimate)을 얻게 한다. 지수평활법을 이용한 스무딩은 기본적으로 현재 관측값을 이전 관측값들과 단순하게 연관지어 사용한다. 즉 과거 방향만 보는 스무더(backward looking smoother)이다. 시점 $ T $ 의 관측값은 시점 $ T $ 와 그 이전 시점 값들의 조합으로 대체할 수 있는 것이고, 간단하게는 평균을 사용하는 방법이 있다.
상수 프로세스를 스무딩하려면 현재 관측값을 $ \mu $ 에 대한 최적 추정값으로 대체해야 한다. 최소제곱 기준을 사용해 상수 프로세스에 대한 오차제곱합(SSE)을 다음과 같이 정의한다.
$$ SSE = \sum_{i=1}^T (y_t - \mu)^2 $$
$ \mu $ 로 미분하여 $ 0 $ 으로 두고 최소값을 구하면 다음과 같다.
$$ \hat{\mu} = \frac{1}{T} \sum_{i=1}^T y_t $$
즉 단순평균과 같다.
그러나 프로세스가 상수가 아니라 더 복잡한 패턴을 보인다면 이러한 스무더는 사용할 수 없다. 데이터에서 일종의 관성(inertia)이 생기며 상수 프로세스와는 다른 패턴을 보일 수 있고, 이는 스무더가 변화를 정보에 담지 못할 수 있다. 이를 가장 쉽게 해결하는 방법은 과거 데이터의 가중을 줄여 최근 데이터를 더 많이 반영하는 것이다. 그 중 하나가 단순이동평균이었다. 앞뒤로 설정한 시차 만큼의 데이터만을 반영하여 너무 간격이 큰 데이터는 반영하지 않는다.
$$ M_T = \frac{y_T + y_{T-1} + \cdots + y_{T-N+1}}{N} = \frac{1}{N} \sum_{t=T-N+1}^T y_t $$
그러나 이렇게 이동평균을 취하면 독립된 관측값들도 자기상관(autocorrelation)이 생긴다. 이동평균에서의 자기상관함수(ACF, autocorrelation function)는 시차(lag) $ k $ 를 두고 다음과 같이 표현할 수 있다.
$$ \rho_k = \begin{cases} 1 - \dfrac{\lvert k \rvert}{N} , & \quad (k < N) \\ 0, & \quad (k \geq N) \end{cases} $$
1차 지수평활법 (First-Order Exponential Smoothing)
프로세스의 변화에 더 빠르게 반응하는 스무더를 얻기 위한 방법 중 하나는 과거 관측값에 기하급수적으로 감소하는 가중치(geometrically decreasing weights)를 부여하는 것이다. 즉 할인계수(discount factor) $ \theta $ 를 도입하여 아래와 같은 지수 가중 스무더(exponentially weighted smoother)를 정의한다.
$$ \sum_{t=0}^{T-1} \theta^t y_{T-t} = y_T + \theta y_{T-1} + \theta^2 y_{T-2} + \cdots + \theta^{T-1} y_1 $$
여기서 과거 관측값들을 기하급수적으로 감소시키려면 $ \lvert \theta \rvert < 1 $ 이어야 한다는 점을 유의해야 한다.
가중치의 합을 생각하면 다음과 같다.
$$ \sum_{t=0}^{T-1} \theta^t = \frac{1 - \theta^T}{1 - \theta} $$
이는 평균은 아니기에 평균 형태로 만들기 위해 $ (1 - \theta) / (1 - \theta^T) $ 를 곱해준다. 단 $ \theta^T $ 는 $ T $ 가 매우 커질 때 $ 0 $ 으로 수렴하므로 지수 가중 평균(exponentially weighted average)은 다음과 같은 형태를 갖는다.
$$ \tilde{y}_T = (1 - \theta) \sum_{t=0}^{T-1} \theta^t y_{T-t} = (1 - \theta) (y_T + \theta y_{T-1} + \theta^2 y_{T-2} + \cdots + \theta^{T-1} y_1) $$
이를 단순 지수 스무더(simple exponential smoother) 혹은 $ 1 $차 지수 스무더(first-order exponential smoother)라 한다.
이를 재귀 형태로 나타내면 다음과 같다.
$$ \tilde{y}_T = (1 - \theta) y_T + \theta \tilde{y}_{T-1} $$
그리고 이를 $ 1 - \theta = \lambda $ 로 두고 다음과 같이 표기하기도 한다.
$$ \tilde{y}_T = \lambda y_T + (1 - \lambda) \tilde{y}_{T-1} $$
초기값 문제
위에서 논의한 $1$차 지수평활법을 사용할 때 중요한 것은 $ \lambda $ 설정이다. 이동평균법에서 구간 크기 $ N $ 을 결정하는 것이 중요했던 것과 같다.
$$ \tilde{y}_T = \lambda y_T + (1 - \lambda) \tilde{y}_{T-1} $$
위와 같이 재귀적으로 표현하여 알 수 있는 것은 $ \tilde{y}_0 $ 을 알아야 한다는 것이다. 즉 $ \tilde{y}_0 $ 을 설정해야 한다. 그러나 다시 재귀를 풀어보면 다음과 같이 나타낼 수 있다는 것을 알 수 있다.
$$ \tilde{y}_1 = \lambda y_1 + (1 - \lambda) \tilde{y}_0 $$
$$ \tilde{y}_2 = \lambda\left(y_2 + (1-\lambda)y_1\right) + (1-\lambda)^2\tilde{y}_0 $$
$$ \tilde{y}_3 = \lambda\left(y_3 + (1-\lambda)y_2 + (1-\lambda)^2 y_1\right) + (1-\lambda)^3\tilde{y}_0 $$
$$ \vdots $$
$$ \tilde{y}_T = \lambda\left(y_T + (1-\lambda)y_{T-1} + \dots + (1-\lambda)^{T-1}y_1\right) + (1-\lambda)^T\tilde{y}_0 $$
즉 $ T $ 가 커짐에 따라 $ (1 - \lambda)^T $ 항이 매우 작아지므로 $ \tilde{y}_0 $ 가 $ \tilde{y}_T $ 에 미치는 영향은 무시할 정도로 작아진다. 따라서 데이터가 충분히 많다면 $ \tilde{y}_0 $ 을 어떻게 설정하든 큰 차이가 나지는 않는다.
그럼에도 불구하고 일반적으로 프로세스 변화가 초기에 빠르게 일어날 것이 예상되는 경우 $ y_1 $ 을 사용하여 $ \tilde{y}_0 $ 을 추정하거나 프로세스가 적어도 초반에는 국소적으로 상수(local constant)에 가깝다면 데이터, 혹은 일부 데이터의 평균 $ \bar{y} $ 를 구해 $ \tilde{y}_0 $ 을 추정한다.
할인계수 설정
이제 할인계수 $ \lambda $ 를 어떻게 설정해야 하는지를 생각해야 한다. $ \lambda $ 에 대한 가장 극단적인 경우를 생각하면 $ \lambda = 0 $ 과 $ \lambda = 1 $ 이 있을 것이다.
$ \lambda = 0 $ 이라면 모든 스무딩값은 결국 $ y_0 $ 로 상수가 되는데, 이는 실제 시계열 패턴을 가장 강력하게 부드럽게 표현한 형태라 할 수 있다. 한편 $ \lambda = 1 $ 이면 $ \tilde{y}_T = y_T $ 가 되어 스무딩이 전혀 이뤄지지 않은 원 데이터가 된다. 즉 $ \lambda $ 가 작아질수록 스무딩이 강해진다.
이를 다시 생각해보면 $ \lambda $ 선택에 따라 $1$차 지수 스무더의 분산은 $ 0 $ 에서부터 원 시계열의 분산 사이 어딘가가 된다. 독립성 및 등분산을 가정할 경우 아래 식이 성립한다.
$$ \mathrm{Var}(\tilde{y}_T) = \frac{\lambda}{2 - \lambda} \mathrm{Var}(y_t) $$
$ \mathrm{Var} \left( \lambda \sum_{t=0}^\infty (1 - \lambda)^t y_{T-t} \right) $
$ = \lambda^2 \sum_{t=0}^\infty (1 - \lambda)^{2t} \mathrm{Var}(y_{T-t}) $
$ = \lambda^2 \sum_{t=0}^\infty (1 - \lambda)^{2t} \mathrm{Var}(y_T) $
$ = \mathrm{Var}(y_T) \lambda^2 \sum_{t=0}^\infty (1 - \lambda)^{2t} $
$ = \frac{\lambda}{2 - \lambda} \mathrm{Var}(y_t) $
모델링
시계열 데이터가 평균이 $ 0 $, 분산이 $ \sigma^2 $ 이며 독립성과 등분산성을 만족하는 노이즈를 갖는 상수 프로세스인 경우는 매우 특수한 경우이다. 일반적 모형 집합은 다음과 같이 표현할 수 있다.
$$ y_t = f(t; \boldsymbol{\beta}) + \epsilon_t $$
여기서 $ \boldsymbol{\beta} $ 는 미지 모수(unknown parameter)의 벡터이고, $ \epsilon_t $ 는 비상관 오차(uncorrelated errors)이다. 상수 프로세스는 $ y_t = \beta_0 + \epsilon_t $ 로 일반적 모형의 특수한 경우(member)인 것을 알 수 있다.
앞서 말한바와 같이 프로세스를 단순히 평균낸 것은 수준 변화에 아주 약하게 반응하였고, 이를 보완하기 위해 이동평균이나 지수평활법을 사용하였다. 이러한 스무딩 기법이느 잠재된 기저 패턴(underlying pattern)을 시각화하는 데에 효과적이다.
또는 일반적 모형 집합에 대해 프로세스 수준을 추정하는 데에 $1$차 지수 평활법이 사용될 수도 있다. 이는 상수 프로세스에서는 $ \beta_0 $ 에 대한 추정값과 해
$$ SSE = \sum_{t+1}^T (y_t - \beta_0)^2 $$
제곱오차합은 위와 같다. 여기서 상수 프로세스에 대해 시간에 따라 기하급수적으로 감소하는 가중치를 둔 상태에서의 가중 제곱오차합(weighted sum of squared errors)을 아래와 같이 정의하자.
$$ SSE_W = \sum_{t=0}^{T-1} \theta^t (y_{T-t} - \beta_0)^2 $$
여기서 당연히 $ \lvert \theta \rvert < 1 $ 이다. 이제 최소제곱추정을 통해 $ \hat{\beta}_0 $ 를 구하면 다음과 같다.
$$ \hat{\beta}_0 = (1 - \theta) \sum_{t=0}^{T-1} \theta^t y_{T-t} $$
$ \beta_0 $ 에 대한 최소제곱추정을 구하려면 $ \beta_0 $ 로 미분한 뒤 $ 0 $ 으로 두면 된다. 즉 다음과 같다.
$ \frac{\partial SSE_W}{\partial \beta_0} = -2 \sum_{t=0}^{T-1} \theta^t (y_{T-t} - \hat{\beta}_0) = 0 $
$ \hat{\beta}_0 \sum_{t=0}^{T-1} \theta^t = \sum_{t=0}^{T-1} \theta^t y_{T-t} $
이때 다음을 이용하자.
$ \sum_{t=0}^{T-1} \theta^t = \frac{1 - \theta^T}{1 - \theta} $
또한 $ T $ 가 클 때 $ \theta^T $ 가 $ 0 $ 에 가까워진다는 것을 생각하자. 그렇다면 다음과 같다.
$ \hat{\beta}_0 = (1 - \theta) \sum_{t=0}^{T-1} \theta^t y_{T-t} $
앞서 $ \tilde{y}_T $ 를 구했던 것을 생각하면 $ \hat{\beta}_0 = \tilde{y}_T $ 이다. 즉 $1$차 지수평활법은 시간에 따라 기하급수적으로 감소하는 가중치를 부여하는 상수 프로세스에서의 가중 최소제곱추정(weighted least squares estimate)을 실제로 제공하는 셈이다.
일반적 모형을 다시 확인하면 $ f(t ; \boldsymbol{\beta}) $ 에서 $ t $ 는 어떤 함수라도 될 수 있다. 하지만 실제 응용에서 비계절성 시계열(non-seasonal time series)에는 다항식(polynomial) 형태가 가장 흔하게 쓰이며, 계절성 시계열(seasonal time series)에는 계절적 주기성을 잘 나타내는 다른 형태의 $ f(t ; \boldsymbol{\beta}) $ 를 고려한다. 이 다항식 계열에서 지금까지 다룬 상수 프로세스는 가장 단순한 모형으로 자연스러운 형태인 선형 추세(linear trend) 모형은 $2$차 지수평활법을 통해 확인할 수 있다.
'Statistics > Time Series Analysis' 카테고리의 다른 글
[Time Series Analysis] 지수평활법을 이용한 예측(forecasting) (0) | 2025.04.09 |
---|---|
[Time Series Analysis] 2차 지수평활법(second-order exponential smoothing) (0) | 2025.04.09 |
[Time Series Analysis] 코크란-오컷 방법(Cochrane-Orcutt method)과 예측 및 예측구간 (0) | 2025.04.08 |
[Time Series Analysis] 더빈-왓슨 검정(Durbin-Watson test) (0) | 2025.04.07 |
[Time Series Analysis] 선형회귀모델 적합성 확인(adequacy checking) (0) | 2025.04.07 |