资料名称: statsmodels 的向量自回归(VAR)与向量误差修正模型(VECM)文档(statsmodels.tsa.vector_ar 模块,stable 版本文档)
帖内资料: VAR 的导入、拟合、滞后阶选择、预测、脉冲响应、Granger 因果与正态性/白噪声检验;VECM 的构造、协整秩选择(Johansen 检验)、拟合与预测;官方 macrodata 宏观示例(realgdp/realcons/realinv 对数差分)
时间覆盖: 文档对应 statsmodels 0.15.0(stable 版);示例数据集为 statsmodels 内置 macrodata(美国宏观季度数据)
许可与引用: statsmodels 采用 BSD 3-Clause 许可;文档与示例引用请注明 statsmodels 及版本;本次未逐字取得页面许可条款
适用任务: 用 statsmodels 做多变量时间序列的 VAR/VECM 建模、选滞后阶、预测、脉冲响应与协整分析;找官方文档入口与最小可运行示例
statsmodels 的 statsmodels.tsa.vector_ar 模块把向量自回归(VAR)和向量误差修正模型(VECM)放在同一个文档里,是做多变量时间序列的官方入口。下面按"VAR 怎么用 → VECM 怎么用 → 官方宏观示例"的顺序,把文档里的接口和最小示例说清楚,并给出文档与数据集入口。
statsmodels VAR/VECM 文档:从入口到最小示例
statsmodels.tsa.vector_ar 同时覆盖 VAR 与 VECM 两类模型:VAR 用于平稳的多变量序列,VECM 用于存在协整关系(单位根+长期均衡)的序列。文档给出的类都可以通过 statsmodels.tsa.api 访问。
statsmodels.tsa.vector_ar 模块里的 VAR 接口
文档的 VAR 部分从官方示例出发,导入、建模型、拟合一条线走完:
- import numpy as np
- import pandas
- import statsmodels.api as sm
- from statsmodels.tsa.api import VAR
- mdata = sm.datasets.macrodata.load_pandas().data
- mdata = mdata[['realgdp', 'realcons', 'realinv']]
- data = np.log(mdata).diff().dropna()
- model = VAR(data)
文档特别提醒:VAR 类假设输入的各时间序列已经平稳,非平稳或带趋势的数据通常要先做差分(示例里就是对宏观变量取对数再差分)。直接用非平稳序列套一个普通 VAR(p) 并不合适。
VAR:拟合、选阶、预测与脉冲响应
拟合与滞后阶选择
- results = model.fit
(2):直接指定滞后阶为 2。
- results = model.fit(maxlags=15, ic='aic'):给定最大滞后阶,按信息准则(ic 支持 aic/bic/hqic/fpe)自动选阶。
- model.select_order
(15):独立做阶数选择,返回 LagOrderResults;results.summary() 里会同时给出 AIC、BIC、HQIC、FPE 四个准则值。
预测
- lag_order = results.k_ar 取出实际采用的滞后阶。
- results.forecast(data.values[-lag_order:],
5):需要提供最近 k_ar 个观测作为初值,给出未来 5 期预测。
- results.forecast_interval(...) 会带上渐近标准误;results.plot_forecast
(10) 直接画出预测区间。
脉冲响应
- irf = results.irf
(10):做 10 期脉冲响应,返回 IRAnalysis 对象。
- irf.plot(orth=False) 画非正交化响应;irf.plot(impulse='realgdp') 只看某个冲击变量;irf.plot_cum_effects(orth=False) 画累计效应。文档注明正交化用误差协方差矩阵的 Cholesky 分解,所以结果会随变量排序变化。
诊断检验
- results.test_causality('realgdp', ['realinv', 'realcons'], kind='f'):Granger 因果(支持 Wald 或 F 检验)。
- results.test_whiteness():残差白噪声(Portmanteau)检验;results.test_normality():误差正态性(Jarque-Bera 型)检验。
- results.plot() 与 results.plot_acorr() 做输入序列和自相关的可视化。
VECM:协整秩、构造与预测
VECM 用来刻画多个存在长期随机趋势(单位根)的序列之间的短期偏离,形式为 Δy_t = Π y_{t-1} + Γ1 Δy_{t-1} + … + u_t,其中 Π = αβ′。
协整秩与滞后阶选择
- coint_johansen(endog, det_order, k_ar_diff):Johansen 协整秩检验。
- select_coint_rank(endog, det_order, k_ar_diff):计算协整秩。
- select_order(data, maxlags, ...):基于信息准则选滞后阶(与 VAR 同名函数对应 VECM 用法)。
构造与拟合
- VECM(endog, k_ar_diff=..., coint_rank=..., deterministic=...):deterministic 用 "n"/"co"/"ci"/"lo"/"li" 及组合(如 "colo"、"cili")表示协整关系内/外是否含常数与线性趋势,对应文档列出的五种情形 I–V。
- .fit() 得到 VECMResults。
结果与预测
- results.predict(steps=
10):计算未来值,还可传入 alpha、exog_fc、exog_coint_fc。
- results.irf(periods=
10):脉冲响应;results.plot_forecast(steps)、results.summary()、results.test_granger_causality(...)、results.test_whiteness()、results.test_normality() 与 VAR Results 一一对应。
官方宏观示例:macrodata
文档的 VAR 示例直接用 statsmodels 内置的 macrodata 数据集(美国实际 GDP、消费、投资等季度数据),选取 realgdp、realcons、realinv 三个变量,做对数差分后拟合 VAR
(2)。这个数据集是跑通 VAR/VECM 流程最省事的内置样本,不需要自己下载外部文件,适合照着改自己的数据。
按需求选哪个
第一次上手多变量时间序列、序列已经平稳 → 直接上 VAR;要看预测或脉冲响应 → 用 forecast/irf;关心变量间谁影响谁 → test_causality;序列之间存在长期均衡(协整)→ 改用 VECM,先用 coint_johansen/select_coint_rank 定秩再 fit。文档入口与 macrodata 数据集入口都放在回复里。
────────────────
下面把 VAR/VECM 模块文档、VECMResults 与 VARResults 文档、macrodata 数据集说明、以及 statsmodels 时间序列用户指南的入口放在回复里,照着点就能找到上面每个接口。


雷达卡



京公网安备 11010802022788号







