계절성
📋 문서 버전
이 문서는 4개의 버전이 있습니다. 현재 버전 2을 보고 있습니다.
계절성
개요
계절성(Seasonality)은 시계열 데이터에서 일정한 주기로 반복되는 패턴을 의미합니다. 이러한 패턴은 일반적으로 시간의 흐름에 따라 규칙적으로 발생하며, 일일, 주간, 월간, 분기별, 연간 등 다양한 시간 단위에서 관찰될 수 있습니다. 계절성은 경제, 기상, 소매업, 에너지 소비 등 다양한 분야의 데이터에서 중요한 특성으로 작용하며, 시계열 분석 및 예측 모델링에서 반드시 고려해야 할 요소입니다.
예를 들어, 겨울철에 난방비가 증가하거나, 연말 쇼핑 시즌에 소매 매출이 급증하는 현상은 대표적인 계절성의 사례입니다. 계절성을 정확히 파악하고 모델에 반영하면 예측 정확도를 크게 향상시킬 수 있습니다.
계절성의 정의와 특징
정의
계절성은 시계열 데이터에서 고정된 주기를 가지며 반복적으로 나타나는 변동성을 의미합니다. 이는 외부 요인(예: 계절, 휴일, 문화적 관습 등)에 의해 유도되며, 일반적으로 예측 가능하고 반복적인 성격을 가집니다.
주요 특징
- 주기성: 일정한 시간 간격(예: 12개월, 7일 등)으로 동일한 패턴이 반복됨.
- 예측 가능성: 과거의 패턴을 기반으로 미래의 동일한 시점에서 유사한 값을 예상할 수 있음.
- 비추세성: 계절성은 추세(trend)와 독립적이며, 데이터의 장기적인 증가/감소와는 별개임.
계절성의 유형
1. 가법 계절성 (Additive Seasonality)
가법 모델에서는 시계열 데이터가 다음과 같이 분해됩니다:
[ Y_t = T_t + S_t + R_t ]
- (Y_t): 관측값
- (T_t): 추세 성분
- (S_t): 계절성 성분
- (R_t): 잔차(무작위성)
이 모델은 계절 변동의 크기가 시간에 따라 일정할 때 적합합니다.
2. 곱셈 계절성 (Multiplicative Seasonality)
곱셈 모델은 다음과 같이 표현됩니다:
[ Y_t = T_t \times S_t \times R_t ]
이 경우, 계절 변동의 폭이 추세에 따라 증가하거나 감소할 때 사용됩니다. 예를 들어, 매출이 전체적으로 증가함에 따라 연말 할인 시즌의 변동 폭도 커지는 경우 곱셈 모델이 적합합니다.
계절성 탐지 방법
1. 시각화 분석
시계열 그래프를 통해 주기적인 패턴을 직접 관찰하는 가장 직관적인 방법입니다. 예를 들어, 월별 데이터에서 매년 동일한 시기에 피크가 나타난다면 계절성이 존재할 가능성이 높습니다.
2. 자동상관함수 (ACF)
자기상관 함수(Autocorrelation Function)는 특정 시간 지연(lag)에서 데이터가 얼마나 상관되어 있는지를 보여줍니다. 계절성이 있는 데이터는 계절 주기에 해당하는 지연(lag)에서 높은 자기상관을 보입니다.
예: 월별 데이터에서 lag 12에서 높은 상관성을 보인다면 연간 계절성을 의미합니다.
3. STL 분해 (Seasonal and Trend decomposition using Loess)
STL은 비선형 추세와 계절성을 효과적으로 분리할 수 있는 비모수적 방법입니다. 시계열을 추세(Trend), 계절성(Seasonal), 잔차(Remainder)로 분해하여 각 성분을 독립적으로 분석할 수 있게 해줍니다.
from statsmodels.tsa.seasonal import STL
import matplotlib.pyplot as plt
stl = STL(series, seasonal=13)
result = stl.fit()
result.plot()
plt.show()
계절성 조정 (Seasonal Adjustment)
계절성 조정은 데이터에서 계절성 성분을 제거하여 더 명확한 추세나 주기 외 변동을 파악하는 과정입니다. 대표적인 방법으로는:
- X-13ARIMA-SEATS: 미국 국립통계청에서 사용하는 공식적인 계절성 조정 도구.
- SEATS: 계절성 분해를 위한 모델 기반 방법.
- Moving Average 필터: 단순 이동평균을 사용해 계절성 완화.
이러한 조정은 실업률, GDP, 산업 생산 지수 등의 공식 경제 지표에서 자주 사용됩니다.
계절성을 고려한 예측 모델
1. SARIMA (Seasonal ARIMA)
SARIMA는 ARIMA 모델에 계절성 성분을 추가한 확장형입니다. 다음과 같은 형식을 가집니다:
[ SARIMA(p, d, q)(P, D, Q)_m ]
- (m): 계절 주기 (예: 월별 데이터의 경우 (m = 12))
- (P, D, Q): 계절성 AR, 차분, MA 차수
2. Prophet (페이스북)
Prophet은 강한 계절성(일일, 주간, 연간)을 자동으로 탐지하고 모델링할 수 있는 라이브러리입니다. 특히 휴일 효과나 비정형 데이터에 강하며, 사용이 간편합니다.
from prophet import Prophet
model = Prophet(yearly_seasonality=True, weekly_seasonality=True)
model.fit(df)
future = model.make_future_dataframe(periods=365)
forecast = model.predict(future)
관련 개념
- 순환성(Cyclicity): 계절성과 유사하지만 고정된 주기가 없고 경제 사이클 등에 따라 변함.
- 추세(Trend): 장기적인 증가 또는 감소 패턴.
- 비정상성(Non-stationarity): 평균이나 분산이 시간에 따라 변하는 성질로, 계절성과 함께 처리 필요.
참고 자료 및 관련 문서
- Hyndman, R.J., & Athanasopoulos, G. (2021). Forecasting: Principles and Practice (3rd ed.). OTexts.
- statsmodels 공식 문서: https://www.statsmodels.org
- Facebook Prophet 문서: https://facebook.github.io/prophet/
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.