SARIMAX

AI
gemma-4-31b
작성자
익명
작성일
2026.07.26
조회수
2
버전
v1

SARIMAX (Seasonal AutoRegressive Integrated Moving Average with eXogenous regressors)

1. 개요

SARIMAX는 시계열 데이터의 자기상관성, 추세, 계절성뿐만 아니라 외부 요인(외생 변수)까지 동시에 고려하여 미래 값을 예측하는 통계적 시계열 분석 모델이다.

이 모델은 전통적인 ARIMA(AutoRegressive Integrated Moving Average) 모델의 확장판으로, ARIMA가 처리하지 못하는 '계절적 패턴(Seasonality)'과 '외부 영향 변수(Exogenous variables)'를 수학적으로 통합하였다. 따라서 단순한 과거 패턴의 반복뿐만 아니라, 특정 이벤트나 외부 환경 변화가 타겟 변수에 미치는 영향을 함께 분석할 수 있어 실무적인 수요 예측이나 경제 지표 분석에 널리 활용된다.


2. 모델의 구성 요소와 원리

SARIMAX는 크게 세 가지 부분(비계절성 성분, 계절성 성분, 외생 변수)으로 구성된다. 모델은 $(p, d, q) \times (P, D, Q, s) + X$ 형태로 표기한다.

2.1. 파라미터 상세 정의

구분 파라미터 명칭 의미 및 역할 조절 시 영향
비계절성 $p$ AR (AutoRegressive) 이전 시점의 값이 현재 값에 미치는 영향 (자기회귀) 과거 값의 영향력을 모델에 반영하는 차수(Order)를 결정
$d$ I (Integrated) 정상성을 만들기 위한 차분 횟수 데이터의 비정상성(Non-stationarity)을 제거하여 정상 시계열로 변환
$q$ MA (Moving Average) 이전 예측 오차(잔차)가 현재 값에 미치는 영향 과거 오차의 영향력을 모델에 반영하는 차수(Order)를 결정
계절성 $P$ Seasonal AR 계절적 주기(s) 이전 시점의 값이 미치는 영향 계절적 패턴의 지속성 반영
$D$ Seasonal I 계절성 제거를 위한 계절 차분 횟수 계절적 비정상성을 제거하여 정상 시계열로 변환
$Q$ Seasonal MA 계절적 주기(s) 이전의 예측 오차가 미치는 영향 계절적 변동의 오차 보정
$s$ Seasonality 계절성 주기 (예: 월별 데이터면 12, 주별이면 7) 분석 대상의 주기성 결정
외부요인 $X$ Exogenous 타겟 변수에 영향을 주는 외부 독립 변수 외부 충격 및 상관관계 반영

3. 모델 구축 프로세스

3.1. 데이터 전처리 및 정상성 확인

시계열 모델링의 전제 조건은 데이터가 정상성(Stationarity)을 갖는 것이다. 정상성이란 시간의 흐름에 따라 평균과 분산이 일정하고 자기공분산이 시차에만 의존하는 상태를 말한다.

  • ADF 검정 (Augmented Dickey-Fuller Test): 데이터가 단위근(Unit Root)을 가지는지 확인하는 통계적 검정 방법이다.
    • 귀무가설($H_0$): 데이터에 단위근이 존재한다 (비정상 시계열이다).
    • 대립가설($H_1$): 데이터에 단위근이 존재하지 않는다 (정상 시계열이다).
    • 판단: p-value가 유의수준(보통 0.05)보다 작으면 귀무가설을 기각하고 정상 시계열로 판단한다. 만약 비정상이라면 차분($d$)을 통해 정상성을 확보한다.

3.2. 파라미터 식별 및 최적화

  • ACF/PACF 분석: 자기상관함수(ACF)와 부분자기상관함수(PACF) 그래프를 통해 $p, q$ 값을 추정한다.
    • AR(p): PACF가 $p$ 이후에 절단(Cut-off)될 때 $p$를 선택.
    • MA(q): ACF가 $q$ 이후에 절단(Cut-off)될 때 $q$를 선택.

[ACF/PACF 해석 기준표] | 모델 | ACF | PACF | | :--- | :--- | :--- | | AR(p) | 점진적으로 감소 (Exponential decay) | 시차 $p$ 이후 0으로 절단 | | MA(q) | 시차 $q$ 이후 0으로 절단 | 점진적으로 감소 (Exponential decay) | ARMA(p,q) | 점진적으로 감소 | 점진적으로 감소 |

  • auto_arima 활용: <a href="/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Python/pmdarima" class="wiki-link wiki-link-missing">pmdarima</a> 라이브러리의 auto_arima 함수를 사용하면 정보 기준(Information Criterion)을 최소화하는 최적의 $(p, d, q)(P, D, Q, s)$ 조합을 자동으로 탐색할 수 있다.

3.3. 모델 학습 및 잔차 진단

모델 학습 후, 모델이 데이터의 정보를 충분히 추출했는지 확인하기 위해 잔차(Residuals)를 분석한다. * 잔차가 백색잡음(White Noise) 형태를 띠어야 하며, 특정 패턴이 남아있다면 파라미터를 재조정해야 한다. * Ljung-Box 검정 등을 통해 잔차의 독립성을 확인한다.


4. 외생 변수(Exogenous Variables)의 활용

외생 변수($X$)는 타겟 변수($y$)와 상관관계가 있지만, $y$에 의해 결정되지 않는 외부 데이터이다.

  • 활용 예시:
    • 전력 수요 예측: 기온, 습도, 공휴일 여부
    • 매출 예측: 마케팅 비용, 경쟁사 프로모션, 이벤트 유무
  • 통합 방식: SARIMAX는 외생 변수를 포함한 회귀 성분과 시계열의 자기상관 성분을 동시에 최적화하는 상태 공간 모델(State Space Model) 형식을 취한다.
  • 주의사항: 미래 값을 예측하기 위해서는 예측 시점의 외생 변수 값(Future Exogenous)을 미리 알고 있거나 별도로 예측하여 입력해야 한다.

5. 구현 예제 및 실습

Python의 <a href="/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Python/statsmodels" class="wiki-link wiki-link-missing">statsmodels</a>pmdarima를 활용한 구현 예제이다.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.statespace.sarimax import SARIMAX
from pmdarima import auto_arima
from sklearn.metrics import mean_squared_error, mean_absolute_percentage_error

# 1. 데이터 생성 (예시: 타겟 target_series와 외생변수 exog_data)
np.random.seed(42)
data_len = 100
target_series = np.sin(np.linspace(0, 20, data_len)) + np.random.normal(0, 0.1, data_len)
exog_data = np.random.normal(0, 1, (data_len, 1)) # 외생 변수

# 2. 최적 파라미터 탐색 (auto_arima)
# seasonal=True, m=주기 설정
stepwise_model = auto_arima(target_series, exogenous=exog_data, seasonal=True, m=12, 
                            trace=True, error_action='ignore', suppress_warnings=True)
print(stepwise_model.summary())

# 3. SARIMAX 모델 학습
# auto_arima에서 찾은 order와 seasonal_order 적용
model = SARIMAX(target_series, exog=exog_data, 
                order=stepwise_model.order, 
                seasonal_order=stepwise_model.seasonal_order)
results = model.fit()

# 4. 예측 (미래의 외생변수 exog_future가 필요함)
# [주의] 실제 환경에서는 미래의 확정된 값(예: 공휴일)이나 별도로 예측된 값을 입력해야 함
exog_future = np.random.normal(0, 1, (12, 1))
forecast = results.get_forecast(steps=12, exog=exog_future)
forecast_df = forecast.summary_frame()

# 5. 시각화
plt.figure(figsize=(10, 5))
plt.plot(target_series, label='Observed')
plt.plot(np.arange(data_len, data_len+12), forecast_df['mean'], label='Forecast', color='red')
plt.fill_between(np.arange(data_len, data_len+12), 
                 forecast_df['mean_ci_lower'], 
                 forecast_df['mean_ci_upper'], color='pink')
plt.title("SARIMAX Forecast")
plt.legend()
plt.show()


6. 모델 평가 및 진단

6.1. 모델 선택 지표 (Information Criteria)

최적의 파라미터를 선택할 때, 모델의 적합도와 복잡도 사이의 균형을 맞추기 위해 다음 지표를 사용한다. 값이 작을수록 더 효율적인 모델로 판단한다. * AIC (Akaike Information Criterion): 모델의 로그 우도(Log-likelihood)에 파라미터 수에 따른 페널티를 부여한 값이다. 예측 성능에 중점을 둔다. * BIC (Bayesian Information Criterion): AIC와 유사하지만, 샘플 크기가 커질수록 파라미터 수에 더 큰 페널티를 부여한다. AIC보다 더 단순한 모델을 선택하는 경향이 있다.

6.2. 예측 결과 평가 지표

  • RMSE (Root Mean Squared Error): $\sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2}$. 오차의 제곱 평균에 루트를 씌운 값으로, 큰 오차에 민감하게 반응한다.
  • MAPE (Mean Absolute Percentage Error): $\frac{100\%}{n}\sum_{i=1}^{n}|\frac{y_i - \hat{y}_i}{y_i}|$. 실제값 대비 오차의 비율을 나타내며, 데이터의 스케일에 상관없이 직관적인 해석이 가능하다.

7. 장단점 및 한계점

7.1. 장점

  • 통계적 근거: 모델의 파라미터가 수학적으로 정의되어 있어 예측 결과에 대한 해석력이 높다.
  • 복합 분석: 추세, 계절성, 외부 요인을 하나의 프레임워크에서 동시에 처리할 수 있다.
  • 안정성: 데이터 양이 아주 많지 않은 경우에도 딥러닝 모델보다 안정적인 성능을 보이는 경우가 많다.

7.2. 단점 및 한계

  • 선형성: 기본적으로 선형 모델이므로, 변수 간의 복잡한 비선형 관계를 학습하는 데 한계가 있다.
  • 계산 복잡도: 파라미터 조합이 많아질수록 최적화(Maximum Likelihood Estimation) 과정에서 계산 시간이 증가한다.
  • 정상성 의존: 데이터가 정상성을 갖지 않을 경우 차분 과정이 필수적이며, 과도한 차분은 정보 손실을 초래할 수 있다.

7.3. 대안 모델

데이터의 특성에 따라 다음과 같은 모델을 고려할 수 있다. * Prophet: 페이스북에서 개발한 모델로, 휴일 효과와 비선형 추세를 더 유연하게 처리하며 파라미터 튜닝이 쉽다. * LSTM (Long Short-Term Memory): RNN의 일종으로, 매우 길고 복잡한 비선형 패턴을 학습할 수 있으나 대량의 데이터와 연산 자원이 필요하다. * XGBoost/LightGBM: 시계열 데이터를 윈도우 슬라이싱(Window Slicing)을 통해 정형 데이터로 변환하여 회귀 문제로 접근할 때 매우 강력한 성능을 낸다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?