[TS] 시계열 이동평균 코드 정리

서쿠·2023년 11월 22일
2

today-snippets

목록 보기
3/5
post-custom-banner

이동 평균은 데이터를 부드럽게 만들거나 추세를 파악하는 데 사용되는 기본적인 시계열 데이터 처리 방법 중 하나입니다. 다양한 종류의 이동 평균이 있으며, 주요 유형은 다음과 같습니다:

1. 단순 이동 평균 (Simple Moving Average, SMA):

단순 이동 평균은 주어진 창 크기 내의 데이터 포인트의 평균을 계산합니다. 모든 데이터 포인트에 동일한 가중치를 부여합니다. 이를 파이썬으로 구현하려면 다음과 같이 할 수 있습니다:

def simple_moving_average(data, window_size):
    sma = data.rolling(window=window_size, win_type="boxcar").mean()
    return sma

2. 지수 가중 이동 평균 (Exponential Moving Average, EMA):

지수 가중 이동 평균은 최신 데이터 포인트에 더 높은 가중치를 부여하고 이전 데이터 포인트에 낮은 가중치를 부여합니다. 이를 파이썬으로 구현하려면 다음과 같이 할 수 있습니다:

def exponential_moving_average(data, alpha):
    ema = data.ewm(alpha=alpha, adjust=False).mean()
    return ema

3. 삼각 이동 평균 (Triangular Moving Average):

삼각 이동 평균은 일정한 크기의 가중 이동 평균을 사용하지만, 가중치를 삼각형 모양으로 배치합니다. 가장 최근 데이터 포인트에 더 높은 가중치를 부여합니다. 이를 파이썬으로 구현하려면 다음과 같이 할 수 있습니다:

def triangular_moving_average(data, window_size):
    weights = np.array(range(1, window_size+1))
    tma = data.rolling(window=window_size).apply(lambda x: np.sum(x * weights) / np.sum(weights))
    return tma
def triangular_moving_average(data, window_size):
    tma = data.rolling(window=window_size, win_type="triang").mean()
    return tma

4. 가중 이동 평균 (Weighted Moving Average):

가중 이동 평균은 각 데이터 포인트에 다른 가중치를 부여하여 특정 데이터 포인트를 중요하게 고려하는 데 사용됩니다. 가중치는 사용자가 정의하며, 시계열 데이터의 특성에 따라 조절할 수 있습니다. 이를 파이썬으로 구현하려면 사용자가 정의한 가중치를 사용하여 평균을 계산하면 됩니다.

def weighted_moving_average(data, weights):
    wma = data.rolling(window=len(weights)).apply(lambda x: (x * weights).sum() / weights.sum())
    return wma

각각의 이동 평균 유형은 다른 데이터 특성에 대해 다른 결과를 제공합니다. 데이터의 성격과 분석 목적에 따라 적절한 이동 평균 유형을 선택해야 합니다.

profile
Always be passionate ✨
post-custom-banner

0개의 댓글