ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

EViews 实现 ARDL 全流程:单位根检验与 Bounds 协整

EViews 实现 ARDL 全流程:单位根检验与 Bounds 协整

简介:围绕EViews实现ARDL的实操文档,面向需要做时间序列协整分析的经济学、金融学学生与实证研究者,帮助其在EViews 9及以上版本中完成自回归分布滞后模型的设定与检验。内容以步骤化方式串联新建工作文件、命令行录入数据、变量取对数、单位根检验,以及ARDL估计方程选择、滞后阶数确定、系数诊断中的长期形式与Bounds检验,便于对照软件界面逐项操作并理解输出结果。资源包仅含1个docx文件,压缩包约446KB,轻量易取,适合作为课业练习或论文实证的随查手册。目前已有3508人学习,说明其在ARDL入门与操作查漏方面具有一定参考价值。读者可据此建立从数据准备、模型估计到协整与边界检验的完整分析路径,减少因菜单路径和参数设置不熟造成的反复试错,提升实证分析效率。

1. 从一份“步骤文档”说起:ARDL 在 EViews 里到底怎么跑通

很多人第一次接触自回归分布滞后模型,是在一份几十行的操作清单里看到“File—New—Workfile”“View—Unit Root Test”“Method 选 ARDL”这几步,照着点完,输出一堆表,却说不清 Bounds 检验的上界下界意味着什么。这份《EViews 实现 ARDL 的步骤》文档的价值就在这里:它把从建工作文件、导入数据、取对数、单位根检验,到 ARDL 估计、长期系数诊断、Bounds 检验的整条链路串成了一条可复现的路径,而不是扔给你一个“协整分析”的空概念。它适合三类人:正在做时间序列实证、需要判断变量间长期均衡关系的从业者;被 EViews 菜单绕晕、只会点“OK”但不敢解释结果的新手;以及想把手上一堆宏观或业务时序数据跑出结论、但不确定该用 ARDL 还是 VAR 的分析者。这一篇按“先立住原理、再动手复现、最后说坑”的顺序拆,你照着做能跑出结果,也能知道自己跑的是什么。

2. 动手之前先立住:ARDL 的适用边界与数据准备

2.1 为什么选 ARDL 而不是普通 OLS 或 VAR

普通 OLS 处理时序数据时,最大的问题是它假设解释变量当期就影响被解释变量,而现实里 rarely 是这样:上个月的投放、上一季度的利率、去年的收入,都会滞后地作用到当期。ARDL(Autoregressive Distributed Lag,自回归分布滞后)把这个“滞后”显式写进方程,形式大致是 y 对自身的滞后项、以及 x 的当期与滞后项回归。它相对 VAR 的优势在于:VAR 把所有变量都当内生,参数数量随变量数平方级膨胀,样本稍短就估不动;ARDL 允许你明确区分被解释变量和解释变量,参数更省,解释也更直接。

更关键的一点是协整场景下的表现。传统做法是先做单位根检验,确认所有变量同阶单整,再做 Engle-Granger 两步法或 Johansen 检验,前提条件苛刻——变量单整阶数不一致就卡住。ARDL 的 Bounds 检验(边界协整检验)在变量为 I(0)、I(1) 或两者混合时都能用,只要没有 I(2) 变量,这是它被大量实证工作采用的核心原因。EViews 9 及以上版本把滞后阶数自动选择、协整估计、长期形式与 Bounds 检验都内置进了估计对话框,省掉了手工构造滞后项和差分项的麻烦。

选型上我给一个粗糙但实用的判断:样本量小于 80、变量数 3 到 5 个、且你相信其中存在一个明确的“被解释变量”,走 ARDL;样本很长、变量全是内生、要做脉冲响应,走 VAR。ARDL 不是万能的,它对滞后阶数敏感,对异常值也敏感,这两点后面会细说。

2.2 数据准备:工作文件、频率与对数化

EViews 的第一步是建工作文件,这一步决定了后续所有日期对齐逻辑。文档里写的是“2018/1/1 到 2019/12/30”这种格式,本质是让你明确起始日期和频率。频率选错(把月度数据建成年度结构)会导致观测值被压缩、滞后项全错位,这是新手最常见的第一类翻车。

下面是建工作文件并导入数据的典型操作,我习惯用命令而不是纯菜单,因为命令可复现、可写进脚本留档:

# 在 EViews 命令窗口(Command)逐行执行 # 1) 建月度工作文件,2018年1月到2019年12月 wfcreate m 2018m01 2019m12 # 2) 建一个 group 承载数据,或用 data 直接生成序列 data y x1 x2 # 3) 从 Excel 粘贴/导入时,确保第一列是日期且与工作文件频率一致 # 菜单路径:File - Import - Import from File,日期列映射到 workfile 的日期

命令说明:wfcreate m里的m是频率标识,常见取值有a(年度)、q(季度)、m(月度)、w(周度)、d(日度);起止日期必须与参数频率匹配,写2018m01而不是2018/1/1,否则 EViews 会按日度解析。data y x1 x2会弹出表格视图,可以直接粘贴,也可以后续用read命令从文件读。日期列一旦错位,最好的后悔药是删掉工作文件重来,而不是在序列里手动改值。

数据进来后取对数。取对数的意义有两层:一是把弹性关系线性化,系数直接读作“百分比变化对百分比变化”;二是压缩量纲、缓解异方差。但注意,取对数只对正值序列有意义,含零或负值的序列(比如净出口、某些增长率)不能直接取对数,常见做法是加一个常数平移或改用增长率。

# 对三个序列取自然对数,生成新序列,保留原始数据 genr ly = log(y) genr lx1 = log(x1) genr lx2 = log(x2) # 检查是否有缺失值导致的 NA,取对数后 NA 会传播 show ly lx1 lx2

这里genr是生成新序列的通用命令,log()是自然对数。生成新序列而不是覆盖原序列,是为了后续做敏感性分析时还能回到原始量纲。如果某一行ly显示 NA,回去查原始y是否为零或负——这是取对数环节最典型的失败原因。

2.3 单位根检验:ARDL 也要先看清单整阶数

很多人以为 ARDL 不需要单位根检验,这是个误解。Bounds 检验的前提是变量为 I(0) 或 I(1),如果存在 I(2) 变量,F 统计量的分布假设失效,结论不可信。所以单位根检验不是走过场,而是给 ARDL 的使用资格做体检。

# 对 lx1 做 ADF 单位根检验,含常数项、不带趋势 lx1.uroot(adf, const) # 若序列明显有趋势,改为含常数和趋势 lx1.uroot(adf, const, trend) # 对一阶差分做检验,确认是否 I(1) lx1.uroot(adf, const, d(1))

uroot是 EViews 的单位根检验命令,第一个参数指定检验类型(adf为增广迪基-富勒),后面的const、trend控制确定性项,d(1)表示对一阶差分序列检验。判断逻辑:原序列在含常数项下不拒绝单位根、一阶差分拒绝单位根,则该序列为 I(1);原序列直接拒绝,则为 I(0)。三个序列都做一遍,只要没有一个是 I(2),就满足 ARDL 的入场条件。

滞后阶数怎么定?ADF 检验的滞后项可以用 SIC 自动选,EViews 默认会给一个基于 SIC 的最大滞后,你也可以手动指定。样本只有 24 个月时,滞后最多给到 4 就够,给太大直接把自由度吃光。这一步的常见误用是“检验完看一眼 p 值就过”,正确做法是记录每个序列的单整阶数,写进你的分析底稿,因为后面解释 Bounds 检验结果时要用到。

3. 估计与检验:把 ARDL 方程完整跑出来

3.1 设定 ARDL 方程与自动选阶

数据准备完,进入核心估计。EViews 里通过菜单Quick - Estimate Equation,或者选中序列右键Open - Estimation Equation,Method 下拉里选ARDL - Autoregressive Distributed Lag。这个对话框是整份文档里信息密度最高的地方,值得逐个字段看清。

依赖变量填ly,回归变量填lx1 lx2。关键在ARDL specification区域的两个滞后设定:依赖变量滞后阶数(Dependent variable lags)和回归变量滞后阶数(Regressors lags)。你可以全部手动填,也可以勾选自动选择,让 EViews 按某个信息准则(AIC 或 SIC)在给定最大阶数内搜索。我一般这么做:最大滞后先设为 4(月度数据、样本 24,留足自由度),准则先用 AIC,再用 SIC 复跑一遍,两次选出的阶数一致才敢用。

# 等价命令写法(命令窗口) equation eq1.ardl(fixedlag=4, lag=2, reglag=2) ly lx1 lx2 # 自动选阶:让 EViews 按 AIC 在最大 4 阶内搜索 equation eq1.ardl(auto=4, ic=aic) ly lx1 lx2

ardl是估计方法的后缀,fixedlag=4指定最大滞后,lag和reglag分别指定依赖变量与回归变量的固定滞后。自动选阶时ic可以填aic或sic。这里要提醒一句:自动选阶不是万能钥匙,样本短时 AIC 倾向选大阶数,SIC 倾向选小阶数,两者冲突时优先 SIC,因为短样本下多一个滞后项的代价很高,容易过拟合。

3.2 长期形式与系数诊断

方程估出来后,菜单View - Coefficient Diagnostics - Long Run Form and Bounds Test,这一项会把当期方程重新参数化成长期系数形式和误差修正形式,同时给出 Bounds 检验的 F 统计量和两个临界值边界。这一步是整个 ARDL 分析的落点:长期形式和误差修正形式里,各变量系数才是你要解释的东西。

长期形式里,lx1的系数读作“x1 每变动 1%,长期来看 y 平均变动百分之几”,注意是“长期”,不是当期。误差修正形式里会多出一个CointEq(-1)项,系数为负且绝对值小于 1 才符合收敛逻辑,绝对值表示偏离长期均衡后每期回调的比例。比如系数是 -0.4,意味着上期偏离有 40% 在本期被纠正。这个系数的符号如果为正,说明模型设定有问题,不是数据有问题,回去查滞后阶数和变量方向。

Bounds 检验的判读规则要看两个临界值:F 统计量大于上界,拒绝“不存在长期协整关系”的原假设;小于下界,不能拒绝;落在两界之间,结论不确定,此时要么扩大样本,要么改用其他协整方法交叉验证。EViews 输出里会给 I(0) 和 I(1) 两组边界,通常按 5% 显著性水平那一行读。这里有个细节:临界值分“无约束常数”“约束常数”“含趋势”等情形,必须与你估计时选的确定性设定一致,否则读错表。

3.3 残差诊断:别跳过这一步

方程跑完、Bounds 显著,不代表模型可用。ARDL 的估计有效性依赖残差是白噪声,跳跃这一步,后面所有检验都是空中楼阁。至少要过三道:自相关、异方差、正态性。

# 残差自相关检验(Breusch-Godfrey),滞后 2 阶 eq1.autocorr(2) # 异方差检验(White 检验) eq1.hettest(type=white) # 正态性检验 eq1.hist

autocorr(2)检验残差 2 阶自相关,p 值大于 0.05 才不拒绝“无自相关”;hettest的type可选white或arch,前者查异方差,后者查条件异方差;hist打开残差直方图和 Jarque-Bera 统计量。自相关没通过,常见原因是滞后阶数不足,回 3.1 加大最大阶数重试;异方差明显,可以考虑对变量再做变换或改用稳健标准误;正态性不通过但样本小,影响相对小,可以在文末如实交代而不是硬圆。

4. 那些没人写进步骤文档里的坑

4.1 现象:Bounds 检验 F 值总落在两界之间。原因:样本太短或滞后阶数吃掉自由度。解决:先算一下你实际可用的观测数,月度数据 24 个月、最大 4 阶滞后,有效样本只剩十几个,F 检验功效极低。办法是压缩最大阶数到 2、减少变量数,或者换更长的样本区间;如果数据实在短,Bounds 检验只能作为参考,不能当唯一证据。

4.2 现象:取对数后一堆 NA,模型估不出来。原因:原始序列含零或负值。解决:检查原始数据的极值,对含负值的序列改用增长率(x - x(-1))/x(-1)或加常数平移后再取对数,并在方法部分写明处理方式。别偷偷把负值改成 0,那会直接污染结论。

4.3 现象:自动选阶两次结果不一样。原因:AIC 和 SIC 的惩罚项不同,样本短时差异被放大。解决:两个准则各跑一次,取交集;交集为空就固定阶数为 1 或 2,靠残差诊断来验证,而不是迷信准则。我见过有人为了让 Bounds 显著,反复改阶数直到“跑出想要的结果”,这叫 p 值钓鱼,成果站不住。

4.4 现象:长期系数符号与经济直觉相反。原因:遗漏变量或变量间高度共线,ARDL 把不该合并的影响吸收进了某个系数。解决:先看相关系数矩阵,共线严重就删变量或做主成分;再看方程里是否漏了关键控制变量。符号反了不是“数据有惊喜”,八成是设定错。

4.5 现象:换一个样本区间结论就翻。原因:结构突变。解决:做 Chow 断点检验或递归残差图,确认样本内是否有政策或业务口径变化;有突变就分段估计或加虚拟变量。ARDL 对结构突变不免疫,这一点比很多教程写的要严肃。

5. 进阶:把 ARDL 结果做成可复核的分析底稿

跑通一次 ARDL 只是起点,真正决定这份结果能不能用的,是你能不能把每一步的选择留下痕迹。我的习惯是,从建工作文件开始就走命令而不是纯菜单,把所有wfcreate、genr、uroot、ardl命令写进一个 EViews 程序文件,下次换数据只改日期和变量名。这样做的直接好处是:当 Bounds 检验不显著、评审追问“你是不是试了很多阶数”时,你能拿出完整记录,而不是凭记忆复述。

具体可以按这个结构留档:第一段写数据来源与频率、样本区间;第二段写每个序列的单位根检验结论(I(0) 还是 I(1),含常数还是含趋势);第三段写 ARDL 的最大阶数、选阶准则、最终阶数;第四段贴长期形式和误差修正形式的系数表,标注显著性;第五段写 Bounds 检验的 F 值与所读临界值行;第六段写残差三项诊断的 p 值。这个底稿不需要多漂亮,但要能让人按顺序复核。

验证方法上,再做两件事。一是换准则复跑:AIC 选出的阶数和 SIC 选出的阶数如果一致,模型稳健性就多一层支撑;不一致就报告两套结果并说明取舍理由,而不是只报显著的那套。二是做滚动或递归估计,看长期系数随样本推移是否稳定,EViews 里可以对估计方程做递归系数图,观察系数是否在某个时点后漂移。漂移明显,说明存在结构变化,结论要加限定条件。

还有一个容易被忽略的技巧:误差修正项CointEq(-1)的系数绝对值,本身就是调整速度的度量。把它和业务节奏对照——月度数据下系数 -0.3 意味着偏离大约 3 到 4 个月修正大半,如果业务上你知道调整周期是半年,两者对不上就该怀疑模型。这种“用业务常识校验统计输出”的习惯,比多跑十个检验更能防翻车。

我踩过的最深的一个坑,是早期为了让 Bounds 检验显著,反复调最大滞后阶数,最后选出一个 AIC 和 SIC 都不支持、残差还有自相关的设定,结论在换样本后直接崩掉。从那以后我每次做 ARDL,都强制走一遍“固定阶数 → 看残差 → 换准则复跑 → 记录取舍”的四步,任何一个环节不过关就不往下走。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进