빅데이터 분석/Python

[seasonal_decompose] 시계열 데이터 분해

Colin Kim 2022. 7. 20. 22:07
반응형

 

statsmodels.tsa.seasonal의 seasonal_decompose를 이용해서 추세, 계절성, 잔차를 파악할수 있다.

statsmodels.tsa.seasonal. season_decompose (
    x , 
    model = 'additive' , 
    filt = None , 
    period = None , 
    two_sided = True , 
    extrapolate_trend = 0 )
  • x : 시계열 데이터
  • model : additive, multiplicative 두가지 계절성분 유형
  • filt : 계절 성분을 필터링하기 위한 필터 계수
  • period : 기간. 시계열 데이터가 pandas 객체가 아니거나 x의 인덱스에 빈도가 없는 경우 사용
  • two_sided : 필터링에 사용되는 이동 평균 방법으로 True(기본값)이면 필터를 사용하여 중심 이동 평균이 계산됩니다. False인 경우 필터 계수는 과거 값에만 적용
  • extrapolate_trend : 0으로 설정하면 컨볼루션으로 인한 추세는 이 많은(+1) 가장 가까운 점을 고려하여 양쪽 끝에서 외삽된 선형 최소 제곱입니다(또는 two_sided가 False인 경우 단일 것). 'freq'로 설정하면 freq 가장 가까운 점을 사용합니다. 이 매개변수를 설정하면 경향 또는 잔류 성분에 NaN 값이 없습니다.

 

plt.rc("font", family="Malgun Gothic")
mpl.rc('axes', unicode_minus=False)
res = sm.tsa.seasonal_decompose(data,freq=12)
fig = res.plot()
fig.set_figheight(8)
fig.set_figwidth(15)
plt.show()

  • 트렌드(Trend) : 연도별 크기의 윈도우를 움직여가며, 관측치들의 평균을 측정  
  • 계절성(Seasonal) : 각 월별로 데이터를 모아 평균을 측정. 각 주기의 계절성은 트렌드에 대한 상대적인 증가 혹은 감소를 나타내므로 합이 0이 되도록 조정된다.  
  • 잔차(residual) : 원 데이터에서 앞서 도출한 트렌드와 계절성의 값을 제거한 나머지 값이다.    

2000년부터 지속적으로 상승하는 추세가 있으며,

계절성이 강하게 있고, 겨울에 비해 봄과 가을 수출액이 높고 여름에 다소 떨어짐  

최근으로 올 수록 residual이 커지는 경향을 보인다. 즉, 수출액 절대적인 크기가 커짐에 따라 수치적으로 변동성도 커졌다. 

 

시계열 데이터 분석하고, 어떤 분석 모델을 사용해야하는지 statsmodels의 seasonal_decompose를 이용하여 유추할수 있다.

 

 

반응형