logo

STL 분해

LOESS

  • 국소 회귀 평활(LOESS, Locally Estimated Scatterplot Smoothing)
  • 시계열의 각 부분에서 시간 t에 대한 국소 회귀를 적용하여 매끄러운 곡선을 추정

STL 분해

  • STL: LOESS를 사용한 계절성과 추세 분해
    • Seasonal and Trend decomposition using LOESS
  • R. B. Cleveland, W. S. Cleveland, McRae, Terpenning의 1990년 방법
  • 특징:
    • 정해진 함수 모양에 제한되지 않는 계절 패턴 추정
    • 계절 성분이 시간에 따라 변하는 경우에도 적용
    • 추세와 계절 성분의 매끄러운 정도 조절
    • 이상점의 영향 조절

실습 준비

  • 월별 전자 장비 주문 지수를 연·월순으로 정리
df = pd.read_excel('elecequip.xlsx')
long_form = pd.melt(df, id_vars=['year'], var_name='month', value_name='demand')
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
          'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
long_form['month'] = pd.Categorical(long_form['month'], categories=months, ordered=True)
ym = long_form.sort_values(['year', 'month']).dropna().reset_index(drop=True)

STL 적용

  • period: 계절성 주기
  • 월별 데이터에서 1년 주기는 12
  • .fit(): 추세·계절·나머지 성분 추정
from statsmodels.tsa.seasonal import STL
result = STL(ym.demand, period=12).fit()  # 월별 데이터의 1년 주기
result.plot();
실행 결과
<Figure size 640x480 with 4 Axes>

LOESS로 전자 장비 주문 지수의 추세·계절·나머지 성분을 추정한 STL 분해 결과

  • 그래프 순서: 관측값(demand), 추세(Trend), 계절 성분(Season), 나머지 성분(Resid)

이상점의 영향 조절

  • robust=True: 일시적으로 크게 이탈한 관측값의 영향을 추세와 계절 성분에 적게 반영
STL(ym.demand, period=12, robust=True).fit().plot()
실행 결과
<Figure size 640x480 with 4 Axes>
<Figure size 640x480 with 4 Axes>

이상점의 영향을 줄여 추정한 STL 분해 결과

추세의 매끄러움

  • trend: 추세를 평활하는 구간의 길이
  • 값이 클수록 더 매끄러운 추세 추정
  • period보다 큰 홀수로 지정
STL(ym.demand, period=12, trend=13).fit().trend.plot()  # 주기 12보다 큰 홀수
실행 결과
<Axes: >
<Figure size 640x480 with 1 Axes>

trend를 13으로 지정하여 추정한 전자 장비 주문 지수의 추세

계절 성분의 매끄러움

  • seasonal: 계절 성분을 평활하는 구간의 길이
  • 값이 클수록 계절 성분이 더 매끄럽게 변함
  • 3 이상의 홀수로 지정. 기본값은 7
  • 예제의 seasonal=3도 유효한 설정
STL(ym.demand, period=12, seasonal=3).fit().seasonal.plot()  # 계절 성분의 평활 구간
실행 결과
<Axes: >
<Figure size 640x480 with 1 Axes>

seasonal을 3으로 지정하여 추정한 전자 장비 주문 지수의 계절 성분

퀴즈

문제 1 / 5맞음: 0힌트: 0틀림: 0채점중: 0남음: 5

LOESS의 원리를 가장 잘 설명한 것은 무엇인가요?

  • ○전체 시계열에 하나의 직선을 맞춘다.
  • ○시계열의 각 부분에 국소 회귀를 적용하여 매끄러운 곡선을 추정한다.
  • ○각 해의 같은 달에 항상 동일한 값을 배정한다.
  • ○직전 관측값을 다음 모든 시점의 값으로 반복한다.

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.

Previous
시계열 분해