Python时间序列分析:白噪声与平稳性检验实战
本文详细介绍如何在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实现时间序列白噪声检验与平稳性检验的完整内容,希望能为读者提供参考与支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













