3分钟掌握Silk音频转换:高效解码微信QQ语音的专业方案
2026/6/16 3:07:49
本文详细介绍ADF检测(Augmented Dickey-Fuller Test),这是时间序列分析中判断数据是否平稳的金标准。
在做时间序列预测(比如用 ARIMA 模型)之前,我们必须先回答一个问题:“这组数据是平稳的吗?”如果不平稳,很多模型根本跑不通,或者跑出来的结果是错的。
用最直白的话说:平稳的数据,就是“守规矩”的数据。
它的统计特性(均值、方差)不会随着时间流逝而改变。无论你什么时候去观察它,它看起来都差不多。
平稳序列(心电图):
非平稳序列(股票走势):
(图示:上方是平稳序列,围绕 0 轴稳定波动;下方是非平稳序列,像醉汉走路一样没有定性)
你可能会问:“股票那种不平稳的数据才是常态啊,为什么要强求平稳?”
因为大多数经典的时间序列模型(如 ARIMA)都是基于“过去即未来”的假设。
所以,在建模前,我们通常要把“不平稳”的数据转化成“平稳”的数据。
肉眼看图虽然直观,但有时候不够严谨。我们需要一个数学上的裁判,这就是ADF 检测。
它的全称是Augmented Dickey-Fuller Test(增广迪基-福勒检验)。
ADF 检测就像法庭审判:
我们需要找证据(计算统计量)来推翻原假设。
我们在 Python 中使用statsmodels库来做 ADF 检测。结果中我们主要看两个指标:
p-value < 0.05:
p-value > 0.05:
如果 ADF 检测告诉你数据不平稳(p > 0.05),别慌,我们有绝招:差分 (Differencing)。
fromstatsmodels.tsa.stattoolsimportadfullerimportpandasaspd# 假设 data 是你的时间序列数据result=adfuller(data)print(f'ADF Statistic:{result[0]}')print(f'p-value:{result[1]}')ifresult[1]<0.05:print("恭喜!数据是平稳的。")else:print("遗憾,数据不平稳。建议做一阶差分:data.diff()")