
투빅스에서 발표를 기반으로 이글은 작성되었습니다.
안녕하세요!
오늘은 데이터 사이언스에서 매우 중요한 분야 중 하나인 시계열 분석에 대해 다뤄보겠습니다. 시계열 분석은 시간에 따라 변화하는 데이터를 다루는 방법으로, 다양한 응용 분야에서 활용되고 있습니다.
시계열 데이터는 순차적인 시간의 흐름에 따라 기록된 데이터를 의미합니다. 예를 들어, 주가, 일별 기온, 월별 판매량 등이 시계열 데이터에 해당됩니다.
💡 핵심 질문: 과거 데이터가 미래에 어떤 영향을 미치는가?
시계열 데이터는 시간의 흐름에 따른 패턴을 분석하고 미래를 예측하는 데 활용됩니다.
시계열 분석의 가장 큰 목적은 '예측'입니다. 시간에 따른 데이터의 패턴을 이해함으로써, 미래에 발생할 수 있는 사건이나 경향을 예측할 수 있습니다.

📈 응용 분야: 주가 예측, 수요 예측, 음성 분석, 기후 변화 예측 등

시계열 분석은 새로운 패턴을 발견하거나, 대상 간의 차이를 분석할 때, 그리고 반복적인 사건의 패턴을 파악할 때 매우 유용합니다.
시계열 데이터를 효과적으로 분석하기 위해, 데이터는 보통 다음 4가지 요소로 분해됩니다
- 추세(T) - 시간의 흐름에 따라 장기적인 증가나 감소 경향
- 계절성(S) - 특정한 주기(예: 계절, 월, 주 등)마다 반복되는 패턴
- 주기(C) - 일정하지 않은 주기를 가지며, 경제적, 사회적 요인에 의해 발생하는 장기적인 변화.
- 잔차(R) - 위의 세 요소(T, S, C)로 설명되지 않는 불규칙한 변동.
🧩 시계열 데이터 분해식: Y = T + S + C + R

그래프는 시계열 데이터를 네 가지 요소로 분해하여 보여줍니다:
시계열 데이터는 다음과 같은 주요 특징들을 가지고 있습니다. 각 특징은 시계열 분석에서 중요한 역할을 하며, 데이터의 패턴과 변동을 이해하는 데 도움을 줍니다.
| 특징 | 설명 | 중요한 이유 |
|---|---|---|
| 시간 의존성 (Temporal Dependency) | 시간 순서대로 기록되며, 과거 값이 현재 값에 영향을 미침 | 과거 데이터가 미래 예측에 중요하기 때문에, 시간 순서 유지 필요 |
| 추세 (Trend) | 장기적으로 증가하거나 감소하는 경향 | 데이터의 전반적인 방향성을 파악 가능 |
| 계절성 (Seasonality) | 특정 주기로 반복되는 패턴 (예: 월별 판매량 변화) | 주기적인 패턴을 고려한 예측 모델링 가능 |
| 비정상성 (Non-stationarity) | 시간에 따라 평균이나 분산이 변함 | 차분(Differencing)이나 변환(Transformation)으로 안정화 필요 |
| 자기상관 (Autocorrelation) | 과거 값이 미래 값을 예측하는 데 중요한 역할 (오늘 상태가 내일에 얼마나 영향을 미치는지) | 자기상관성을 분석하여 모델 성능 개선 |
이러한 특징들은 시계열 데이터 분석에서 필수적으로 고려해야 할 요소들이며, 이를 통해 데이터를 더 정확하게 이해하고 예측할 수 있습니다.
| 요인 | 설명 | 예시 | 시각적 표현 |
|---|---|---|---|
| 추세 요인 (Trend Factor) | 장기간 혹은 점진적으로 상승하거나 하강하는 패턴 | 국내총생산(GDP), 인구증가율 | 꾸준히 증가하거나 감소하는 선형 그래프 |
| 순환 요인 (Cycle Factor) | 특정 주기 혹은 수년 간격으로 발생하는 주기적인 패턴 | 경기 변동 | 주기적으로 상승과 하강을 반복하는 파형 그래프 |
| 계절 요인 (Seasonal Factor) | 계절적 영향과 사회적 관습에 따라 1년 주기로 발생하는 패턴 | 추석, 설 등 | 주기적인 변동을 나타내는 그래프 |
| 불규칙 요인 (Irregular Factor) | 명확히 설명할 수 없는 요인에 의한 우연한 패턴 | 전쟁, 홍수 등 | 불규칙한 변동을 나타내는 그래프 |

시계열 분석에는 다양한 기법이 존재하며, 전통적인 방법과 확률적인 방법으로 나눌 수 있습니다. 전통적인 기법으로는 평활법과 분해법이 있으며, 확률적인 기법으로는 자기회귀(AutoRegression, AR), 이동평균(Moving Average, MA), 자기회귀이동평균(ARMA), 그리고 자기회귀누적이동평균(ARIMA) 모델이 있습니다.
| 구분 | 상세 기법 |
|---|---|
| 전통적 시계열 분석 기법 | 평활법 (Smoothing Method) |
| 분해법 (Decomposition Method) | |
| 확률적 시계열 분석 기법 | 자기회귀 모델 (AutoRegressive, AR) |
| 이동평균 모델 (Moving Average, MA) | |
| 자기회귀 이동평균 모델 (AutoRegressive Moving Average, ARMA) | |
| 자기회귀 누적 이동평균 모델 (AutoRegressive Integrated Moving Average, ARIMA) |
이 표는 시계열 분석의 요인과 기법을 간결하게 정리하여 이해하기 쉽게 나타낸 것입니다.
정상성은 시계열 데이터 분석에서 매우 중요한 개념으로, 시계열의 통계적 특성이 시간에 따라 변하지 않는 것을 의미합니다. 정상성을 가지는 시계열 데이터는 예측이 더 용이하며, 이를 위해 차분이나 변환이 필요할 수 있습니다.
정상성은 시계열 데이터의 기본적 특성으로, 평균, 분산, 공분산 및 기타 모든 분포적 특성이 일정한 성질을 유지하는 것을 의미합니다. 시계열 자료는 시간의 흐름에 따라 관측된 데이터이며, 분석을 위해서는 정상성을 만족해야 합니다.
| 조건 | 설명 |
|---|---|
| 일정한 평균 | 모든 시점에 대해 일정한 평균을 가짐 |
| 일정한 분산 | 평균이 일정하지 않고 분산도 시점에 의존하지 않음 |
| 일정한 공분산 | 공분산도 단지 시차에만 의존할 뿐 실제 특정 시점에 의존하지 않음 |
| 상황 | 방법 |
|---|---|
| 추세가 보이거나 평균이 일정하지 않은 경우 | - 차분(Difference)을 통해서 비정상 시계열을 가공 |
| - 1차 차분으로 정상성을 띠지 않으면 반복 | |
| 분산이 일정하지 않은 경우 | - 변환(Transformation)을 통해서 비정상 시계열을 가공 |
| - 로그 변환 등 |
전통적인 시계열 분석 기법은 데이터의 특성을 파악하고, 데이터의 패턴을 예측하는 데 사용됩니다. 이러한 기법들은 주로 시계열 데이터의 잡음을 제거하거나, 데이터의 구성 요소를 분해하여 분석하는 데 중점을 둡니다. 전통적 시계열 분석 기법에는 평활법(Smoothing Method)과 분해법(Decomposition Method)이 있습니다.
- 평활법: 데이터의 잡음을 제거하고, 추세와 계절성을 쉽게 파악하기 위해 데이터를 평활화하는 방법입니다.
- 분해법: 시계열 데이터를 추세, 계절성, 주기, 잔차로 분해하여 각각의 구성 요소를 분석하는 방법입니다
평활법은 시계열 데이터에서 불규칙한 변동을 평탄하게 만들어 데이터의 추세와 패턴을 파악하고, 예측값을 계산하는 방법입니다. 데이터의 잡음을 줄이고, 중요한 패턴을 더 명확히 드러내는 데 사용됩니다. 평활법에는 이동평균법(Moving Average Method)과 지수평활법(Exponential Smoothing Method)이 있습니다.

1) 이동평균법 (Moving Average Method)
정의: 이동평균법은 과거부터 현재까지의 시계열 데이터를 일정 기간별로 평균을 계산하여 추세를 파악하고, 이를 바탕으로 미래 값을 예측하는 방법입니다.
설명:
수식:

특징:
장점:
단점:
2) 지수평활법 (Exponential Smoothing Method)
정의: 지수평활법은 시간의 흐름에 따라 최근의 시계열 데이터에 더 많은 가중치(지수평활계수, α)를 부여하여 미래를 예측하는 방법입니다.
설명:
수식:

특징:
장점:
단점:
import pandas as pd
import matplotlib.pyplot as plt
data = pd.Series([100, 102, 101, 105, 110, 115, 117, 120, 125, 130])
moving_avg = data.rolling(window=3).mean()
plt.plot(data, label='Original Data')
plt.plot(moving_avg, label='Moving Average (window=3)', color='red')
plt.legend()
plt.show()
분해법은 시계열 데이터를 여러 구성 요소로 나누어 분석하는 방법입니다. 주로 데이터의 추세, 계절성, 순환성, 그리고 불규칙성을 분리하여 각 요소를 독립적으로 분석합니다. 이를 통해 데이터의 특성을 더 잘 이해하고, 예측 모델의 성능을 높일 수 있습니다.
1) 덧셈분해 (Additive Decomposition)
정의: 시계열 데이터의 변동폭이 시간의 흐름에 관계없이 일정한 경우에 사용합니다.
설명:

특징:
2) 곱셈분해 (Multiplicative Decomposition)
정의: 시계열 데이터의 변동폭이 시간의 흐름에 따라 점차로 커지는 경우에 사용합니다.
설명:

특징:

from statsmodels.tsa.seasonal
import seasonal_decompose
data = pd.Series([10, 12, 15, 13, 18, 20, 24, 28, 35, 40], index=pd.date_range('2024-01-01', periods=10, freq='M'))
result = seasonal_decompose(data, model='additive', period=1)
result.plot()
plt.show()
분해법은 시계열 데이터의 주요 구성 요소를 분리하여 분석하고, 각 요소의 패턴을 명확히 파악함으로써 데이터를 더 잘 이해하고, 예측 정확도를 높이는 데 도움을 줍니다.
확률적 시계열 분석 기법은 데이터의 과거 값이나 오차를 이용하여 미래를 예측하는 모델링 방법입니다. 주로 자기회귀(AR), 이동평균(MA), 그리고 두 모델을 결합한 ARMA 및 ARIMA 모델이 있습니다.
정의: 자기회귀 모델(AR)은 과거의 관측값을 사용하여 현재의 값을 예측하는 모델입니다. 이전 시점들의 데이터가 현재 시점에 얼마나 영향을 미치는지 분석하는 방법으로, 과거 데이터에 대한 의존성을 반영합니다.
수식:

설명: AR 모델은 과거 데이터의 가중합을 기반으로 현재의 값을 예측합니다. 여기서 가중치는 회귀 계수로 결정되며, 이는 모델의 학습 과정에서 추정됩니다.
특징: AR 모델은 자기상관함수(ACF)가 지수적으로 감소하고, 부분 자기상관함수(PACF)가 특정 시점 이후에 절단(cut off)되는 형태를 보입니다.
정의: 이동평균 모델(MA)은 과거의 예측 오차(잔차)를 사용하여 현재의 값을 예측하는 모델입니다. 과거의 오차 항들의 선형 결합으로 미래 값을 추정합니다.
수식:

설명: MA 모델은 이전의 오차 값들이 현재의 데이터 값에 어떻게 영향을 미치는지를 기반으로 예측합니다. 이는 백색 잡음의 가중 합으로 미래 값을 계산합니다.
특징: MA 모델의 자기상관함수(ACF)는 특정 시점에서 절단(cut off)되고, 부분 자기상관함수(PACF)는 지수적으로 감소하는 형태를 보입니다.
정의: ARMA 모델은 자기회귀(AR)와 이동평균(MA) 모델을 결합한 형태로, 과거의 데이터 값과 오차 값을 모두 사용하여 현재의 값을 예측합니다.
수식:

설명: ARMA 모델은 AR 모델의 과거 값들과 MA 모델의 오차 항을 동시에 고려하여 예측의 정확성을 높입니다. 이는 시계열 데이터의 패턴을 더 잘 설명할 수 있는 유연한 모델입니다.
특징: ARMA 모델은 일반적으로 ACF와 PACF가 모두 지수적으로 감소하거나 특정 패턴을 보이는 경우에 적합합니다.
정의: ARIMA 모델은 ARMA 모델에 차분(Differencing)을 추가하여 비정상(Non-stationary) 시계열 데이터를 정상(Stationary) 시계열 데이터로 변환해 분석하는 기법입니다.
수식:

설명: ARIMA 모델은 시계열 데이터가 정상성을 띠지 않을 때, 차분을 통해 이를 정상화한 후, ARMA 모델을 적용합니다. 이를 통해 시계열의 추세를 제거하고 예측의 정확성을 높입니다.
특징: ARIMA 모델의 주요 하이퍼파라미터는 (p) (AR 차수), (d) (차분 차수), (q) (MA 차수)입니다. 적절한 차수 선택이 모델의 성능에 큰 영향을 미칩니다.
이렇게 AR, MA, ARMA, 그리고 ARIMA 모델은 시계열 데이터의 다양한 특성과 패턴을 설명하고 예측하기 위해 사용됩니다. 각 모델의 특성에 따라 적절한 기법을 선택하는 것이 중요합니다.
- 자기회귀 모델(AR): 과거 값들이 현재 값에 미치는 영향을 모델링합니다.
- 이동평균 모델(MA): 잔차의 선형 결합을 통해 미래 값을 예측합니다.
- 자기회귀이동평균 모델(ARMA): 자기회귀와 이동평균 모델을 결합하여 시계열 데이터를 설명합니다.
- 자기회귀누적이동평균 모델(ARIMA): 비정상 시계열 데이터를 정상화한 후 ARMA 모델을 적용하는 방법입니다.

이러한 ACF와 PACF의 패턴을 통해, 시계열 데이터를 적합한 모델로 분석하고 예측할 수 있습니다.
이 글이 시계열 분석을 공부하는 데에 도움이 되었길 바라며, 앞으로도 이와 같은 다양한 데이터 분석 기법들을 적극적으로 활용해 보시길 추천드립니다. 감사합니다!