ARIMA

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

ARIMA (자기회귀 누적 이동평균 모델)

1. 개요

ARIMA(AutoRegressive Integrated Moving Average) 모델은 시계열 데이터의 과거 값과 예측 오차를 이용하여 미래의 값을 예측하는 통계적 분석 모델이다. 특히 비정상 시계열을 차분을 통해 정상 시계열로 변환하여 분석하는 모델이라는 점이 핵심적인 정체성이다. 시계열 데이터가 가진 추세(Trend)와 변동성을 수학적으로 모델링하여, 특정 시점 이후의 수치를 예측하는 것을 목적으로 하며, 주로 주가 예측, 수요 예측, 기상 관측 등 단변량 데이터 분석에 널리 활용된다.

2. 기본 개념 및 구성 요소

ARIMA 모델은 이름에서 알 수 있듯이 세 가지 모델의 결합체이다. 각 구성 요소는 시계열 데이터의 서로 다른 특성을 처리한다.

2.1 구성 요소 상세

  1. AR (AutoRegressive, 자기회귀): '자기 자신으로 회귀한다'는 뜻으로, 현재의 값이 과거의 값들에 의존한다는 가정하에 모델링한다. 즉, $y_t$는 $y_{t-1}, y_{t-2}, \dots$의 선형 결합으로 표현된다.
  2. I (Integrated, 누적/차분): 비정상성(Non-stationarity)을 띠는 시계열 데이터를 정상성 데이터로 만들기 위해 현재 값에서 이전 값을 빼주는 차분(Differencing) 과정을 의미한다.
  3. MA (Moving Average, 이동평균): 현재의 값이 과거의 예측 오차(Error term)들의 선형 결합으로 이루어져 있다고 가정한다. 이는 갑작스러운 외부 충격(Shock)이 데이터에 미치는 영향을 모델링하는 데 유용하다.

2.2 파라미터 매칭 표

ARIMA 모델은 보통 $\text{ARIMA}(p, d, q)$ 형태로 표기하며, 각 파라미터의 의미는 다음과 같다.

구성 요소 파라미터 정의 분석적 역할
AR $p$ 자기회귀 차수 과거 값의 영향력을 반영하여 현재 값을 예측
I $d$ 차분 횟수 데이터의 추세(Trend)를 제거하여 정상성 확보
MA $q$ 이동평균 차수 과거의 예측 오차를 반영하여 불규칙 변동(Noise) 처리

3. 모델의 전제 조건: 정상성 (Stationarity)

ARIMA 모델을 적용하기 위해서는 데이터가 정상성(Stationarity)을 가져야 한다. 정상성이란 시간의 흐름에 따라 평균과 분산이 일정하고, 자기공분산이 시차(Lag)에만 의존하며 시간에 의존하지 않는 상태를 말한다.

3.1 정상성 확인: ADF 검정

데이터의 정상성을 통계적으로 검증하기 위해 ADF(Augmented Dickey-Fuller) 검정을 사용한다. - 귀무가설($H_0$): 데이터에 단위근(Unit Root)이 존재한다. (비정상 시계열이다.) - 대립가설($H_1$): 데이터에 단위근이 존재하지 않는다. (정상 시계열이다.) - 판단 기준: $p\text{-value}$가 유의수준(보통 0.05)보다 작으면 귀무가설을 기각하고 정상 시계열로 판단한다.

3.2 차분(Differencing) 과정

ADF 검정 결과 비정상 시계열로 판명될 경우, 차분을 통해 정상성을 확보한다. - 1차 차분: $\Delta y_t = y_t - y_{t-1}$ - 만약 1차 차분 후에도 정상성이 확보되지 않으면 2차, 3차 차분을 수행하며, 이때 $d$ 값이 증가한다.

4. 모델 구축 및 파라미터 결정 과정

최적의 $p, d, q$ 값을 결정하는 과정은 데이터 탐색과 반복적인 검증을 통해 이루어진다.

4.1 ACFPACF 분석

  • ACF (Autocorrelation Function, 자기상관함수): 시차 $k$에 따른 $y_t$와 $y_{t-k}$ 사이의 상관관계를 측정한다.
  • PACF (Partial Autocorrelation Function, 편자기상관함수): 중간 시점의 영향을 제거하고 두 시점 사이의 직접적인 상관관계만을 측정한다.

[차수 결정 기준: 절단점(Cut-off) 분석] 그래프에서 상관계수가 급격히 0으로 떨어지는 지점인 '절단점'을 통해 차수를 결정한다.

모델 ACF PACF 비고
AR($p$) 점진적으로 감소 (Tail-off) 시차 $p$ 이후 0으로 절단 PACF의 절단점으로 $p$ 결정
MA($q$) 시차 $q$ 이후 0으로 절단 점진적으로 감소 (Tail-off) ACF의 절단점으로 $q$ 결정
ARMA($p,q$) 점진적으로 감소 점진적으로 감소 AIC/BIC 등 정보 기준 활용

4.2 모델 선택 기준 (AIC, BIC)

여러 후보 모델 중 최적의 모델을 선택하기 위해 정보 기준(Information Criterion)을 활용한다. - AIC (Akaike Information Criterion): 모델의 적합도와 복잡도(파라미터 수)를 동시에 고려한다. - BIC (Bayesian Information Criterion): AIC보다 파라미터 수에 더 큰 페널티를 부여하여 더 간결한 모델을 선호한다. - 결정 방법: AIC 또는 BIC 값이 가장 낮은 모델을 최적 모델로 선택한다.

5. 모델 활용 및 구현 예시

ARIMA 모델링의 전체 워크플로우는 다음과 같다: 데이터 수집 $\rightarrow$ 시각화 및 정상성 확인(ADF) $\rightarrow$ 차분(d 결정) $\rightarrow$ ACF/PACF 분석(p, q 결정) $\rightarrow$ 모델 학습 $\rightarrow$ 잔차 진단 $\rightarrow$ 미래 예측 $\rightarrow$ 성능 평가.

5.1 Python 구현 코드

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.arima.model import ARIMA
from sklearn.metrics import mean_squared_error, mean_absolute_percentage_error

# 1. 데이터 로드 (노이즈가 포함된 시계열 데이터 생성)
np.random.seed(42)
time = np.arange(100)
# 추세 + 계절성 + 노이즈가 섞인 가상 데이터
data = 10 + 0.5 * time + 10 * np.sin(2 * np.pi * time / 12) + np.random.randn(100) * 2
series = pd.Series(data)

# 2. 정상성 확인 (ADF Test)
result = adfuller(series)
print(f'ADF Statistic: {result[0]:.4f}, p-value: {result[1]:.4f}')

# 3. ARIMA 모델링 (p=1, d=1, q=1 가정)
model = ARIMA(series, order=(1, 1, 1))
model_fit = model.fit()

# 4. 잔차 진단 (Residual Diagnostics)
# 모델이 데이터의 패턴을 충분히 학습했는지, 잔차가 백색잡음(White Noise)인지 확인
model_fit.plot_diagnostics(figsize=(12, 8))
plt.tight_layout()
plt.show()

# 5. 미래 값 예측 (다음 10개 시점)
forecast_steps = 10
forecast = model_fit.forecast(steps=forecast_steps)
print(f'Forecast:\n{forecast}')

# 6. 시각화
plt.figure(figsize=(10, 5))
plt.plot(series, label='Actual')
plt.plot(range(len(series), len(series) + forecast_steps), forecast, label='Forecast', color='red')
plt.title('ARIMA Model Forecast')
plt.legend()
plt.show()

5.2 예측 결과 평가 지표

모델의 예측 성능을 정량적으로 평가하기 위해 다음 지표를 사용한다. - RMSE (Root Mean Squared Error): 예측값과 실제값 차이의 제곱 평균에 루트를 씌운 값이다. 큰 오차에 민감하게 반응한다. $$\text{RMSE} = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2}$$ - MAPE (Mean Absolute Percentage Error): 오차를 실제값으로 나눈 비율의 평균이다. 데이터의 스케일에 상관없이 백분율로 성능을 파악할 수 있어 직관적이다. $$\text{MAPE} = \frac{100\%}{n}\sum_{i=1}^{n}\left|\frac{y_i - \hat{y}_i}{y_i}\right|$$

6. 한계점 및 확장 모델

ARIMA는 강력한 도구이지만 몇 가지 명확한 한계가 존재한다.

6.1 한계점

  • 선형성: 데이터의 비선형적인 패턴(예: 급격한 지수적 증가)을 포착하기 어렵다.
  • 단변량 분석: 오직 과거의 자기 자신 데이터만 사용하므로, 외부 요인(예: 마케팅 비용, 날씨 등)이 결과에 미치는 영향을 반영할 수 없다.
  • 계절성 미반영: 주기적으로 반복되는 계절적 패턴을 처리하는 기능이 부족하다.

6.2 확장 모델

이러한 한계를 극복하기 위해 다음과 같은 확장 모델이 사용된다. - SARIMA (Seasonal ARIMA): ARIMA에 계절성(Seasonality) 파라미터를 추가하여 주기적 패턴을 학습한다. 계절성 주기($S$)를 고려한 차분과 AR, MA 항을 추가하여 계절적 변동이 뚜렷한 데이터에 적합하다. - ARIMAX (ARIMA with Exogenous variables): 외부 변수(Exogenous variables)를 추가하여 다른 변수와의 상관관계를 함께 분석한다. - VAR (Vector AutoRegression): 여러 개의 시계열 변수가 서로 영향을 주고받는 다변량 시계열 분석에 사용된다.

AI 생성 콘텐츠 안내

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

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

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