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数据
对模型的分析
这个model对应的maxlag值
VAR.select_order( maxlags=None, trend='c')
基于每个可用信息标准计算滞后顺序选择
(滞后顺序的选择可能是一个困难的问题。标准分析采用似然检验或基于信息准则的顺序选择。VAR已经实现了后者)
AIC和BIC需要越小越好,算法笔记:ARIMA_UQI-LIUWJ的博客-CSDN博客
通过上面的输出,我们可以发现lag取1或者3的时候比较好
就是把不同的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]])
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)