白噪声系列的 Box-Ljung 检验

机器算法验证 r 时间序列 自相关 白噪声
2022-03-22 17:54:37

我在 R 中生成这些数据:

set.seed(111)
ds=rnorm(1000)

当我执行 Box-Ljung 测试来测试独立性时:

Box.test(ds,type='Ljung',lag=log(length(ds)))

它给了我 p-value=0.5957,这是合理的。但是,当我执行此操作时:

Box.test(ds[180:299],type='Ljung',lag=log(length(ds[180:299])))

它给了我 p-value=0.00162045,这意味着这个子序列的自相关与零显着不同。这也发生在其他一些子序列上。但是,我使用$rnorm$R 中的函数生成了具有 1000 个数据点的时间序列。有人可以解释一下吗?首先十分感谢。

为方便各位不使用R的读者,子序列ds[180:299]可以在这里获取:http: //ykang.hostoi.com/ds120.pdf

2个回答

让我们做一个模拟,对长度为 120 的时间序列应用 1000 次测试。

> fun <- function(n) {Box.test(rnorm(n),type="Ljung-Box",lag=log(n))$p.value}
> set.seed(111)
> mc <- sapply(rep(120,1000),fun)
> sum(mc<0.05)/length(mc)
[1] 0.039

因此,如果我们假设阈值为 0.05,那么在 1000 个案例中,有 39 个案例的 null 被拒绝。这是完全正常的。

检验统计量是具有分布的随机变量。这意味着它可以获得不太可能的值,或者可能的概率很小。当值不太可能时,我们拒绝原假设,但是这样做我们会犯Type I error

这种子序列测试实际上与 Box 测试的局部平稳扩展有关,以检测时变依赖关系(论文)。

在独立白噪声的零假设下,您可以计算 Box 检验N时间序列上的非重叠子窗口,将它们加在一起,然后测试这些检验统计量的总和的显着性。这是因为渐近窗口的检验统计量i有个χ2分布与ki自由度,其中ki是在子窗口中测试的滞后i,i=1,,N. 在 null 下它们是独立的,并且独立的和χ2随机变量又有一个χ2分布与K=i=1Nki自由程度。

这应该可以回答为什么您的时间序列的一个子窗口可能具有较低的 p 值;但是当您添加所有子窗口测试统计信息时,您的特定窗口中的这一大测试统计信息将与其他子窗口中的一些极低的测试统计信息相平衡。总体而言,您将再次获得正确的测试覆盖率。

有关技术细节,请参阅上面的论文。对于 R 代码和数据应用程序,请参阅此博客文章或其他 stackoverflow 文章:``没有单位根的系列是非平稳的很好的例子?''