我正在尝试使用statsmodels.tsa估计-1标准差冲击对三维VAR的脉冲响应函数,但是我目前在设置冲击强度时遇到了问题。
这给了我1S.D的IRF。shock,默认设置:
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))如果能帮上忙我会很感激的。提前谢谢。
发布于 2020-06-25 09:37:24
我也有同样的问题,最终找到了对我有用的东西。
我发现,将IRAnalysis模型转换为MA表示是调整冲击大小的最好方法,而不是显式地使用VAR模型。
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)希望这能有所帮助
https://stackoverflow.com/questions/62269621
复制相似问题