R 中 ARIMA 残差的 Ljung-Box 统计:令人困惑的测试结果

机器算法验证 r 时间序列 统计学意义 有马 残差
2022-02-08 01:04:15

我有一个要预测的时间序列,为此我使用了季节性 ARIMA(0,0,0)(0,1,0)[12] 模型 (=fit2)。它与 R 建议的 auto.arima 不同(R 计算的 ARIMA(0,1,1)(0,1,0)[12] 会更合适,我将其命名为 fit1)。然而,在我的时间序列的最后 12 个月中,我的模型 (fit2) 在调整后似乎更合适(它长期存在偏差,我添加了残差均值,新的拟合似乎更贴合原始时间序列. 以下是过去 12 个月的示例和最近 12 个月的 MAPE 示例:

fit1、fit2 和原始数据

时间序列如下所示:

原始时间序列

到现在为止还挺好。我对这两个模型都进行了残差分析,这就是混乱。

acf(resid(fit1)) 看起来很棒,非常白噪声:

适合的acf1

但是,Ljung-Box 测试对于 20 滞后看起来并不好:

    Box.test(resid(fit1),type="Ljung",lag=20,fitdf=1)

我得到以下结果:

    X-squared = 26.8511, df = 19, p-value = 0.1082

据我了解,这是对残差不独立的确认(p 值太大而无法与独立假设保持一致)。

但是,对于滞后 1,一切都很好:

    Box.test(resid(fit1),type="Ljung",lag=1,fitdf=1)

给我结果:

    X-squared = 0.3512, df = 0, p-value < 2.2e-16

要么我不理解测试,要么与我在 acf 图上看到的略有矛盾。自相关低得可笑。

然后我检查了fit2。自相关函数如下所示:

acf fit2

尽管在几个第一个滞后处存在如此明显的自相关,但 Ljung-Box 测试在 20 个滞后处给了我比 fit1 更好的结果:

    Box.test(resid(fit2),type="Ljung",lag=20,fitdf=0)

结果是 :

    X-squared = 147.4062, df = 20, p-value < 2.2e-16

而只是检查 lag1 的自相关,也给了我对零假设的确认!

    Box.test(resid(arima2.fit),type="Ljung",lag=1,fitdf=0)
    X-squared = 30.8958, df = 1, p-value = 2.723e-08 

我是否正确理解了测试?p 值最好小于 0.05,以确认残差独立性的零假设。哪种拟合更适合用于预测,fit1 还是 fit2?

附加信息:fit1 的残差显示正态分布,fit2 的残差不显示。

4个回答

您对测试的解释是错误的。如果 p 值大于 0.05,则残差是独立的,我们希望模型正确。如果您使用下面的代码模拟白噪声时间序列并对其使用相同的测试,则 p 值将大于 0.05。

m = c(ar, ma)
w = arima.sim(m, 120)
w = ts(w)
plot(w)
Box.test(w, type="Ljung-Box")

许多统计检验被用来试图拒绝一些零假设。在这种特殊情况下,Ljung-Box 测试试图拒绝某些值的独立性。这是什么意思?

  • 如果p 值 < 0.05 1:假设犯错的可能性为 5%,您可以拒绝原假设。因此,您可以假设您的价值观相互依赖。

  • 如果p 值 > 0.05 1:您没有足够的统计证据来拒绝原假设。所以你不能假设你的价值观是依赖的。这可能意味着您的价值观无论如何都是依赖的,也可能意味着您的价值观是独立的。但是您并没有证明任何具体的可能性,您的测试实际上说的是您不能断言值的依赖性,也不能断言值的独立性。

一般来说,这里重要的是要记住 p 值 < 0.05 可以让您拒绝零假设,但 p 值 > 0.05不能让您确认零假设。

特别是,您无法使用 Ljung-Box 检验证明时间序列值的独立性。你只能证明依赖关系。


1:我假设α=0.05,这是风险的标准值。

根据 ACF 图,很明显拟合 1 更好,因为滞后 k(k>1) 处的相关系数急剧下降,接近 0。

如果你用 ACF 判断,那么 fit 1 更合适。您仍然可以使用残差的相关图来确定 fit1 和 fit2 之间的最佳拟合,而不是对 Ljung 测试感到困惑