ADF检验全称是 Augmented Dickey-Fuller test,顾名思义,ADF是 Dickey-Fuller检验的增广形式。DF检验只能应用于一阶情况,当序列存在高阶的滞后相关时,可以使用ADF检验,所以说ADF是对DF检验的扩展。
单位根(unit root)
在做ADF检验,也就是单位根检验时,需要先明白一个概念,也就是要检验的对象——单位根。
当一个自回归过程中: ,如果滞后项系数b为1,就称为单位根。当单位根存在时,自变量和因变量之间的关系具有欺骗性,因为残差序列的任何误差都不会随着样本量(即时期数)增大而衰减,也就是说模型中的残差的影响是永久的。这种回归又称作伪回归。如果单位根存在,这个过程就是一个随机漫步(random walk)。
ADF检验的原理
ADF检验就是判断序列是否存在单位根:如果序列平稳,就不存在单位根;否则,就会存在单位根。
所以,ADF检验的 H0 假设就是存在单位根,如果得到的显著性检验统计量小于三个置信度(10%,5%,1%),则对应有(90%,95,99%)的把握来拒绝原假设。
ADF检验的python实现
ADF检验可以通过python中的 statsmodels 模块,这个模块提供了很多统计模型。
使用方法如下:
导入adfuller函数
from statsmodels.tsa.stattools import adfuller
adfuller函数的参数意义分别是:
x:一维的数据序列。
maxlag:最大滞后数目。
regression:回归中的包含项(c:只有常数项,默认;ct:常数项和趋势项;ctt:常数项,线性二次项;nc:没有常数项和趋势项)
autolag:自动选择滞后数目(AIC:赤池信息准则,默认;BIC:贝叶斯信息准则;t-stat:基于maxlag,从maxlag开始并删除一个滞后直到最后一个滞后长度基于 t-statistic 显著性小于5%为止;None:使用maxlag指定的滞后)
store:True False,默认。
regresults:True 完整的回归结果将返回。False,默认。
返回值意义为:
adf:Test statistic,T检验,假设检验值。
pvalue:假设检验结果。
usedlag:使用的滞后阶数。
nobs:用于ADF回归和计算临界值用到的观测值数目。
icbest:如果autolag不是None的话,返回最大的信息准则值。
resstore:将结果合并为一个dummy。