Data Analysis & ML/시계열분석

[시계열분석] 시계열 알고리즘 - 일반 선형확률 과정(4) - ARMAX / SARMAX

YSY^ 2021. 8. 28. 21:40

ARMAX

  • ARMA모델에 X값을 추가한 모델

아래와 같은 시간에 따른 두가지 feature가 있고 최종적으로 consump을 예측하고자 할때, m2도 독립변수로서 사용하는 모델.

# 모델링
## ARIMAX 
fit = sm.tsa.ARMA(raw_using.consump, (1,1), exog=raw_using.m2).fit()
display(fit.summary())

## 잔차 확인
fit.resid.plot()
plt.show()

## 잔차 ACF/PACF
plt.figure(figsize=(10, 8))
sm.graphics.tsa.plot_acf(fit.resid, lags=50, ax=plt.subplot(211))
plt.xlim(-1, 51)
plt.ylim(-1.1, 1.1)
plt.title("Residual ACF")

sm.graphics.tsa.plot_pacf(fit.resid, lags=50, ax=plt.subplot(212))
plt.xlim(-1, 51)
plt.ylim(-1.1, 1.1)
plt.title("Residual PACF")
plt.tight_layout()
plt.show()

잔차의 추세가 없음
ACF, PACF는 거의 자기상관이 없다.

 

ARMAX는 추세제거에는 유리하나 계절성을 제거하지 못한다.

따라서 계절성도 제거해주는 SARMAX를 활용해야 한다.

SARMAX

# SARIMAX 모델링
fit = sm.tsa.SARIMAX(raw_using.consump, exog=raw_using.m2, order=(1,0,0), seasonal_order=(1,0,1,4)).fit()
display(fit.summary())

# 잔차 확인
fit.resid.plot()
plt.show()

# 잔차 ACF/PACF
plt.figure(figsize=(10, 8))
sm.graphics.tsa.plot_acf(fit.resid, lags=50, ax=plt.subplot(211))
plt.xlim(-1, 51)
plt.ylim(-1.1, 1.1)
plt.title("Residual ACF")

sm.graphics.tsa.plot_pacf(fit.resid, lags=50, ax=plt.subplot(212))
plt.xlim(-1, 51)
plt.ylim(-1.1, 1.1)
plt.title("Residual PACF")
plt.tight_layout()
plt.show()

  • ar.S.L4, ma.S.L4는 계절성 데이터만 뽑아서 AR, MA적합을 한 것.
  • 모든 파라미터가 유의함
  • 잔차는 정규분포
  • Ljung-box : p-value가 0.05보다 크므로 잔차의 Autocorrelation은 없다.
  • Heteroskedasticity : 잔차의 등분산성 체크, p-value가 0.05보다 작으므로 등분산성이 아니다라는 것을 확인
  • Jarque-Bera : 정규성 체크, p-value가 0.05보다 작으므로 정규분포를 따른다.

잔차가 White Noise에 가까워졌다.

 

 

해당 포스팅은 패스트캠퍼스의 <파이썬을 활용한 시계열 데이터 분석 A-Z 올인원 패키지> 강의를 듣고 정리한 내용입니다

728x90
반응형