在Stata中执行ADF检验(Augmented Dickey-Fuller test)是时间序列数据分析的重要步骤,用于检验序列是否存在单位根,ADF检验通过引入滞后项来修正残差的自相关性,其核心命令为dfuller
,但实际应用中需结合数据预处理、选项设置和结果解读等多个环节,以下从命令基础、语法结构、选项说明、结果解读及操作示例五个方面详细说明。

ADF检验的核心命令与基础语法
Stata中执行ADF检验的基础命令为dfuller
,其基本语法结构为:
dfuller 变量名 [if] [in] [, 选项]
“变量名”为待检验的时间序列变量;[if]
和[in]
为可选条件,用于筛选样本范围;[,]
后的选项是ADF检验的关键参数,用于设定检验类型、滞后阶数等。
主要选项说明
ADF检验的选项直接影响检验结果的可靠性,常用选项如下表所示:
选项 | 功能说明 | 示例 |
---|---|---|
noconstant |
不包含截距项(仅用于趋势明确的序列,实际较少使用) | dfuller y, noconstant |
trend |
包含截距项和线性时间趋势项(适用于有明显上升/下降趋势的序列) | dfuller y, trend |
drift |
仅包含截距项(默认选项,适用于无明确趋势但均值非零的序列) | dfuller y, drift (等价于默认) |
lags(#) |
设定ADF检验的滞后阶数(#为正整数,需通过准则确定) | dfuller y, lags(3) |
regress |
显示回归结果详细输出(包括系数、标准误、t统计量等) | dfuller y, lags(2) regress |
滞后阶数的选择
滞后阶数的选择是ADF检验的关键步骤,阶数过低可能导致残差自相关,过高则会降低检验功效,Stata中常用的选择方法有两种:

-
信息准则法:通过
varsoc
命令计算不同滞后阶数下的AIC、BIC或HQIC值,选择最小值对应的阶数。varsoc y, maxlag(8) // 检验滞后0-8阶的信息准则
输出结果中,若AIC在滞后3阶最小,则ADF检验中可设定
lags(3)
。 -
经验法则:对于年度数据,滞后阶数通常取1-2;季度数据取4;月度数据取12,但该方法依赖数据频率,需结合信息准则调整。
ADF检验的结果解读
执行dfuller
命令后,Stata会输出检验统计量、临界值和p值等关键结果,需重点关注以下内容:

- 检验类型(Test Statistic):表格第一行显示ADF检验的t统计量(如“Z(t)”),该值需与临界值比较。
- 临界值(Critical Values):输出结果提供1%、5%、10%显著性水平下的临界值,若ADF统计量小于临界值(或p值小于显著性水平),则拒绝原假设(序列存在单位根),认为序列平稳。
- 回归结果(若使用
regress
选项):显示滞后项系数、截距项、趋势项的显著性,可辅助判断序列特征。
示例结果解读:
假设执行dfuller gdp, trend lags(2)
后,输出如下:
Augmented Dickey-Fuller test for unit root Number of obs = 98
---------- Interpolated Dickey-Fuller ---------
Test 1% Critical 5% Critical 10% Critical
Statistic Value Value Value
----------------------------------------------------------------------------
Z(t) -3.152 -4.066 -3.461 -3.157
----------------------------------------------------------------------------
MacKinnon approximate p-value for Z(t) = 0.0986
- ADF统计量为-3.152,大于5%临界值-3.461,且p值0.0986>0.05,不能拒绝原假设,认为GDP序列存在单位根(非平稳)。
完整操作示例
以Stata内置的“air2.dta”数据集(航空乘客数据)为例,演示ADF检验完整流程:
-
加载数据与设定时间格式:
webuse air2.dta tsset time // 设定时间变量为time
-
绘制时序图观察趋势:
line air time
图形显示序列有明显上升趋势和季节性,初步判断可能非平稳。
-
选择滞后阶数:
varsoc air, maxlag(12)
输出显示AIC在滞后1阶最小(AIC=10.23),故选择
lags(1)
。 -
执行ADF检验(含趋势项):
dfuller air, trend lags(1) regress
-
结果解读:
输出ADF统计量为-1.823,大于5%临界值-3.461(p值=0.682),不能拒绝原假设,序列非平稳,需对序列进行差分后再检验,gen d_air = D.air // 一阶差分 dfuller d_air, drift lags(1) // 对差分序列检验(含截距项)
若差分后ADF统计量-4.217小于5%临界值-2.879(p值=0.0001),则认为差分序列平稳,原序列为I(1)过程。
FAQs
Q1:ADF检验中,如何选择“noconstant”“trend”“drift”三种模型?
A1:模型选择需结合序列特征和经济意义:
- 若序列无明确趋势且均值接近零,可尝试
noconstant
(实际较少用,因多数序列存在截距); - 若序列无趋势但均值非零,使用
drift
(默认选项); - 若序列有明显上升/下降趋势(如GDP、股价指数),必须使用
trend
,可通过时序图初步判断,或对比三种模型的AIC/BIC值,选择信息准则最小的模型。
Q2:ADF检验p值大于0.05,是否一定说明序列非平稳?
A2:不一定,ADF检验的原假设是“序列存在单位根”,p值>0.05仅表示“不能拒绝原假设”,而非“接受原假设”,可能原因包括:① 序列确实非平稳;② 滞后阶数选择不当(过低导致残差自相关,过高导致检验功效下降);③ 样本量过小(ADF检验需大样本性质,样本量<50时结果可能不可靠),建议调整滞后阶数、扩大样本量或结合PP检验、KPSS检验等其他方法综合判断。