资讯动态

EViews中VAR模型建模全流程:从单位根检验到脉冲响应

发布时间:2026/10/16 19:18:40 来源:尧图企业网站定制
1. 为什么回归模型不够用了VAR建模的适用场景做时间序列实证分析的朋友迟早会遇到一个问题手里握着好几个经济变量利率、物价、产出、货币供应量谁影响谁谁先动谁后动影响会持续多久。如果直接拿这些变量做线性回归先不说内生性问题光是“哪个变量是解释变量、哪个是被解释变量”这一关就能吵半天——你说是利率影响产出别人可以说产出下降导致利率被动调整互为因果的时候单方程回归的结果根本没法定性。这时候就该VAR模型上场了。VAR的全称是Vector Autoregression向量自回归。它的核心思想很朴素不预先假定谁是谁的原因把一个系统里的所有变量都当作内生变量每个变量都写成自身和其他变量滞后值的线性函数一起放进方程组里估计。这种做法本质上就是把数据里的动态关系“放出来说话”而不是强行套上理论框架。上世纪80年代这个模型被正式提出后很快成了宏观计量和金融实证的标配工具原因就是它绕开了传统结构模型的识别难题对变量之间的动态联系刻画得又稳又灵活。EViews做VAR是多数人入门时的首选。它不像R和Python那样要写大量代码也不用记一堆包和函数名图形界面点几下就能完成建模、检验、画图。更难得的是EViews对VAR的配套功能非常完整——滞后阶数选择、稳定性检验、脉冲响应、方差分解、Granger因果检验都做成了现成菜单分析结果可以直接复制进论文或报告里。对硕士论文、实证研究、课题分析这类场景EViews的效率确实高得没话说。这篇文章不打算讲太深的理论推导重点就是把EViews里做VAR的完整操作链路给你捋一遍从数据准备、单位根检验、滞后阶数选择到模型估计、稳定性检验、脉冲响应和方差分解再到Granger因果检验最后聊几个实操中高频踩坑的地方。每一步都会告诉你“为什么要这么操作”避免你只是机械地点击菜单却不知道为什么结果对不上。在动手之前先说一下适用边界。VAR模型适合分析多个相关时间序列之间的动态互动预测效果也不错但它对数据长度有要求——每个方程要估计的参数很多样本量太小的话自由度不够结果会非常不稳。另外VAR是一个“没有理论”的模型它给出的脉冲响应和方差分解反映的是数据自身的统计规律解释的时候要结合业务背景不能直接当成结构性因果关系来用。这些边界我在后面的段落里会反复提到它们直接决定你的结论靠不靠谱。2. 建模前必做的数据体检从导入到单位根检验2.1 数据整理和导入的正确姿势很多人模型跑出来不显著或者结果诡异问题根源根本不在模型本身而是数据一开始就没弄干净。VAR对数据质量非常敏感第一步要做的就是把数据整理成标准格式。常见的数据源是Excel或者CSV。建议一列放一个变量第一行放变量名不要放中文列名尽量用英文字母比如y、x1、x2这种免得后面命令操作时编码出问题。日期或时间列单独放第一列EViews识别时间标签靠的就是这一列。打开EViews后新建工作文件的路径是File → New → Workfile。弹出的对话框里要选数据频率年度数据选Annual季度数据选Quarterly月度数据选Monthly日度数据选Daily。这个选择直接决定后面滞后阶数的含义比如月度数据滞后1期就是1个月季度数据滞后1期就是1个季度一定不能选错。选好频率后要填起始时间和结束时间。日期格式EViews做得很宽松1990、1990Q1、1990M01都认。建好工作文件后用File → Import → Import from File导入Excel或CSV数据。导入时系统会问数据排列方式选By Observation按观测值排列即可然后把变量名一一对应过去。这里有一个容易被忽视的细节导入完成后立刻双击每个序列检查数据范围和实际样本是否一致。Excel里如果有空行、合并单元格、带小计的数据尾行EViews会直接读进来导致样本区间里出现NA值。后面做滞后阶数选择时只要有一个NA值就会报错得不偿失。2.2 平稳性检验ADF单位根检验的操作和判读VAR建模的前提是数据平稳。如果直接用非平稳序列做VAR回归结果很可能出现“伪回归”——两个本来没有关系的变量因为都有上涨趋势直接建模会得到非常显著的系数实际上全是假象。平稳性的判断标准是均值、方差不随时间变化任意两个时间点的协方差只取决于时间间隔而不是具体时点。经济变量里价格、GDP、货币供应量这类水平值通常都不平稳而它们的差分增长率、变化量往往就平稳了。EViews里做ADF检验Augmented Dickey-Fuller Test非常方便。打开一个序列双击进入数据视图然后点View → Unit Root Test。对话框里需要设置三样东西检验类型有三种Intercept带截距项、Trend and Intercept带趋势项和截距项、None都不带。选哪个要看序列的走势图。序列大致围绕一个常数上下波动选Intercept有明显线性上升或下降趋势选Trend and Intercept看起来围绕0波动选None。实际操作中大多数序列至少带截距所以Intercept是默认且最常用的选择。滞后长度可以手动指定也可以让软件自动选择建议选Automatic信息准则用Schwarz对应SC准则最大滞后期软件会按样本量自动给出。自动选择的好处是省心而且SC在模型选择上偏保守配合ADF检验可以降低误判概率。检验结果主要看t统计量和对应的P值。原假设是“序列存在单位根”也就是非平稳。如果P值小于0.05拒绝原假设说明序列平稳如果P值大于0.05不能拒绝原假设说明序列非平稳需要差分处理。2.3 非平稳怎么办差分处理与协整逻辑假设你检验下来发现三个变量都是非平稳的别慌这一步是常态。常规做法是对每个序列做一阶差分然后重新检验差分序列是否平稳。方法是直接在序列视图里点Proc → Generate by Equation输入dy d(y)这条命令生成原序列的一阶差分序列。把差分后的序列再做一次ADF检验如果通过了说明原序列是一阶单整序列通常记作I(1)。这里要特别提醒一点VAR模型既可以用平稳的差分序列来建模也可以在某些条件下用非平稳的水平值直接建模。如果几个变量都是I(1)且存在协整关系即它们的某种线性组合是平稳的那么直接用水平值做VAR会损失长期信息更好的做法是建立向量误差修正模型VECM。但VECM的设定比VAR复杂很多教材和论文在实证分析时仍然选择把差分序列做成平稳后跑VAR——这种做法并不是错的但解释时要改变结论的语义你分析的其实是变量的增长率或变动量之间的动态关系而不是水平值之间的关系。对多数实证需求来说流程可以简化为先检验水平值的平稳性非平稳就差分然后基于平稳序列做VAR。这个方法简单稳妥踩坑概率最低。3. EViews核心操作七步走从创建VAR到输出结果3.1 创建VAR对象和填写变量类型数据准备好之后就可以正式建模了。EViews里最简单的入口是Quick → Estimate VAR也可以在工作文件窗口用命令方式输入var model01.ls y x1 x2命令方式的好处是一次性完成创建和估计适合笔记本式操作菜单方式适合一步步操作能看清每个选项的含义。这里我用菜单方式讲解。在Estimate VAR对话框中最上边需要填两个关键区域。第一个是Endogenous Variables内生变量把你要分析的所有变量名填进去不需要写常数项EViews会自动加。第二个是Lag Intervals滞后区间这个决定VAR的滞后结构。先解释一下滞后区间的填法。VAR(p)模型表示每个方程都包含所有变量的1到p阶滞后。如果你想建立VAR(2)模型在Lag Intervals里填“1 2”即可EViews会自动把内生变量的1期和2期滞后项全部纳入。如果业务逻辑显示季节性很强比如月度数据有12个月的周期你可以在滞后区间里填“1 2 12”这样只估计1期、2期和12期滞后中间的滞后项被省略。这种“季节性滞后”写法在月度金融数据里很常见。外生变量Exogenous Variables那一栏默认填“c”也就是常数项。这个不用动除非你有特殊的外部变量想要加入VAR系统比如政策虚拟变量可以填在这里。3.2 滞后阶数的科学选择逻辑很多人在这一步犯大忌——直接凭感觉填个“1 2”或者为了论文好看故意多填几阶。滞后阶数选错了后果很直接阶数太少残差存在自相关模型遗漏动态关系阶数太多待估参数数量剧增样本自由度不够估计精度大幅下降脉冲响应图也会变得很不稳定。正确做法是在模型估计完成后用EViews自带的准则来选择。刚建好的VAR对象是带着估计结果生成的在结果窗口点View → Lag Structure → Lag Length Criteria然后输入最大滞后阶数比如20或你根据理论判断的上限软件会一次性算出从1阶到最大阶数的多个信息准则值。判断规则是看哪些阶数被大多数准则“选中”。EViews会在每一行的最优位置打星号表格底部还会汇总每个准则建议的阶数。实际应用中最常参考的是LR检验、FPE最终预测误差、AIC赤池信息准则、SC施瓦茨准则、HQ汉南奎因准则这五个。如果AIC建议8阶、SC建议1阶那种常见的矛盾情况可以结合样本量和残差检验做权衡——样本量大的时候优先考虑AIC偏学术的研究更重视SC对简洁性的惩罚。一般表态是选择星号最多的那个阶数这是我试过很多次之后的默认策略。需要注意的是滞后阶数选择使用的样本区间会因为滞后丢失前导样本所以每次重新选阶数之前最好先确认一下样本范围。把滞后阶数定下来之后重新用Estimate对话框填入这个阶数再次估计模型后续分析都用这个模型来做。3.3 估计结果初读系数、R方、F统计量估计结果输出后你会看到一个分块表格每个内生变量对应一个方程。每一行是各个解释变量包括自身和其他的滞后项以及常数项列依次是系数、标准误、t统计量和P值。初学者最容易犯的错误是拿着单个方程的系数显著性去做经济学解释。VAR模型的单个系数没有直观解释意义——它表示某个滞后变量的单位变化对当前被解释变量的偏效应但这种“偏效应”在动态模型里叠加了所有其他方程的影响单独看任何一个数字都会误判方向。所以对VAR的系数表大家一般只看整体拟合效果比如每个方程的R方、调整R方、F统计量然后直接把系数表放进论文附录即可正文分析是围绕脉冲响应和方差分解来写的。不过整个模型的整体质量不能只看R方。R方在时间序列模型里天然偏高不具可比性。真正需要重点检查的是接下来的稳定性检验。3.4 稳定性检验是底线AR根图怎么看估计完VAR、选完滞后阶数之后下一件事永远是稳定性检验。操作路径是View → Lag Structure → AR Roots Table或者AR Roots Graph。AR根表会给出模型特征方程的每一个根以及它们的模Modulus。判断标准非常明确所有根的模都小于1模型就稳定只要有任何一个根的模大于等于1模型就是不稳定的后面的脉冲响应和方差分解结果全部没有意义。AR根图把这个问题可视化得特别好——画了一个单位圆每个根在复平面上对应的点都展示出来。如果一个点恰好落在圆外不用犹豫这个模型必须重做。常见的补救方法有三种第一增加滞后阶数让动态关系拟合得更充分第二减少内生变量个数VAR对自由度非常敏感变量多了模型容易变得脆弱第三检查数据是否有异常值或结构性突变必要时引入虚拟变量。这步操作从头到尾只需要几秒钟时间但平时做实证分析时只要看到有人的VAR结果里没贴AR根图我都会提醒一句初审很容易直接退稿。这就是一个看起来不起眼、却直接决定模型生死的关键节点。4. 看不懂脉冲响应和方差分解结果解读实操指南4.1 脉冲响应函数一个冲击如何传导脉冲响应函数Impulse Response FunctionIRF是VAR模型的精华。它回答的问题是在某个内生变量受到一个标准差的随机冲击或叫创新后系统内所有变量在未来若干期会发生什么样的变化路径。这样理解会更直观。假设利率、物价、产出三个变量构成一个VAR系统。给利率一个“意外上升”的冲击本期利率的变化会传导到下一期的物价和产出上下一期的物价和产出变化又会影响再下一期的利率和其他变量层层传递。脉冲响应函数把每一期的净影响给描成曲线让你清楚看到冲击的传播路径、峰值时间和衰减速度。在EViews里操作路径是View → Impulse Response → Impulse Response参数含义如下Display Information里可以设置脉冲变量Impulses和响应变量Responses。默认会生成所有组合的响应图变量多的时候图特别多主次不分。建议一次只选一组关键的变量组合比如“利率冲击对产出的响应”单独画图这样更清晰。Periods是响应期数普通实证研究选10到20期即可。月度数据建议至少选12期让脉冲响应充分展开到一年以上周期年度数据选10期也行。Response Standard Errors选Monte Carlo置信区间设为±2个标准差这样响应线旁边会自动画出95%的置信带结果图才有说服力。解读脉冲响应图时核心观察点只有三个响应方向是正向还是负向、响应幅度峰值有多高、持续时间冲击多久后衰减到零或不再显著。如果置信带很宽即便响应线上下跳动也要判断为“该冲击的影响不确定”不能强行解读。4.2 方差分解谁在驱动谁的波动与脉冲响应互为补充的是方差分解Variance Decomposition。操作路径是View → Variance Decomposition。它的分析对象是每个内生变量的预测误差方差随着预测期数增加将这个方差拆解为来自系统内不同冲击的贡献比例。用生活化的类比来说你可以把方差分解想象成一场球赛的得分归因。每个变量的波动是总得分脉冲冲击是各个球员。方差分解能告诉你在某一段时间里这个球员某个变量的得分占到了全队总得分的百分之多少。EViews输出的是一个三线表式的面板每个周期一行列是每个冲击源对某个变量变动的贡献率最终都归一化到100%。在看方差分解时最常见的一个结论套路是某个变量的大部分预测误差波动由自身的冲击解释其他变量的贡献率相对较小。这个发现本身不稀奇因为自回归结构里“自己解释自己”本来就是常态。真正有价值的发现是在某个预测期上其他变量对某个目标变量的贡献率突然明显上升这才说明存在实质性的跨变量传导机制。特别提醒一点方差分解结果对变量顺序敏感。在做方差分解之前EViews会让你确认变量的排列顺序因为Cholesky分解EViews默认的分解方式会把共同成分归因到排在前面的变量头上。如果变量顺序调换分解结果会发生变化。怎么规避这个问题可以选择广义脉冲响应或广义方差分解这类方法对顺序不敏感。但在EViews默认菜单里做法是手动多试几个顺序看结论方向是否一致如果方向一致则可以放心写进报告里如果方向不一致说明变量间的同期关联太强就要谨慎下结论了。4.3 图形调整和导出保存在EViews里生成脉冲响应图或方差分解图后一般还要做一些处理才能放进文档里。直接双击图形可以打开图形对象的属性设置线型改成实线加粗置信带改成浅色阴影横轴范围按实际期数调整主标题可以删掉或者改成表格题注坐标轴标签字号也建议调大不然放进论文里缩放后看不清。导出时可以直接右键图形选择Copy然后在Word或PPT里粘贴更稳妥的做法是右键 → Save Graph to File输出成PNG或EMF格式。EMF是矢量图插入Word后放大缩小都不失真推荐优先使用。注意在调整图形时不要放大或压缩幅面比例EViews会自动保持纵横比直接拉伸会导致坐标刻度失真。5. Granger因果检验给变量关系一个“方向感”5.1 在EViews里两分钟跑完检验互动方向是实证研究里躲不开的问题。VAR模型可以同时容纳多个变量但不告诉你它们之间谁先谁后。Granger因果检验给出一个统计层面的方向判断如果x的滞后项能显著改善对y的预测就称x是y的Granger原因。EViews里做完VAR估计后Granger检验的入口是View → Lag Structure → Granger Causality / Block Exogeneity Tests。这个检验实际上是VAR框架下的组检验对每个方程把所有其他变量的滞后项作为一个整体做原假设“这些滞后项全部为0”的Wald检验输出结果包含每个变量作为被解释变量时的卡方统计量和P值。解读逻辑要记住结果表格的一行表示“某变量是否进入另一个变量的方程”。P值小于0.05说明该变量的滞后项对目标变量有显著解释能力即存在从前者到后者的Granger因果关系。比如输出显示x对y的检验P值是0.03就说x是y的Granger原因。但是注意这个结论有方向性y对x可能是另一回事。最干净的呈现方式是画一张带箭头的变量关系图谁指向谁一目了然。5.2 Granger结果的解释边界Granger因果检验的统计本质是“预测能力”而预测能力不等于因果机制。x的滞后值能预测y可能是因为x确实影响了y也可能是因为x和y同时受到第三个变量z影响只是x对z的信息反应更快。所以论文里最稳妥的表达是“x是y的Granger原因”或“x对y具有Granger意义上的引导作用”不要直接写成“x导致y”否则很容易被审稿人刁难。另外一个容易被忽略的点Granger检验对滞后期数非常敏感。滞后阶数选大了系数显著性会摊薄选小了又容易遗漏滞后效应。前面选滞后阶数的工作如果做得扎实Gibbs这里就能省心很多。潜在的操作习惯是先用第3.2节里的信息准则选定阶数然后在这个阶数下跑Granger检验不愿意随便换个阶数再看一遍因为换阶数以后检验结论变了基本可以断定变量关系本身就不够稳健。需要留意的还有Granger因果检验适用于平稳序列。如果用的是差分后的平稳序列检验结果反映的也是差分变量即变动量之间的Granger关系表述时也要注意别把“利率变动是产出变动的Granger原因”说成“利率是产出的Granger原因”。6. 那些年踩过的VAR建模的坑经验与避坑清单6.1 数据长度不够模型就是空中楼阁我见过太多人拿着十多年的年度数据就往VAR里塞5到6个变量每个方程参数一大堆结果却是脉冲响应图全部飘在置信带之外整个模型没有任何解释力。VAR的参数数量级大体是“变量个数×滞后阶数”加上常数项就更多了。粗略估算一下5个变量、2阶滞后每个方程要估计的系数就有11个5个方程合计55个参数。经验上样本量至少要是参数数量的5到10倍才稳妥。如果你手里的数据只有30个观测值就要考虑限制变量个数和滞后阶数或者换用其他方法。我常用的判断标准是优先级顺序首先保证样本量其次限制变量个数不超过3到5个最后根据信息准则定滞后阶数。宁可滞后阶数少一点也不要让模型变成一个参数过多、自由度耗尽的庞大系统。6.2 残差自相关和异方差问题别忽略很多人在VAR输出里只盯着R方和AR根图却跳过了残差诊断。残差如果存在自相关意味着模型没有完全捕捉变量间的动态关系估计结果是有偏的异方差则会让标准误不再可信。EViews里做残差自相关检验的路径是View → Residual Tests → Serial Correlation LM TestP值应大于0.05做异方差检验用View → Residual Tests → White Heteroskedasticity Test含交叉项。如果残差不过关第一步是加滞后阶数加阶数之后仍不过关就需要考虑变量是否存在结构性变化可以在估计对话框中加入虚拟外生变量来吸收突变影响。这两个检验步骤通常不会出现在“快速上手”教程里但对实证论文来说几乎是必备内容。跑完模型顺手点开看一眼花不了10秒钟。6.3 数据频率与变量类型不一致的细节坑常见陷阱是混用不匹配数据例如把核心变量用月度数据把某个辅助变量用季度数据补齐结果EViews自动按较短序列对齐样本导致月度数据被大量丢弃。遇到这种情况要么把季度数据通过插值方法转为月度数据要么干脆统一用季度数据建模。另一类陷阱是忽略季节因素影响在没有做季节调整的情况下直接把月度数据扔进去滞后阶数会被季节性主导信息准则通常选出一个较大的滞后阶数比如4阶或12阶掩盖了真正的经济动态。正确的做法是对有明显季节模式的数据先做Census X-13季节调整再进入VAR建模流程。6.4 从菜单操作到命令行的效率提升菜单操作适合初学者熟悉流程但如果你经常做VAR重复点击菜单会浪费大量时间。EViews的命令行模式能大幅提升效率。核心命令包括var model01.ls 1 2 y x1 x2这条命令一步完成建立VAR对象并估计1到2阶滞后的模型。查看滞后阶数准则可以用model01.laglen(20)运行AR根检验model01.aroots画脉冲响应图model01.impulse(20, m, a, d)括号里第一个参数是期数第二个参数是分解方式m表示蒙特卡洛标准误后续参数控制展示形式和平滑处理。方差分解类似的命令就不繁琐拆解了菜单里操作即可。熟练用命令之后处理一批变量、多组滞后阶数的对比会特别高效而且每一步都能保留在命令日志里回头写实证报告时会很容易复盘。6.5 模型稳健性测试是一个好习惯以我自己的实证经验VAR分析里“稳健性”三个字在很大程度上决定了结论能否立住。审稿人最常见的质疑是你换了滞后阶数、换了变量顺序、换了样本区间结论还是不是原来的样子所以建议你在完成主模型后做三组稳健性检查。第一组把滞后阶数在选定的阶数上下各加一阶、减一阶重新跑观察脉冲响应方向是否一致。第二组调换内生变量的排列顺序看方差分解的主要结论是否改变。第三组将样本区间划成两段比如金融危机前后、政策调整前后分别估计模型并对比脉冲响应形态。如果全部结果方向基本一致结论就可以放心写进最终报告如果某一步的结果出现了明显翻转那就说明你的模型对设定非常敏感需要回到业务层面重新想想变量选择是否合理。这三组检查在EViews里操作并不复杂只是要重复跑几次模型。习惯是把每一步的关键结果截图保存这样论文里的稳健性检验部分自然就有素材了。VAR模型在EViews里的操作链路并不长从数据导入到脉冲响应做出结论熟练之后几十分钟就能跑完一版。但模型跑得快不等于结论靠得住——真正影响实证质量的是数据预处理是否扎实、滞后阶数选择是否科学、稳定性检验是否通过、结果解读有没有超出统计语义。希望你在跑通流程的同时也能真正理解每个步骤背后的统计学逻辑。最后再分享一个我个人的工作习惯模型结果出来之后不要急着截图往文档里贴先花十分钟审视一下脉冲响应和方差分解的图形并试着用一两句话把“这个故事是什么”讲清楚。如果讲不清楚大概率是模型设定有问题而不是你的表达能力有问题。反复讲清楚了模型才算真正通过了你的检验。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑