https://ysyblog.tistory.com/298
위 포스팅에 이어 진행됩니다.
데이터 로딩 및 시각화
데이터 설명 : https://www.statsmodels.org/0.6.1/datasets/generated/macrodata.html
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statsmodels
import statsmodels.api as sm
# 데이터 로딩
raw = sm.datasets.macrodata.load_pandas().data
dates_info = raw[['year', 'quarter']].astype(int).astype(str)
raw.index = pd.DatetimeIndex(sm.tsa.datetools.dates_from_str(dates_info['year'] + 'Q' + dates_info['quarter']))
raw_use = raw.iloc[:,2:5]
# 데이터 시각화
raw_use.plot(subplots=True, figsize=(12,5))
plt.tight_layout()
plt.show()
raw_use.diff(1).dropna().plot(subplots=True, figsize=(12,5))
plt.tight_layout()
plt.show()
실제 GDP = 실제 CON(소비) + 실제 INV(투자)
- 일단 차분 1회해서 사용(상대적으로 정상화 되었다고 간주)
Var 모형 적합
# VAR 모형적합
raw_use_return = raw_use.diff(1).dropna()
fit = sm.tsa.VAR(raw_use_return).fit(maxlags=2)
display(fit.summary())
- realgdp 은 realgdp, realcon, realinv의 시차 L1 모두와 , realcon의 시차 L2에 영향을 줌
- realcon 은 realgdp, realcon, realinv에 시차 L1, L2 둘다 영향을 줌
- realinv 은 realgdp, realcon, realinv에 시차 L1만 영향을 줌
- 즉, realcon, realgdp, realinv 순으로 가장 다른 변수에 영향을 많이 받는다.
모형 예측 및 시각화
# 예측 및 시각화
forecast_num = 20
# pred_var = fit.forecast(fit.model.endog[-1:], steps=forecast_num) # 점추정
# pred_var_ci = fit.forecast_interval(fit.model.endog[-1:], steps=forecast_num) #구간추정
fit.plot_forecast(forecast_num)
plt.tight_layout()
plt.show()
임펄스반응함수 추정
# 임펄스반응함수 추정
fit.irf(forecast_num).plot()
plt.tight_layout()
plt.show()
y가 세개이므로 9개의 조합이 나온다
해석 예시(X -> Y)
- realgdp -> realgdp : 단기적으로는 음수로 바뀌지만 0으로 수렴한다.
- realgdp -> realcons : gdp가 증가한다고 해서 소비가 감소하다가 늘어난다.
- realinv -> realcons : 실제 투자가 증가하면 실제 소비도 증가하다가 0으로 수렴한다.
- realcon -> realgdp : 소비가 증가하면 실제 gdp가 상당히 증가하다가 0으로 수렴한다.
- realinv -> realgdp : 투자가 증가하면 실제 gdp가 소폭 증가하다가 0으로 수렴한다.
- => gdp를 설명하기 위해서는 realinv보다 realcon이 더 설명력이 있음
잔차진단
# 잔차진단
fit.plot_acorr()
plt.tight_layout()
plt.show()
조금 튀는게 있지만 대부분 White Noise 쪽에 가깝다.
해당 포스팅은 패스트캠퍼스의 <파이썬을 활용한 시계열 데이터 분석 A-Z 올인원 패키지> 강의를 듣고 정리한 내용입니다
728x90
반응형
'Data Analysis & ML > 시계열분석' 카테고리의 다른 글
[시계열분석] 다변량 선형 확률과정 - 그랜져 인과관계 (Granger Causality) (0) | 2022.06.06 |
---|---|
[시계열분석] 다변량 선형 확률과정 - VAR & IRP (백터자기회귀과정, 임펄스응답함수) (0) | 2022.02.20 |
[시계열 분석] 정확도를 높이기 위한 Prophet 파라미터 활용 (0) | 2022.02.13 |
[시계열 분석] Prophet (0) | 2021.12.19 |
[시계열분석] 시계열 알고리즘 - 선형확률과정의 분석사이클 자동화 (Auto ARIMA)(2) - 항공사 승객수요 Auro-ARIMA 모델링 (0) | 2021.10.17 |