Python时间序列分析:白噪声与平稳性检验实战

唐可
唐可
发布时间:2026-10-13 | 3人浏览过
原创

本文详细介绍如何在Python中进行时间序列的纯随机性(白噪声)检验与平稳性检验。通过statsmodels库的acorr_ljungbox函数实现Ljung-Box检验,判断数据是否为纯随机序列;同时利用arch库和statsmodels进行ADF单位根检验,评估序列平稳性。文章包含具体代码示例、参数说明及结果解读,适用于数据预处理与建模前的关键步骤。

白噪声检验基础与函数介绍

白噪声检验,亦称纯随机性检验,是时间序列分析中的基础步骤。若数据表现为纯随机波动,则进一步挖掘其规律将失去实际意义。因此,在获取数据后,建议首先执行纯随机性检验以确认数据的有效性。

在Python中,可使用`acorr_ljungbox(x, lags=None, boxpierce=False)`函数执行数据的纯随机性检验。

参数`lags`用于指定延迟期数。若传入整数,则包含该整数以内的所有延迟期;若传入列表或数组,则包含列表中最大时滞及其之前的所有时滞。

当参数`boxpierce`设置为True时,函数除返回LB统计量外,还将额外返回Box-Pierce Q统计量。

该函数的返回值包含以下关键指标:

`lbvalue`:表示Ljung-Box检验的统计量值。

`pvalue`:基于卡方分布计算得出的P统计量。

`bpvalue`:(可选)基于Box-Pierce检验的P统计量,类型为float或array。

`bppvalue`:(可选)基于卡方分布下的Box-Pierce检验的P统计量,类型为float或array。

以下是具体的代码实现示例:

from statsmodels.stats.diagnostic import acorr_ljungbox acorr_ljungbox(b.salesVolume, lags = [6, 12],boxpierce=True)

观察输出结果可知,无论采用哪种统计量,其对应的P值均较大。这意味着无法拒绝原假设,从而推断该数据属于纯随机数据序列。

时间序列平稳性检验:ADF方法实战

补充知识:在Python中实现时间序列的单位根检验。

构建时间序列模型前,必须对数据进行平稳性检验。常用的检验方法包括DF检验、ADF检验和PP检验。下文将以ADF检验为例进行说明。

注:P值是指在假设检验中,利用样本观测值能够拒绝原假设的最小显著性水平。

若显著性水平a大于或等于P值(a >= p),则在显著性水平a下拒绝原假设H0。

若显著性水平a小于P值(a < p),则在显著性水平a下接受原假设H0。

实现方法一:

from arch.unitroot import ADF ADF(data)

ADF检验的原假设为序列不平稳。示例中P值近似为0,因此拒绝原假设,判定该序列是平稳的。

from statsmodels.stats.diagnostic import unitroot_adf unitroot_adf(b.salesVolume)

此方法输出包含检验值、p-value、滞后阶数及自由度等信息。示例中检验统计量为–5.954367776923936,小于1%显著性水平下的临界值-4.01203360058309。由于P值远小于0.01,我们拒绝原假设(原假设为存在单位根,即序列非平稳),从而认为该时间序列是平稳的。

以上即为使用Python实现时间序列白噪声检验与平稳性检验的完整内容,希望能为读者提供参考与支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表