데이터분석/분석-지도학습

다변량 시계열 알고리즘 VAR

씩씩한 IT블로그 2021. 1. 4. 10:52
반응형

 

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"

반응형