이동평균(Moving Average)은 시계열 데이터를 분석하는 데 사용되는 통계적 방법으로, 데이터의 변동을 평활화(smoothing)하여 추세를 파악하고 예측하는 데 유용합니다. 이동평균은 일정한 기간의 데이터 평균을 계산하여 시계열 데이터의 잡음을 제거하고 기본 패턴을 더 명확히 볼 수 있도록 합니다.
\(\)이동평균의 종류
1.단순 이동평균 (Simple Moving Average, SMA):
- 일정한 기간 동안의 데이터 평균을 계산합니다.
- 각 데이터 포인트의 가중치는 동일합니다.
- 예를 들어, (n)일 단순 이동평균은 최근 (n)일 동안의 데이터 포인트 평균을 계산합니다.
- 수식:
\[
SMA_t = \frac{1}{n} \sum_{i=0}^{n-1} x_{t-i}
\]
여기서 \(SMA_t\)는 시점 \(t\)의 이동평균 값이고, \(x_{t-i}\)는 시점 \(t-i\)의 데이터 포인트입니다.
2.가중 이동평균 (Weighted Moving Average, WMA):
- 각 데이터 포인트에 서로 다른 가중치를 부여하여 평균을 계산합니다.
- 최근 데이터 포인트에 더 높은 가중치를 주어, 최신 정보를 더 반영할 수 있습니다.
- 수식:
\[
WMA_t = \frac{\sum_{i=0}^{n-1} w_i x_{t-i}}{\sum_{i=0}^{n-1} w_i}
\]
여기서 \(w_i\)는 가중치입니다.
3.지수 이동평균 (Exponential Moving Average, EMA):
- 최근 데이터 포인트에 더 큰 가중치를 부여하지만, 모든 과거 데이터 포인트를 고려합니다.
- 지수적으로 감소하는 가중치를 사용하여, 최근 데이터가 더 큰 영향을 미칩니다.
- 수식:
\[
EMA_t = \alpha x_t + (1 – \alpha) EMA_{t-1}
\]
여기서 \(\alpha\)는 평활 상수\(smoothing factor\)로, 일반적으로 \(0 < \alpha < 1\)입니다.
이동평균의 응용
1.금융:
- 주식 가격, 환율 등 금융 시계열 데이터를 분석하여 추세를 파악하고 예측하는 데 사용됩니다.
- 예를 들어, 이동평균선을 이용한 기술적 분석(Technical Analysis)에서, 주가가 이동평균선 위에 있을 때는 상승 추세로, 아래에 있을 때는 하락 추세로 간주합니다.
2.기계학습:
- 시계열 예측 모델의 특징(feature)을 생성하거나, 데이터 전처리 과정에서 노이즈를 제거하는 데 사용됩니다.
3. 제조 및 품질 관리:
- 생산 라인의 데이터 변동을 분석하여 품질 관리를 개선하고, 이상 탐지에 사용됩니다.
이동평균의 장단점
장점:
- 단순성: 계산이 간단하고 직관적입니다.
- 노이즈 제거: 데이터의 잡음을 줄여주어 추세를 더 명확히 파악할 수 있습니다.
- 유연성: 다양한 기간과 가중치를 조절하여 원하는 평활화 효과를 얻을 수 있습니다.
단점:
- 지연: 최근 변화에 대한 반응이 느릴 수 있습니다. 특히 단순 이동평균의 경우, 급격한 변화에 민감하지 않습니다.
- 모든 데이터 반영: 특히 지수 이동평균은 과거 모든 데이터를 고려하기 때문에, 오래된 데이터가 큰 영향을 미칠 수 있습니다.
예제: 이동평균 계산
파이썬을 사용하여 간단한 이동평균을 계산하는 예제를 살펴보겠습니다.
import numpy as np
import matplotlib.pyplot as plt
# 시계열 데이터 생성 (예: 주가 데이터)
np.random.seed(42)
data = np.cumsum(np.random.randn(100)) + 50
# 단순 이동평균 계산
def simple_moving_average(data, window):
sma = np.convolve(data, np.ones(window), 'valid') / window
return sma
# 기간 설정
window = 5
sma = simple_moving_average(data, window)
# 시각화
plt.figure(figsize=(12, 6))
plt.plot(data, label='Original Data')
plt.plot(np.arange(window-1, len(data)), sma, label=f'SMA (window={window})', color='red')
plt.legend()
plt.title('Simple Moving Average')
plt.show()
위 예제에서는 numpy
와 matplotlib
를 사용하여 단순 이동평균을 계산하고 시각화합니다. 이동평균의 기간(window)을 조정하여 평활화 효과를 확인할 수 있습니다.
예제2 : 이동평균 그래프

위 그림은 시계열 데이터에 대해 다양한 이동평균을 적용한 결과를 시각화한 것입니다.
- Original Data: 검정색 실선으로 표시된 원본 시계열 데이터입니다.
- Simple Moving Average (SMA): 빨간색 점선으로 표시된 단순 이동평균입니다. 각 데이터 포인트의 가중치는 동일합니다.
- Weighted Moving Average (WMA): 녹색 점선으로 표시된 가중 이동평균입니다. 최근 데이터 포인트에 더 높은 가중치를 부여합니다.
- Exponential Moving Average (EMA): 파란색 점선으로 표시된 지수 이동평균입니다. 최근 데이터 포인트에 더 큰 가중치를 부여하지만, 모든 과거 데이터 포인트를 고려합니다.
이 그림은 각 이동평균 방법이 데이터의 변동을 평활화하여 추세를 파악하는 데 어떻게 사용되는지 보여줍니다. SMA는 가장 단순한 방법으로 모든 데이터 포인트를 동일하게 취급하며, WMA와 EMA는 최근 데이터를 더 중시하여 빠른 변화를 더 잘 반영합니다.