如何在 python 中执行 ljung-box 测试


Ljung-Box 检验是一种统计检验,用于检查时间序列中是否存在自相关。

它使用以下假设:

H 0残差独立分布。

H A残差不独立分布;它们表现出序列相关性。

理想情况下,我们不希望拒绝原假设。也就是说,我们希望检验的 p 值大于 0.05,因为这意味着时间序列模型的残差是独立的,这通常是我们在创建模型时做出的假设。

本教程介绍如何在 Python 中执行 Ljung-Box 测试。

示例:Python 中的 Ljung-Box 测试

要在 Python 中对数据系列执行 Ljung-Box 测试,您可以使用statsmodels库中的acorr_ljungbox()函数,该函数使用以下语法:

acorr_ljungbox(x, 偏移量=无)

金子:

  • x:数据系列
  • lags:要测试的滞后数

此函数返回检验统计量和相应的 p 值。如果 p 值低于某个阈值(例如 α = 0.05),您可以拒绝原假设并得出残差不是独立分布的结论。

以下代码展示了如何使用此函数对名为“SUNACTIVITY”的内置 statsmodels 数据集执行 Ljung-Box 测试:

 import statsmodels.api as sm

#load data series
data = sm.datasets.sunspots.load_pandas().data

#view first ten rows of data series 
data[:5]

YEAR SUNACTIVITY
0 1700.0 5.0
1 1701.0 11.0
2 1702.0 16.0
3 1703.0 23.0
4 1704.0 36.0

#fit ARMA model to dataset
res = sm. tsa . ARMA (data[" SUNACTIVITY "],(1,1)). fit (disp=-1)

#perform Ljung-Box test on residuals with lag=5
sm. stats . acorr_ljungbox (res. resid , lags=[5], return_df= True )

          lb_stat lb_pvalue
5 107.86488 1.157710e-21

检验统计量为107.86488 ,检验 p 值为1.157710e-21 ,远小于 0.05。因此,我们拒绝检验的原假设并得出残差不是独立的结论。

请注意,在此示例中我们选择使用偏移值 5,但您可以选择要用于偏移的任何值。例如,我们可以使用值 20:

 #perform Ljung-Box test on residuals with lag=20
sm. stats . acorr_ljungbox (res. resid , lags=[20], return_df= True )

           lb_stat lb_pvalue
20 343.634016 9.117477e-61

该测试的检验统计量为343.634016 ,该测试的 p 值为9.117477e-61 ,远小于 0.05。因此,我们再次拒绝检验的原假设并得出残差不是独立的结论。

根据您的具体情况,您可以选择较低或较高的偏移值。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注