statsmodels 笔记:VAR
Posted UQI-LIUWJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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已经实现了后者) 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]])
以上是关于statsmodels 笔记:VAR的主要内容,如果未能解决你的问题,请参考以下文章
Python数模笔记-StatsModels 统计回归可视化
statsmodels笔记:判断数据平稳性(adfuller)