资讯动态

VAR模型EViews实操全流程:从平稳性检验到脉冲响应分析

发布时间:2026/10/16 4:29:34 来源:尧图企业网站定制
做时间序列实证这几年我有个特别深的体会真正拦住大部分人的往往不是方法本身有多深奥而是从课本原理到软件落地之间那层窗户纸。VAR模型就是个典型例子——计量教材把向量自回归讲得头头是道可真轮到自己动手光在EViews里把数据摆对、把滞后阶数选明白就够折腾一整晚。这篇文章就专门捅破这层窗户纸从VAR模型为什么会出现讲起一路走到EViews里的平稳性检验、建VAR对象、选滞后阶数、跑格兰杰因果、做脉冲响应和方差分解把完整链路清清楚楚过一遍。无论你是准备写实证论文的学生还是做经济金融数据分析的从业者只要想用EViews把VAR跑通、跑对这篇文章可以直接当操作手册用。1. 为什么单方程不够VAR模型的适用场景与内生性困境1.1 单方程模型的软肋变量会“互相打架”刚开始做实证的人最喜欢用一个单方程去解释世界想研究货币供应是否影响物价就把物价作为被解释变量货币供应作为解释变量加上利率、产出之类的一起回归。这个思路不是完全不能用但有一个很麻烦的前提——解释变量必须是外生的也就是解释变量不能被系统中的其他变量反过来影响。现实里的宏观金融变量几乎没有一个满足这个条件。央行看到物价涨得快会调整货币政策货币供应变化又反过来影响物价这就是典型的内生性。你用普通最小二乘法去估计这种联立方程组里的单个方程解释变量会跟误差项相关估计出来的系数是有偏的显著性检验也跟着失真。换句话说单方程的做法在这里不是精度问题而是方向性问题——模型的数学假设已经跟现实冲突了。这就是VAR模型登场的背景。向量自回归的思路是与其费劲去判断谁外生谁内生不如干脆把几个关键变量都当作内生变量放进同一个系统用它们彼此的滞后值互相解释。这样既回避了“必须设定外生变量”的强假设又能捕捉变量之间的动态反馈关系。1.2 VAR模型到底在做什么把内生变量装进同一个篮子从一个简单场景看VAR的数学形式。假设我们关注产出和物价两个变量把它们放在一个列向量里记为 y_t。一个含两个变量、滞后p阶的VAR(p)模型可以写成y_t c A₁ y_{t-1} A₂ y_{t-2} ... A_p y_{t-p} ε_t其中 c 是常数向量A₁到A_p是系数矩阵ε_t 是扰动向量。展开来看产出的方程里会有产出自身的滞后项也会有物价滞后项物价的方程里同样有产出滞后项。这种交叉滞后结构就是“向量自回归”名字里“向量”和“自回归”两个词的由来系统的每个方程都同时回归在系统内全部变量的滞后值上。VAR模型最擅长处理的问题是三类一是多变量联动预测比如预测GDP增长时同时利用货币供应、通胀的信息二是动态传导分析看一个冲击如何一步步扩散到其他变量三是格兰杰因果检验判断变量之间是否存在预测意义上的先后关联。宏观领域习惯说“用数据自己说话”VAR比起传统联立方程模型最大的好处就是你不需要为了识别参数而拍脑袋加约束条件。1.3 参数自由度的代价选择VAR之前先掂量样本量不过VAR也不是免费的午餐。因为每个方程都塞进了全部变量的滞后值参数数量增长得非常快。一个K变量、p阶滞后的VAR整个系统总共有K×(K×p1)个待估参数包含常数项。举个例子4个变量、2阶滞后参数数是4×(4×21)36个。如果样本只有30个观测值模型估计出来就跟猜谜没什么区别。所以我在实际项目里有一条很朴素的经验选变量宁少勿多选滞后宁短勿长。3到5个变量、滞后1到4阶、样本量尽量超过100期是相对安全的一个组合。很多人一上来就堆七八个变量结果滞后阶数一高模型自由度暴跌AR根图立刻告警后面所有动态分析都不可信。参数越多模型越容易“记住”样本里的噪声而不是规律这是VAR建模里最常见也最隐蔽的坑。2. 建模前的三件事平稳性、对数化与协整检验2.1 平稳性检验为什么是“入场券”ADF检验实操VAR的估计和推断都依赖大样本渐进理论平稳性几乎是前提条件。计量经济学里有个著名的伪回归现象两个互相独立的随机游走序列回归之后照样能跑出非常高的决定系数R²和显著t值但这两个变量根本没有真实关系。这种虚假结论在宏观时间序列里尤其危险因为GDP、货币供应、物价这些序列走出来的轨迹本来就很像随机游走。EViews里的第一步常规操作就是单位根检验。双击序列选择View → Unit Root Test...弹出对话框后要确认三件事。第一是检验对象通常先看Level水平值水平值明显不平稳再看1st difference一阶差分第二是外生项设定有None无、Intercept截距、Trend and intercept趋势和截距三个选项我的经验是先画序列图再决定序列有明显上升趋势就选带趋势项没有趋势就选截距项围绕零轴振荡才能选无项选错的话检验功效会受影响第三是滞后阶数一般可以用软件自动选择的默认准则但样本量很小时最好手动控制。序列画图观察ADF检验推荐选项有明显确定性趋势Trend and intercept围绕0均值附近上下波动None 或 Intercept有季节波动规律考虑先做季节调整再检验检验结果临界值附近报告多个外生项设定结果ADF检验结果直接看t-Statistic和对应的P值p值小于0.05时拒绝“存在单位根”的原假设说明序列平稳。这里有个别扭的直觉需要纠正很多人一看到原假设是“非平稳”就误以为拒绝原假设等于拒绝非平稳其实拒绝单位根就是接受平稳方向千万别搞反。2.2 取对数还是差分让数据自己告诉你绝大多数经济金融序列都是严格为正的增长型变量比如GDP、货币供应量、价格指数这类数据随着水平上升波动方差往往也跟着变大。取自然对数有三个直接好处压缩数值尺度、让差分后的序列解释为增长率、在一定程度缓解异方差。我的工作习惯是只要变量严格为正就先取对数再做单位根检验后面对数序列的一阶差分就是近似的增长率序列解释起来也非常顺。取对数后如果还不平稳最常见的处理办法是差分。但这里必须停下来想一想差分会把序列的水平信息和长期均衡关系一并扔掉。如果几个非平稳变量之间存在长期稳定关系直接对差分后的序列建VAR实际上丢掉了非常重要的协整信息。所以下一步要看数据有没有协整关系而不是无脑差分。2.3 协整检验什么时候该请Johansen出场协整检验回答的问题是几个非平稳序列的线性组合能不能变成平稳序列如果能说明它们之间存在长期均衡关系。在EViews中创建一个包含所有变量的Group对象点击View → Cointegration Test → Johansen System Cointegration Test然后设置检验选项。这里有一个特别容易翻车的细节协整检验对话框里的“Lag intervals for endogenous”填的是差分变量的滞后阶数而不是水平VAR模型的滞后阶数。如果你的水平VAR想用的滞后阶数是p那么协整检验对话框里通常填p-1。很多人在这里凭感觉填结果协整检验结果和后续VAR模型的设定对不上前后口径混乱。我的建议是先在第3章的方法里大致确定VAR滞后阶数再回来做协整检验保证两边的滞后口径一致。Johansen检验结果表会给出迹统计量和最大特征值统计量两套结果同时依次检验“没有协整关系”“至多一个协整关系”等等。如果确定了存在协整关系严谨的实证论文通常考虑进一步估计VECM。但如果只是课程作业或者想快速看变量联动我个人的建议是先把数据加工成平稳序列再直接估计VAR这样操作量小得多结论也稳定只有面对正式学术论文级别的实证时才需要认真对待VECM和协整向量的约束设定。3. EViews建VAR的完整路径数据准备、对象创建与滞后阶数抉择3.1 数据怎么摆进EViewsExcel导入要留心的三个坑VAR建模要求所有参与建模的序列落在相同的样本区间内低频数据中间不能有大段缺口。从Excel导入数据时最稳妥的做法是File → Import → Import from file → Excel选择对应Sheet。这里有三个高频问题第一EViews通常把第一行识别为变量名所以数据必须一列一个变量、按列排列不要混入多余标题、注释行或者合并单元格。第二缺失值要写成NA或用空白单元格但不能用中文“缺失”“空格”之类的文本否则导入后序列会被识别成字符串。第三变量名不要用中文、不要用数字开头、不要包含特殊符号建议统一用拼音或英文缩写比如货币供应就写成M2工业增加值写IAV。数据导入之后还要检查样本范围。如果Workfile的样本范围比数据实际范围宽序列尾部会出现一连串NAVAR对象会把这些缺失区间也当作用来估计的范围模型自动报错或系数不稳定。遇到这种情况不用慌双击某个实变量看一下时间范围然后在命令窗口用smpl语句或者菜单里的Proc → Structure / Resize Current Page把样本范围收紧到实际数据区间。3.2 创建VAR对象的操作细节在Workfile窗口中按住Ctrl同时选中要建模的全部序列右键点击Open as VAR...或者用Quick → Estimate VAR...打开同一个对话框。这是EViews里最核心的弹窗需要设置的内容如下第一个是Endogenous Variables内生变量列表一般默认已经填好你选中的序列名确认无误就可以。第二个是Lag Intervals for Endogenous滞后区间填法很直接填“1 2”表示包含滞后1阶和2阶填“1 1”表示只包含滞后1阶填“1 3”表示包含滞后1到3阶。第三个是Exogenous Variables外生变量一般保持默认的C就可以也就是只保留常数项没有特殊必要不要手动加其他外生变量。点击OK之后EViews会输出每个方程一张独立的估计表。很多初学者打开结果就傻眼不知道逐个数值看什么。我的个人看法是VAR模型各个方程里的单个系数和经济含义之间通常没有清晰的对应关系因为变量之间当期和滞后期的反馈交织在一起直接解读系数容易误判所以这一步不要花太多时间抠系数后面的稳定性检验、脉冲响应、方差分解才是VAR实证的核心。3.3 滞后阶数到底怎么选信息准则冲突的处理方式滞后阶数的选择是VAR实操里最磨人的环节。在VAR估计结果窗口点击View → Lag Structure → Lag Length Criteria...在弹出的输入框里指定最大滞后阶数。比如月度数据通常可以考察到12阶季度数据考察到4阶或8阶。EViews会输出一个表格同时给出LR统计量、FPE、AIC、SC即BIC、HQ五个准则的取值并用星号标出每个准则认为最优的滞后阶数。麻烦在于这五个准则很少会达成一致。经验上AIC喜欢选择更大的滞后阶数SC和HQ倾向更简约的模型两者经常打架。我的处理顺序是这样先数一数五个准则里有几个指向同一个阶数少数服从多数结合数据频率做判断月度数据常常存在12个月的年度周期性可以考虑滞后12阶附近的倍数季度数据优先看4的倍数估计该阶数的VAR后用残差LM检验确认残差里不再残留明显自相关如果仍有自相关说明滞后阶数还不够当AIC和SC严重冲突且样本量有限时优先选SC或HQ推荐的小阶数追求简约和稳定只有当样本量很大时才敢完全跟着AIC走。滞后阶数不是一个可以随意拍脑袋的数字。阶数每增加一阶系统参数就增加K²个自由度压力成倍上升高滞后阶数还会直接威胁模型稳定性。我见过不少同学为了追求“准则最优”硬是选到10阶结果样本不够AR根图跑出来一片通红后面的脉冲响应完全没法看。选阶数本质上是在残差信息和参数复杂度之间做平衡没有绝对正确的答案。4. 估计完别急着分析稳定性诊断和格兰杰因果的落脚点4.1 AR根图判断模型稳不稳VAR模型估计完成之后先别急着看预测和脉冲响应第一件事是检查模型的稳定性。操作路径是View → Lag Structure → AR Roots Table或者AR Roots Graph。EViews会计算系统矩阵的特征根并把结果以表格或单位圆图的形式展示出来。判断标准非常直白特征根的模必须全部小于1在图上表现为点全部落在单位圆内部。只要有一个特征根落在圆上或者圆外模型就是非稳定的后面的脉冲响应、方差分解都会失真甚至发散因为冲击在这个系统上根本不会收敛结论没有任何解释意义。这里要特别提醒一个容易看反的方向EViews的单位圆图展示的是特征根倒数的位置你需要确认的是所有点都落在圆内而不是圆外。如果图上出现一个点刚好压在单位圆边缘大概率是原始数据本身存在单位根而没有做处理这时候解决思路不是去删变量而是回到第2章重新审视数据是否平稳、有没有协整关系。4.2 残差诊断LM检验怎么读稳定性的另外一个维度是残差性质。操作路径是View → Residual Diagnostics → Serial Correlation LM Test...在弹出的对话框里设置检验的最大滞后阶数。LM检验的原假设是残差不存在序列相关如果p值小于0.05就拒绝原假设说明残差里还有值得解释的自相关结构。残差自相关会直接影响参数显著性和格兰杰因果检验的可信度所以不能无视。我的处理顺序是先提高滞后阶数看看是不是信息提取不足如果结果仍然不行考虑加入必要的确定性外生变量如果数据频率太高且样本有限比如用日度数据做VAR残差自相关往往会很顽固这时可以考虑降低建模频率改用月度或季度数据。遇到残差自相关就跳过检查继续分析是VAR实证里比较忌讳的做法审稿人几乎必问。4.3 格兰杰因果检验的正确打开方式格兰杰因果检验在EViews中的操作是View → Lag Structure → Granger Causality / Block Exogeneity Wald Tests。很多教材单独用两个变量做格兰杰因果但VAR框架下的优势是能够做块排除检验把所有其他变量的滞后项作为一个整体检验它们对当前被解释变量方程是否具有联合显著性。解读格兰杰因果结果时必须拎清概念这里的“因果”是预测能力意义上的因果不是哲学或者经济学意义上的因果。举例来说检验结果显示货币供应M2是价格水平的格兰杰原因只能说明过去M2的变动信息有助于预测未来价格水平而不能直接断言货币供应就必然导致物价变化。我在写研究报告时习惯用“格兰杰因果意义下存在预测关联”或者“货币供应对物价具有增量预测作用”这类表述免得语气过强被审稿人抓住。结果表格最重要的就是p值。p值小于0.05时拒绝原假设说明其他变量的滞后项对该变量有联合预测能力大于0.05则说明没有证据支持预测关联。做VAR系统时这张表里的信息量往往被低估其实它能直观回答“谁先动、谁后动”的问题很值得在论文里列出来。5. 脉冲响应与方差分解动态分析怎么解读才算数5.1 脉冲响应函数IRF做法与排序敏感问题脉冲响应函数是VAR模型最有分析价值的部分。它的思路是给系统里某个变量一个标准差的冲击然后看另一个变量在未来若干期如何响应。操作路径是View → Impulse Response...在对话框里选择Impulse冲击变量和Response响应变量设置响应期数。月度数据一般看10到20期季度数据看8到12期。EViews默认使用Cholesky分解正交化残差这就引出了一个非常关键的细节变量顺序会直接影响同期冲击的分配。排在系统前面的变量它的冲击可以对后面所有变量产生同期影响排在后面的变量同期冲击只能影响自身和排在它后面的变量。变量排序不是随意决定的必须结合理论和研究问题来论证。比如研究货币政策传导一般认为政策工具对实体经济有当期影响而实体经济对政策工具的反馈可能存在时滞排序设计就要体现出这种不对等关系。我在实际项目里养成了一个习惯至少换两种变量顺序跑脉冲响应把关键结果的图放在一起对比只有当冲击的方向和显著性与排序无关时才敢写进结论。如果结果对排序非常敏感那说明模型识别本身有问题这时候要检查是不是遗漏了重要变量而不是硬着头皮解释。脉冲响应图通常会带置信区间带EViews可以设置band。判断响应是否显著的标准不是只看实线走向而是看置信带是否包含零轴。如果置信带在多数时期跨越零轴说明响应不显著强行解读会翻车。还有个技巧是看累积脉冲响应把逐期响应累计起来看最终净效应当短期响应方向反复变化时累积图往往能给出更清晰的结论。5.2 方差分解VDC谁在解释谁的波动方差分解回答的问题是一个变量的预测误差方差有多大比例来源于自身冲击有多大比例来源于其他变量的冲击。操作路径是View → Variance Decomposition设置分解期数。EViews会输出表格每一期哪些变量贡献了多少百分比各变量的贡献加起来接近100%。例如对CPI做方差分解后第12期显示货币供应贡献20%CPI自身贡献60%其余来自其他变量。这个结果可以解读为在模型设定下物价波动的主要来源仍然是自身惯性货币供应的动态贡献相对有限。这种信息在研究政策传导效率时非常有用——如果政策变量对目标变量的方差贡献长期很低说明传导链条可能存在阻滞。方差分解同样依赖Cholesky排序。排序不同各变量的贡献比例会变化尤其排序靠后的变量同期影响会被压缩得比较厉害。所以稳健性检验同样适用于方差分解改变变量顺序观察各期的贡献比例是否发生剧烈变化。另外要记得方差分解反映的是模型内部对波动的分解属于样本内解释不能直接等同于样本外预测能力写结论时不要混淆。5.3 论文实操中的三个常见误区VAR模型跑完看似一切顺利但到写报告和答辩环节经常翻车。我总结了自己和同行踩过的三个高频误区提醒大家注意。第一个误区是把脉冲响应的一期显著当成长期显著。宏观冲击的传导往往有滞后某个时期响应不显著不代表之后不会出现显著反应正确做法是看整条响应路径再结合累积响应判断整体效应。第二个误区是只看点估计不看置信区间。有人生成了漂亮的脉冲响应图就直接开写结论完全忽略显著性带结果几个关键期的置信带都横跨零轴结论贴着边际显著甚至不显著答辩时非常被动。第三个误区是过度解读方差分解的具体数字却忽略了它对排序的敏感性。论文里只报一套排序的结果容易被质疑稳妥做法是交代排序依据再做排序稳健性说明通常用“结果不依赖于特定排序”这句话就能堵住大半问题。VAR实证的真正门槛就在这里不是学会点鼠标而是知道点完鼠标之后哪些数字可以信、哪些数字需要打折扣。个人体会是VAR模型在EViews里跑通并不难难的是在做每一个选择之前先问一句“为什么”。数据要不要取对数、变量顺序怎么放、滞后阶数选几阶这些决策发生在点击估计按钮之前却直接决定了后面所有图表可不可以解读。最后分享一个小习惯我每次建VAR模型都会把各单位根检验表、协整检验结果、滞后阶数选择表、AR根图、残差检验、脉冲响应图和方差分解表按顺序归档到一个文件夹里顺手写上备注。步骤看起来繁琐但写论文做汇报时所有图表和说明伸手就能拿反而省下大量返工查数据的时间。这个流程值得你栽进坑之前先学会。

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

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

免费获取报价 →
↑