statsmodels 笔记:VAR

1 数据&库函数

import numpy as np
import pandas
import statsmodels.api as sm
from statsmodels.tsa.api import VAR
mdata = sm.datasets.macrodata.load_pandas().data

dates = mdata[['year', 'quarter']].astype(int).astype(str)

quarterly = dates["year"] + "Q" + dates["quarter"]

mdata = mdata[['realgdp','realcons','realinv']]

mdata.index = pandas.DatetimeIndex(quarterly)

data = np.log(mdata).diff().dropna()

 

2 VAR

        VAR类假设过去的时间序列是平稳的。非平稳数据通常可以通过一阶差分或其他方法转换为平稳数据。对于直接分析非平稳时间序列,一个标准的稳定VAR(p)模型是不合适的。

        判断数据平稳性,可以用:statsmodels笔记:判断数据平稳性(adfuller)_UQI-LIUWJ的博客-CSDN博客

class statsmodels.tsa.vector_ar.var_model.VAR(endog)

        endog就是要传入VAR的数据

举例:

model = VAR(data)

2.1 方法&属性

fit(maxlags) 

喂入 最大的时延(最多考虑过去多久的自回归),fit数据

  

summary

对模型的分析

k_ar

这个model对应的maxlag值

select_order

VAR.select_order(
    maxlags=None,
     trend='c')

基于每个可用信息标准计算滞后顺序选择

(滞后顺序的选择可能是一个困难的问题。标准分析采用似然检验或基于信息准则的顺序选择。VAR已经实现了后者)

 AIC和BIC需要越小越好,算法笔记:ARIMA_UQI-LIUWJ的博客-CSDN博客

通过上面的输出,我们可以发现lag取1或者3的时候比较好

2.2 绘图

2.2.1 plot()

就是把不同的time series分别画出来

m=model.fit(9)
m.plot()

 2.2.2 绘制时间序列自相关函数

ACF理论部分见:算法笔记:ARIMA_UQI-LIUWJ的博客-CSDN博客

m.plot_acorr()

2.2.3 plot_forecast

预测值和上下2个标准差的区间 

 

 3 预测

线性预测器是基于均方误差的最优h步提前预测:

我们可以使用预测函数来生成这个预测。请注意,我们必须指定预测的“初始值”:

m.forecast(data.values[-2:], 5)
'''
array([[ 0.00502587,  0.0053712 ,  0.0051154 ],
       [ 0.00593683,  0.00784779, -0.00302473],
       [ 0.00662889,  0.00764349,  0.00393308],
       [ 0.00731516,  0.00797044,  0.00657495],
       [ 0.00732726,  0.00808811,  0.00649793]])
'''

表示以哪几个数字开始,向后预测几个时间片

array([[ 0.00502587,  0.0053712 ,  0.0051154 ],
       [ 0.00593683,  0.00784779, -0.00302473],
       [ 0.00662889,  0.00764349,  0.00393308],
       [ 0.00731516,  0.00797044,  0.00657495],
       [ 0.00732726,  0.00808811,  0.00649793]])

 

Guess you like

Origin blog.csdn.net/qq_40206371/article/details/121187835