我有一个要预测的时间序列,为此我使用了季节性 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 示例:
时间序列如下所示:
到现在为止还挺好。我对这两个模型都进行了残差分析,这就是混乱。
acf(resid(fit1)) 看起来很棒,非常白噪声:
但是,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。自相关函数如下所示:
尽管在几个第一个滞后处存在如此明显的自相关,但 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 的残差不显示。