시계열 분석 2. 정상성은 왜 필요할까요?

약 2분 소요

과거의 관계를 미래에도 사용할 수 있을까요?

작년에 배운 규칙이 올해에도 통하려면 무엇이 필요할까요? 적어도 자료가 만들어지는 방식의 일부는 유지되어야겠죠. 시계열에서는 이런 생각을 정상성(stationarity)이라는 개념으로 정리합니다.

stationary는 ‘변하지 않는’이라는 뜻인데요. 관측값이 매번 같다는 뜻은 아닙니다. 관측값은 계속 움직이더라도, 그 뒤에 있는 평균이나 시점 사이의 관계가 일정할 수 있습니다. 먼저 백색소음의 조건을 떠올려 보세요.

예측과 분석에서 어떤 도움이 될까요?

예측에서는 과거 자료에서 얻은 관계를 미래로 이어 사용합니다. 평균과 분산이 계속 바뀌면 단순히 같은 관계를 적용하기 어려워지겠죠. 분석에서는 여러 시점의 정보를 모아 같은 성질을 추정할 수 있게 해 줍니다.

다만 정상성은 모든 예측 방법의 필수조건은 아닙니다. 추세·계절성·변하는 수준을 직접 다루는 모형도 있습니다. 정상성을 가정하는 모형이라면 그 가정에 맞는 부분을 분리하거나 변환해야 한다고 이해하면 좋겠습니다.

강정상성은 무엇을 유지하나요?

강정상성(strict stationarity)은 어느 시점들을 골라도, 같은 시간만큼 옮긴 확률변수들의 결합분포가 같다는 조건입니다.

\[(X_{t_1},\ldots,X_{t_k}) \overset{d}{=} (X_{t_1+h},\ldots,X_{t_k+h}).\]

이 조건은 모든 양의 정수 $k$, 모든 시점의 선택, 이동 후에도 정의되는 모든 $h$에 대해 성립해야 합니다. 여기서 $\overset{d}{=}$는 관측값이 같다는 뜻이 아니라 분포가 같다는 뜻입니다.

각 시점의 주변분포만 같다고 충분한 것도 아닙니다. 시점 사이의 관계까지 담은 결합분포가 유지되어야 합니다. 주어진 모형에서 이를 증명할 수는 있지만, 유한한 관측 자료만으로 모든 시점의 분포를 확인할 수는 없겠죠.

약정상성은 어떤 조건일까요?

평균과 공분산만으로 분석하는 데 필요한 조건을 따로 생각할 수 있습니다. 이를 약정상성(weak stationarity), 또는 공분산 정상성이라고 말합니다.

\[E[X_t]=\mu,\qquad E[X_t^2]<\infty, \qquad \operatorname{Cov}(X_t,X_{t+h})=\gamma(h).\]

평균은 시점과 무관한 상수이고, 이차 모멘트는 유한해야 합니다. 자기공분산은 시점 $t$ 자체가 아니라 시간 간격 $h$에만 의존해야 하는데요. $h=0$을 넣으면 분산도 $\gamma(0)$이라는 같은 유한 값이 됩니다.

강정상성이면서 유한한 이차 모멘트를 가지면 약정상성도 성립합니다. 하지만 강정상성이어도 분산이 존재하지 않을 수 있고, 약정상성만으로 모든 결합분포가 유지되는 것도 아닙니다. 공동 정규 과정에서는 평균·공분산이 결합분포를 결정하므로 두 조건의 관계가 더 단순해집니다.

백색소음과 랜덤워크를 비교해 볼까요?

백색소음은 평균이 0이고 자기공분산이 다음과 같습니다.

\[\gamma(h)=\begin{cases}\sigma_a^2,&h=0,\\0,&h\ne0.\end{cases}\]

따라서 약정상성을 만족합니다. iid 백색소음이면 강정상성도 만족하지만, 무상관 조건만 둔 약한 백색소음에 강정상성까지 자동으로 붙여서는 안 됩니다.

반면 $X_0=0$에서 출발해 독립인 백색소음을 누적하는 랜덤워크는 어떨까요?

\[X_t=X_{t-1}+a_t=\sum_{j=1}^{t}a_j, \qquad \operatorname{Var}(X_t)=t\sigma_a^2.\]

평균이 0이더라도 분산이 시간에 따라 커지므로 약정상성이 아닙니다. 평균이 일정하다는 조건만으로는 충분하지 않다는 예입니다.

set.seed(311)
noise <- rnorm(300)
walk <- cumsum(noise)
stable <- arima.sim(model = list(ar = 0.7), n = 300)
old_par <- par(mfrow = c(2, 1))
plot.ts(stable, main = "Stationary AR(1)", ylab = "Value")
plot.ts(walk, main = "Random walk from zero", ylab = "Value")
par(old_par)

한 번 그린 그림만으로 정상성을 확정할 수는 없습니다. 다만 일정한 수준 주변으로 돌아오는 경로와 변동이 누적되는 경로의 차이를 살펴보는 데 도움이 됩니다. 아래 예에서는 여러 랜덤워크를 만들어 시점별 분산도 비교합니다.

set.seed(312)
paths <- replicate(1000, cumsum(rnorm(100)))
round(apply(paths[c(10, 50, 100), ], 1, var), 1)

이론상 분산은 각각 10, 50, 100입니다. 실험값은 유한한 반복 횟수 때문에 그 근처로 나올 것입니다.

비정상 자료는 어떻게 다루나요?

결정적인 추세는 회귀식으로, 반복되는 계절 패턴은 계절 성분으로 나누어 볼 수 있습니다. 확률적으로 수준이 누적되는 자료에는 차분(differencing)을 검토합니다. 변동 폭이 수준과 함께 커지면 로그 변환도 생각할 수 있겠죠.

어떤 방법이든 적용했다고 자동으로 정상성이 생기는 것은 아닙니다. 변화점·분산 변화·남아 있는 의존성을 다시 살펴야 합니다. 추세를 제거한 잔차가 반드시 백색소음이라는 가정도 별도로 확인해야 합니다.

무엇을 기억하면 좋을까요?

정상성은 ‘시간이 지나도 같은 값’이 아니라 ‘시간을 옮겨도 같은 확률적 성질’에 관한 조건입니다. 앞으로 특별한 언급이 없으면 정상성은 유한한 이차 모멘트를 가진 약정상성을 뜻하겠습니다.

다음 글에서는 $\gamma(h)$를 구체적으로 해석하는 자기상관을 알아보겠습니다.

직접 생각해 보기와 참고 자료

  1. 평균이 같고 분산만 증가하는 과정은 약정상성일까요?
  2. 추세가 있는 자료를 예측할 수 있다는 사실과 정상성 가정을 만족한다는 말은 어떻게 다를까요?

이 글은 기존 티스토리 글을 옮기고, 정상성의 조건과 예외를 보완한 것입니다.

댓글남기기