ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

EViews 三变量 SVAR 识别与脉冲响应实操全流程

2026/9/20 6:27:48 拓冰建站 浏览量
EViews 三变量 SVAR 识别与脉冲响应实操全流程 简介这是一份面向经济学、金融学与管理科学领域实证研究者与高年级学生的 Eviews 操作演示文档聚焦结构向量自回归SVAR的完整建模流程帮助读者解决从单位根检验到脉冲响应、方差分解的落地操作问题。压缩包内仅含 1 个 pptx 文件约 519KB以分步截图与步骤说明的形式呈现软件操作过程体积轻便便于随课讲解或自学对照。内容围绕序列稳定性判断、初始 VAR 构建、AR 根与滞后阶数检验、Granger 因果关系检验、外生变量识别以及在最终 VAR 基础上施加短期与长期约束、估计 SVAR 并开展脉冲响应与方差分解等环节展开还整理了 AB 型模型的可识别条件与约束矩阵填写原则等易错细节。目前已有 1407 人学习适合需要按流程逐步复现建模、对照检查约束设置与检验结果的读者参考。1. 为什么 EViews 里跑 SVAR 卡住的从来不是菜单三个季度序列——产出、物价、利率——丢进 VAR系数表跑出来了脉冲响应也画出来了三条线互相缠绕往上往下都能解释。问题不在操作在于你手上那堆残差是相关的政策的意外变动和产出的意外波动混在同一个方程里谁先谁后说不清。SVAR 要做的就是给这锅粥补上一组有经济含义的约束把它拆回互不相关的结构冲击。它不改变数据也不改变 VAR 的系数估计改的是残差的解释方式。在 EViews 里这一步叫 Estimate Structural Factorization藏在 VAR 对象的 Proc 菜单下点到为止的操作谁都会。真正卡人的是矩阵框里NA往哪放、对角线填 1 还是填NA、什么时候该换成长期约束。很多人是拿一份别人做好的 PPT 开始学的结论都在命令一行没有回去自己复现就断在半路。这篇按一条完整路径走数据准备、简化式 VAR、识别矩阵、脉冲响应与方差分解、历史分解与报错处理。手边有 EViews 就能跟着跑。2. SVAR 的识别逻辑残差协方差矩阵到结构冲击的拆解2.1 简化式残差的协方差矩阵为什么不够用VAR 估计出来的是 $A(L)y_t e_t$。扰动项 $e_t$ 的协方差矩阵 $\Sigma$ 通常是对角线以外都不为零的稠密矩阵元素 $\sigma_{12}$ 表示第一个方程和第二个方程在同一期的意外波动是联动的。这个联动来自两方面真实的结构冲击确实相关或者结构冲击不相关但同一期内多个变量同时被影响。VAR 只告诉你联动存在不告诉你是哪一种。结构式想要的是 $y_t B(L)u_t$$u_t$ 的协方差矩阵是对角阵每个分量代表一个独立的经济冲击。从 $\Sigma$ 走到 $u$ 的路上本质是找一个分解 $\Sigma CC$。$C$ 有 $n^2$ 个自由元素$\Sigma$ 只提供 $n(n1)/2$ 个独立参数缺口是 $n(n-1)/2$ 个。三变量差 3 个条件四变量差 6 个。这就是识别问题的全部来源也是为什么递归识别Cholesky看起来最省事——它一次性塞进去 $n(n-1)/2$ 个零约束代价是强行规定了一期内的因果先后。2.2 短约束与长约束看你的经济叙事在哪一期成立EViews 支持两种常见的写法。短约束写成 $Ae_t Bu_t$$A$ 描述同一期内变量之间的即时反应关系$B$ 一般是单位矩阵或对角矩阵承载冲击的标准差。长约束直接对结构性移动平均系数施加零约束最典型的例子是 Blanchard-Quah 分解需求冲击对产出的长期累积影响为零需求冲击和供给冲击对第二个变量的长期影响也为零。选择标准不是技术难度而是理论叙述落在哪个时间尺度上。价格黏性、政策时滞、市场出清的先后顺序这类说法讲的是同期用短约束。货币中性、购买力平价、自然率假说这类说法讲的是长期用长约束。两种混用要非常小心短约束里隐含的即时因果和长约束里隐含的稳态性质很容易互相矛盾导致矩阵无解。识别方式EViews 中的表达约束数量典型场景递归CholeskyA 为下三角B 为对角$n(n-1)/2$变量有明确快慢之分如政策利率、产出、价格非递归短约束A、B 中按理论置零由零元素个数决定有制度性当期限制如央行只看到滞后信息长期约束长期响应矩阵置零同上货币中性、BQ 分解过度识别零约束多于缺口多于 $n(n-1)/2$需要做 LR 检验判断约束是否被数据拒绝2.3 进 EViews 之前要过的三张检查表很多人跳过这一步直接在非平稳序列上估计 VAR脉冲响应发散再去怀疑识别矩阵写错了。顺序应该反过来。下表是每次跑 SVAR 之前都要过一遍的项目。检查项EViews 操作路径判断标准平稳性序列窗口 View → Unit Root TestADF含常数项形式的 p 值小于 0.05不通过就差分或转 VEC滞后阶数VAR 窗口 View → Lag Structure → Lag Length Criteria多数准则同时指向同一个阶数季度数据一般从 4 起样本短用 HQ稳定性VAR 窗口 View → Lag Structure → AR Roots Table所有根的模小于 1有等于或大于 1 的根先别做结构分解协整同阶单整序列做 Johansen 检验存在协整关系且关心长期改用 VEC 再谈结构识别下面这段是准备阶段常写的 EViews 程序可以直接存成.prg文件反复执行。 打开工作文件季度频率 wfopen macro_q.wf1 对数化处理量纲差异利率本身是比率一般不再取对数 genr dlgdp dlog(gdp) genr dlcpi dlog(cpi) genr r ir ADF 检验的三种模型形式都跑一遍看结论是否一致 dlgdp.uroot(adf, const) dlgdp.uroot(adf, trend) dlgdp.uroot(adf, none) 滞后阶数先估一个长滞后再看准则表 var v1.ls 1 8 dlgdp dlcpi r v1.laglen(8)dlog()是 EViews 内置的差分对数函数等价于一阶差分后再取对数避免手工两步出错。uroot(adf, const)里的第二个参数控制是否含常数项和趋势项三种形式结论打架时优先看与数据图形相符的那一种。laglen(8)里的 8 是最大滞后上限输出会并排列出 LR、FPE、AIC、SC、HQ 五个准则它不会替你选只给你对照。样本量小于 80 时SC 和 HQ 比 AIC 更保守不容易过拟合。3. 在 EViews 里跑通三变量 SVAR 的完整步骤3.1 估计简化式 VAR 并确认 AR 根按准则表选定滞后 4 期后重新估计然后立刻看 AR 根不要急着做结构分解。 按 AIC 和 HQ 的一致结论取 4 期 var v1.ls 1 4 dlgdp dlcpi r AR 根表模全部小于 1 才继续 v1.arroots 残差序列图看有没有明显的结构断点或异常值 v1.makeresids(e_gdp, e_cpi, e_r)arroots输出两张表一张是模和幅角一张是图形。模那一列只要最大值小于 1系统就是稳定的脉冲响应会收敛回零。makeresids把三个方程的残差单独存成序列这一步不是必须的但后面要手工检查残差是否在某个季度出现跳变比如政策突然转向或者统计口径调整有单独序列会顺手很多。3.2 三变量识别方案怎么写出来假设变量顺序是[dlgdp, dlcpi, r]一个常见的短约束方案是这样叙述的产出当期只受自身冲击影响物价和利率的意外变动传不到当期的产出物价当期受产出冲击影响但不受利率冲击影响理由是价格调整有黏性利率对所有冲击当期都有反应因为它是政策变量能实时观察。矩阵位置取值经济含义A(1,2)、A(1,3)0产出当期不受物价、利率冲击影响A(2,3)0物价当期不受利率冲击影响A(2,1)NA物价对产出冲击的当期反应待估A(3,1)、A(3,2)NA利率对两个冲击的当期反应待估A 对角线1归一化把变量自身的尺度吸收进 BB 对角线NA三个结构冲击的标准差待估B 非对角0结构冲击之间同期不相关A 矩阵里 3 个自由参数B 矩阵里 3 个一共 6 个待估量正好对应三变量协方差矩阵的 6 个独立参数属于恰好识别。如果把 A(3,2) 也设成 0就多出一个约束变成过度识别EViews 会用迭代方法估计并给出 LR 统计量检验这个额外约束是否被数据拒绝。3.3 Estimate Structural Factorization 的填法操作路径是在v1对象窗口点 Proc → Estimate Structural Factorization在弹出的文本框里粘贴下面的内容。A 1, 0, 0 NA, 1, 0 NA, NA, 1 B NA, 0, 0 0, NA, 0 0, 0, NA文本框里NA表示自由估计数字表示固定约束。填完点 OKEViews 会输出结构参数的估计值、标准误以及一个 LR 检验如果你加了额外约束。估计失败时最常见的原因是过度识别下迭代不收敛处理办法是先把额外约束去掉退回恰好识别跑一次确认基础方案没问题再逐步加约束。提示B 矩阵对角线填NA和填1的结果不一样。填NA估计的是冲击的标准差脉冲响应图的纵轴单位是原始变量的单位填1强制冲击方差为 1纵轴变成标准化单位做跨模型对比时后者更方便。3.4 换成 Blanchard-Quah 长期约束怎么写长期约束的写法是在同一个文本框里用LR前缀声明LRn(m) 0表示第 n 个结构冲击对第 m 个变量的长期累积响应为零。三变量 BQ 分解常见设定是需求冲击对产出长期无影响需求冲击和供给冲击对第二个变量长期无影响等价于长期响应矩阵是下三角。 长期约束写法示意下标行列编号以对话框下方提示为准 LR2(1) 0 LR3(1) 0 LR3(2) 0约束的个数同样是 3 个恰好识别。跟短约束不同的是这里没有任何关于同期的假设脉冲响应第一期的形状完全由数据决定只在长期上被约束住。代价是 BQ 分解对第二个变量的选择很敏感换一个变量放中间位置结果可能完全不同所以复跑时记得把结论的稳健性一起看。4. 脉冲响应、方差分解与结果怎么读4.1 脉冲响应窗口的四个必调项SVAR 估完之后在对象窗口点 View → Impulse Response弹出的对话框里有几项决定图形意义的东西。设置项常见取值影响Impulse DefinitionStructural结构冲击选它才是 SVAR 的结果选 Residual-One S.D. 出来的是简化式残差冲击Response Horizon20 期季度数据一般 20看长期约束的效果要拉到 40Standard ErrorsMonte Carlo2000 次解析标准误在小样本下偏窄自助法更稳Accumulate Response对水平变量勾选差分变量做完累积才对应水平变量的永久变化 把结构脉冲响应冻结成独立对象便于反复对比 生成后再用 freeze 存档 freeze(irf_baseline) v1.impulsefreeze()把当前窗口的内容固定成表格或图形对象后续重新估计v1不会覆盖它。做多套识别方案对比时每跑完一次都冻结一份最后并排看比每次重新点菜单省事得多。4.2 方差分解为什么对变量顺序敏感递归识别下方差分解的结果会随着变量排序变化。先放的变量其冲击会污染后面所有变量后放的变量其冲击对前面的解释力被压到零。这不是 EViews 的 bug是 Cholesky 分解的数学性质。检验办法很简单把变量顺序换一遍再跑一次。变量顺序产出方差的政策冲击占比说明dlgdp, dlcpi, r较小利率放最后政策冲击对产出的当期贡献被限制为 0r, dlcpi, dlgdp较大利率放最前政策冲击可以当期影响一切dlgdp, r, dlcpi居中折中排序常用于稳健性对照三种排序如果给出一致的经济结论比如政策冲击对产出的贡献都在 10% 到 25% 之间那结论是稳的。如果一种排序说 5%、另一种说 60%说明数据不足以区分这时候应该换非递归识别而不是挑一个好看的排序写进结论。4.3 换识别方式复跑稳健性怎么摆同一份数据至少要跑三套设定基准递归、你主张的理论约束、变量顺序打乱的对照。EViews 里复制对象比重新估一遍快。 复制 VAR 对象数据和滞后阶数保持不变 copy v1 v2 对副本重新做结构分解换 A、B 矩阵 Proc - Estimate Structural Factorization 中粘贴新矩阵 冻结两套脉冲响应改成同一纵轴范围后并排看 freeze(irf_alt) v2.impulsecopy会连同估计结果和残差一起复制源对象不受影响。注意换识别矩阵时不要把滞后阶数也改掉否则两套结果混了两个变化源说不清差异来自哪里。要改滞后阶数就单独做一组。5. 进阶报错排查、历史分解与结果归档5.1 识别矩阵失败的四类原因第一类是矩阵奇异。同一期里给的零约束互相矛盾比如既假设产出当期不影响物价又假设物价当期立即反作用于产出A 矩阵没法求逆。第二类是迭代不收敛。过度识别下 GMM 目标函数在高维参数空间里找不到极小点先把额外约束撤掉退回恰好识别能跑通再一个一个加回来。第三类是秩条件不满足。过度识别时要求 Jacobian 满秩一般在参数初值附近出问题换初始值或改用NA更少的形式。第四类是 AR 根落在单位圆上这种情况问题出在 VAR 本身而不在识别回到 3.1 节检查平稳性。5.2 历史分解把某一期的波动拆成各冲击的贡献在 VAR 对象窗口点 View → Historical Decomposition选择 Decomposition Type 为 StructuralEViews 会把每个变量在样本期内的实际值拆成各个结构冲击的累积贡献加上初始条件。这个功能在写政策评估时特别有用比如 2020 年二季度产出的下滑究竟是需求冲击贡献了多少供给冲击贡献了多少图上能直接读出来。默认输出里有一项 Residual 分量指的是初始条件之外无法被冲击解释的残差如果这一项很大说明模型漏掉了重要变量。5.3 把结果归档成可复现的表最后给一个归档的习惯做法。把每个变量的历史分解结果存成组做逐年累加避免逐季读图。EViews 里用group加矩阵写入的方式最省事。 假设历史分解结果已存为 hd_gdp 等系列 group hd_group hd_gdp_demand hd_gdp_supply hd_gdp_policy 按年累加季度序列每 4 期求和 hd_group.movsum(4) hd_yearly 导出成 CSV路径按自己的工程目录改 hd_yearly.savetxt D:\output\hd_gdp_yearly.csvmovsum(4)是移动求和对季度数据就是最近一年的滚动累计比对单季度数字更能看出冲击贡献的持续性。savetxt导出时第一列是观测标签导入到其他工具里记得把它当时间轴而不是数据列。归档完成后把.prg文件、工作文件、导出的 CSV 一起放在同一个目录下一个人拿到标题就能复现出同样的脉冲响应不用再问矩阵里那个NA到底放哪儿。本文还有配套的精品资源点击获取