Augmented Dickey-Fuller检验结果与序列可视化非平稳表现矛盾咨询
ADF检验与可视化结果矛盾的核心原因
这一矛盾并非置信水平设置问题,本质是ADF检验的默认参数对应的平稳定义,与你通过可视化判断的平稳定义不一致导致的,具体原因如下:
tseries::adf.test的默认检验逻辑包含确定性趋势项
你调用的R语言默认ADF检验函数,会在检验回归中自动加入截距项和线性趋势项,其原假设为「序列存在单位根(属于差分平稳类的非平稳)」,备择假设为「序列为趋势平稳」——即允许序列存在固定的线性趋势、季节性等确定性变化规律,仅要求去除这些确定性成分后的残差没有单位根即可判定为平稳。
你使用的月度牛奶产量数据是典型的趋势平稳序列:存在固定的年际季节性波动+长期线性上升的确定性趋势,去趋势后的残差确实平稳,因此ADF检验返回p=0.01拒绝单位根原假设的结果是完全合理的。- 可视化判断的非平稳与检验定义的平稳范畴不匹配
你通过折线图判断的非平稳,指的是原始序列的均值随时间持续上升、存在周期性波动,属于无条件均值非平稳的直观判断,这和ADF检验带趋势项时允许确定性趋势存在的条件平稳定义本就不冲突,二者的评判标准存在差异。
适配需求的检验调整方案
如果你需要检验原始序列是否满足无条件平稳(即不允许存在趋势、季节性等均值变化),可以调整检验配置:
- 改用
urca包的ur.df函数,指定检验回归不包含趋势项和截距项,就能得到和可视化判断匹配的检验结果,示例代码如下:
library(urca) # 设定无截距、无趋势项的ADF检验,滞后阶数和原检验保持一致 adf_none <- ur.df(df[, 2], type = "none", lags = 5) summary(adf_none)
- 也可以搭配KPSS检验做交叉验证,KPSS的原假设为序列平稳(含趋势平稳),和ADF检验的逻辑互补,可以避免单一检验的判定偏差。
内容的提问来源于stack exchange,提问作者Nick Wray
相关产品推荐
相关产品推荐

