Stationarity: 왜 Historical Mean이 당신의 Projections에 위험한가

발행: (2026년 1월 5일 오전 06:18 GMT+9)
8 min read
원문: Dev.to

Source: Dev.to

요약

이 기사에서는 시계열에서 정상성 개념을 탐구하고, Augmented Dickey‑Fuller (ADF) 검정을 사용하여 확률적 추세를 진단하는 방법과 전역 평균 편향을 피하기 위해 SARIMAX에서 적분 파라미터 (d)를 설정하는 방법을 다룹니다.

소개

비즈니스 세계에서는 “평균”에 대한 강한 매력이 있습니다. 이해관계자 팀이 2026년 전망을 요청하면, 많은 분석가들의 초기 본능은 2024/2025년의 평균을 계산하고 이를 앞쪽으로 투사하는 것입니다.

재무 또는 전자상거래 시계열 데이터를 다루는 경우, 이 접근법은 일반적으로 잘못되었습니다.

이유는 정상성 때문입니다. 측정값에 강한 추세(상승이든 하락이든)가 있으면, 평균과 분산이 시간에 따라 일정하지 않습니다. 추세가 있는 시계열에 전체 평균을 투사하면 큰 예측 오류가 발생합니다.

이 글에서는 Augmented Dickey‑Fuller (ADF) 테스트를 사용해 전자상거래 데이터에서 이 문제를 어떻게 진단했는지, 그리고 SARIMAX 모델에서 수학적으로 이를 어떻게 수정했는지 보여드립니다.

개념: 단위근과 정상성

ARIMA 계열의 예측 모델이 잘 작동하려면, 시계열은 이상적으로 정상이어야 합니다.

정상성이란?

시계열은 평균, 분산, 자기상관과 같은 통계적 특성이 시간에 따라 일정할 때 정상이라고 합니다. 고정된 값 주위에서 진동합니다.

단위근 문제

많은 비즈니스 지표(예: 매출 또는 가격)는 우리가 단위근이라고 부르는 특성을 가지고 있습니다. 간단히 말해, 시계열이 강한 기억을 가지고 있다는 뜻입니다: 오늘 값은 어제 값에 크게 의존하고, 여기에 무작위 충격이 더해집니다. 이러한 의존성은 확률적 추세를 만들어 시계열이 역사적 평균에서 멀어지게 “드리프트”(편향)합니다.

단위근을 가진 시계열에 고정된 평균을 강제로 적용하려 하면, 모델은 항상 추세를 “쫓아다니게” 되어 체계적인 오류를 발생시킵니다.

진단: Augmented Dickey‑Fuller (ADF) 검정

우리는 단순히 눈대중에만 의존하지 않습니다. 시계열이 정상인지 검증하기 위해 ADF 검정을 사용합니다.

검정 해석 방법

가설설명
(H_0)시계열에 단위근이 있다 (비정상).
(H_1)시계열은 정상이다.

결정 규칙: p‑값이 0.05보다 크면 (H_0)를 기각하지 않으며 (시계열은 비정상). p‑값이 0.05 이하이면 (H_0)를 기각하고 (시계열은 정상).

검정 결과 예시:

Estatística ADF: -2.552426
p‑valor: 0.103234

[Image: 세션 – 시계열 그래프]

해결책: SARIMAX에서 차분

p‑값 > 0.05 로 확인되면, 필수적인 기술적 보정은 차분(통합) 입니다.

절대값 (Y_t) 를 모델링하는 대신, 현재값과 이전값의 차이를 모델링합니다:

[ \Delta Y_t = Y_t - Y_{t-1} ]

이는 추세가 있는 시계열을 “변동”의 정상 시계열로 변환합니다.

SARIMAX 구현

Python에서는 차분 열을 직접 만들 필요가 없습니다. SARIMAX 알고리즘에는 order=(p, d, q) 파라미터가 있으며, 여기서 **d**는 차분 차수(통합 차수)입니다.

위의 ADF 테스트 결과를 바탕으로 모델링 전략을 정의합니다:

from statsmodels.tsa.statespace.sarimax import SARIMAX

# 평균 티켓 (비정상, p‑값 = 0.76) → d = 1
model_ticket = SARIMAX(
    df_main['ticket_medio'],
    order=(1, 1, 1),          # (p, d, q) – 여기서 d=1
    seasonal_order=(0, 0, 0, 0),
    enforce_stationarity=False,
    enforce_invertibility=False
)

result_ticket = model_ticket.fit(disp=False)
print(result_ticket.summary())

참고: 자동 상관 및 부분 자동 상관(ACF/PACF) 분석에 따라 pq(그리고 필요하다면 seasonal_order) 값을 조정하세요.

결론

  • 정상성은 ARIMA 계열 모델의 필수 전제 조건입니다.
  • ADF 테스트를 통해 시계열에 단위근이 존재하는지 빠르게 진단할 수 있습니다.
  • 시계열이 비정상일 경우, 차분(SARIMAX에서 d > 0 지정)을 적용하면 모델이 견고하게 학습할 수 있는 형태로 변환됩니다.

이 흐름을 전자상거래 지표에 적용하면 전체 평균 편향을 피하고, 미래에 대한 보다 신뢰할 수 있는 예측을 만들 수 있습니다.

model_ticket = SARIMAX(
    df_main['ticket_medio'],
    order=(1, 1, 1),                # (AR, 차분, MA)
    seasonal_order=(1, 1, 1, 52)    # 연간 계절성
)
  • ADF 테스트 실행: 지표가 평균에 “붙어 있는지” 혹은 변동하고 있는지를 통계적으로 검증하는 가장 견고한 방법입니다.
  • p‑값 확인: p > 0.05이면 시계열이 비정상이라는 뜻입니다.
  • 차분 사용 (d=1): ARIMA/SARIMAX 모델을 설정해 변동을 예측하고 실제 추세를 포착하세요.

응용 데이터 과학을 수행한다는 것은 모델 수학이 비즈니스의 경제적 현실을 반영하도록 보장하는 것입니다. 비정상성을 무시하면 과거의 정적인 사진만을 보고 미래를 설계하게 됩니다.

참고문헌 및 서지

  • Introduction to Time Series and Forecasting (Brockwell & Davis) – 정상성의 수학적 기초.
  • Statsmodels 문서 – Augmented Dickey‑Fuller.
  • Practical Statistics for Data Scientists (Bruce & Bruce) – 데이터 과학에서 통계 개념의 실용적 적용.
Back to Blog

관련 글

더 보기 »

데이터 사이언스 스킬을 향상시키는 35일 차

최근에 나는 내가 배우는 방식에 무언가 변화가 있음을 느꼈다. 이제는 단순히 무언가가 작동한다는 이유만으로 흥분하지 않는다. 왜 작동하는지, 그리고 무엇이 깨지는지에 더 관심이 있다.

Git이란 무엇인가?

왜 Git이 필요한가? 많은 개발자에게 pendrive는 오래된 프로젝트나 파일을 저장하고 꺼내는 장소에 불과합니다. 하지만 폴더가 너무 많아지고 중복 파일이 …