이동평균(Moving Average)

이동평균(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()

              위 예제에서는 numpymatplotlib를 사용하여 단순 이동평균을 계산하고 시각화합니다. 이동평균의 기간(window)을 조정하여 평활화 효과를 확인할 수 있습니다.

              예제2 : 이동평균 그래프

              위 그림은 시계열 데이터에 대해 다양한 이동평균을 적용한 결과를 시각화한 것입니다.

              • Original Data: 검정색 실선으로 표시된 원본 시계열 데이터입니다.
              • Simple Moving Average (SMA): 빨간색 점선으로 표시된 단순 이동평균입니다. 각 데이터 포인트의 가중치는 동일합니다.
              • Weighted Moving Average (WMA): 녹색 점선으로 표시된 가중 이동평균입니다. 최근 데이터 포인트에 더 높은 가중치를 부여합니다.
              • Exponential Moving Average (EMA): 파란색 점선으로 표시된 지수 이동평균입니다. 최근 데이터 포인트에 더 큰 가중치를 부여하지만, 모든 과거 데이터 포인트를 고려합니다.

              이 그림은 각 이동평균 방법이 데이터의 변동을 평활화하여 추세를 파악하는 데 어떻게 사용되는지 보여줍니다. SMA는 가장 단순한 방법으로 모든 데이터 포인트를 동일하게 취급하며, WMA와 EMA는 최근 데이터를 더 중시하여 빠른 변화를 더 잘 반영합니다.

              댓글 달기

              이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

              위로 스크롤