Python中实现Simple Dickey-Fuller(简单迪基-富勒)检验的方法咨询
Python实现标准Dickey-Fuller(DF)检验的解决方案
核心结论
标准DF检验无需额外找独立的第三方包实现,它本身就是Augmented Dickey-Fuller(ADF)检验的特殊形式,仅需调整ADF检验的传入参数即可得到完全等价的DF检验结果。
具体实现方法(基于statsmodels库)
你可以直接使用已经在用来做ADF检验的statsmodels.tsa.stattools.adfuller函数,调整两个核心参数即可:
- 设置
maxlag=0:ADF检验的扩展项就是序列的滞后差分项,将最大滞后阶数设为0即符合DF检验无滞后差分项的回归设定 - 通过
regression参数选择你需要的DF检验形式:'c':仅含截距项(最常用的默认DF检验形式)'n':无截距、无时间趋势项'ct':含截距和时间趋势项'ctt':含截距、线性和二次时间趋势项
代码示例
import numpy as np from statsmodels.tsa.stattools import adfuller # 生成示例时间序列,可替换为你的待检验数据 np.random.seed(42) test_series = np.random.randn(150).cumsum() # 执行标准DF检验(仅含截距项版本) df_test_result = adfuller(test_series, maxlag=0, regression='c') # 输出检验结果 print(f"DF检验统计量:{df_test_result[0]:.4f}") print(f"对应p值:{df_test_result[1]:.4f}") print("各显著性水平临界值:") for sig_level, crit_val in df_test_result[4].items(): print(f" {sig_level}: {crit_val:.4f}")
补充说明
如果你的作业要求单独展示DF检验的实现逻辑而非直接调用封装函数,也可以手动基于OLS回归构造DF检验:构造对应设定的回归方程,计算滞后一阶项系数的t统计量,再和DF分布的临界值对比判断是否拒绝原假设即可,手动计算结果和上述调整参数后的ADF输出完全一致。
目前Python常用数据科学库没有单独封装标准DF检验的接口,因为通过调整ADF参数实现的方式足够简便且结果完全等价,无需额外重复开发。
内容的提问来源于stack exchange,提问作者Tes
相关产品推荐
相关产品推荐

