Data Analysis & ML/시계열분석

[시계열분석] 다변량 선형 확률과정 - 거시경제 VAR 모형화

YSY^ 2022. 2. 20. 21:01

https://ysyblog.tistory.com/298

 

[시계열분석] 다변량 선형 확률과정 - VAR & IRP (백터자기회귀과정, 임펄스응답함수)

다변량 선형 확률과정 필요성 단변량 시계열(Simple/Multiple포함)은 종속변수(Y_t)가 독립변수들에만! 영향을 받는다는 큰 가정 존재 현실적으론 종속변수와 독립변수는 상호 영향을 주고받음 예시:

ysyblog.tistory.com

위 포스팅에 이어 진행됩니다.

 

데이터 로딩 및 시각화

데이터 설명 : 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(투자) 

diff(1) 을 활용한 차분

- 일단 차분 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
반응형