我正在尝试使用 statsmodels.tsa 估计 -1 标准差冲击对 3 维 VAR 的脉冲响应函数,但是我目前在设置冲击幅度方面遇到问题。
这给了我 1 s.d. 的 IRF。震动,默认:
import numpy as np
import statsmodels.tsa as sm
model = sm.vector_ar.var_model.VAR(endog = data)
fitted = model.fit()
shock= -1*fitted.sigma_u
irf = sm.vector_ar.irf.IRAnalysis(model = fitted)
函数 IRAnalysis 接受一个参数 P,一个设置冲击的上对角矩阵,我在查看源代码时发现了这一点。然而如下所示输入 P 似乎没有任何作用。
irf = statsmodels.tsa.vector_ar.irf.IRAnalysis(model = fitted, P = -np.linalg.cholesky(model.fitted_U))
我真的很感激一些帮助。 预先感谢。
我也有同样的问题,终于找到了对我有用的东西。
我发现将 VAR 模型转换为其 MA 表示是调整冲击大小的最佳方法,而不是明确使用 IRAnalysis。
from statsmodels.tsa.vector_ar.irf import IRAnalysis
J = fitted.ma_rep(T)
J = shock*np.array(J)
这将为您提供 T 周期内 irfs 的输出。
我还想要我的图上有标准误差带,所以我也做了一些与该特定函数类似的事情。
G, H = fitted.irf_errband_mc(orth=False, repl=1000, steps=T, signif=0.05, seed=None, burn=100, cum=False)
希望这有帮助