반응형
VAR알고리즘
벡터자기회귀(VAR) : 단변량 자기회귀의 일반적인 형태로서 여러개의 Y값이 시차에 따라 서로 영향을 주는 식(종속변수 y가 여러개)
(1) var(1) : 시차 1까지 식에 포함시킴
(2) var(2) : 시차 2까지 식에 포함시킴
코드 예시
<example>
- 데이터 로딩 및 확인
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]
display(raw_use)
# 데이터 시각화
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()
# VAR 모형적합
raw_use_return = raw_use.diff(1).dropna()
fit = sm.tsa.VAR(raw_use_return).fit(maxlags=2) #var2 모형 (2단위시간 전까지 값을 사용, Y_t=A1*Y_t-1+A2*Y_t-2+e_t, k=3)
display(fit.summary())
# # 예측 및 시각화
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()
*출처 : 패스트캠퍼스 "파이썬을 활용한 시계열 데이터분석 A-Z"
반응형