gpt4 book ai didi

r - 解释 ARIMA 模型的预测

转载 作者:行者123 更新时间:2023-12-02 17:13:14 24 4
gpt4 key购买 nike

我试图向自己解释将 ARIMA 模型应用于时间序列数据集的预测结果。数据来自M1-Competition,系列号为MNB65。我正在尝试将数据拟合到 ARIMA(1,0,0) 模型并获得预测。我正在使用 R。以下是一些输出片段:

> arima(x, order = c(1,0,0))
Series: x
ARIMA(1,0,0) with non-zero mean
Call: arima(x = x, order = c(1, 0, 0))
Coefficients:
ar1 intercept
0.9421 12260.298
s.e. 0.0474 202.717

> predict(arima(x, order = c(1,0,0)), n.ahead=12)
$pred
Time Series:
Start = 53
End = 64
Frequency = 1
[1] 11757.39 11786.50 11813.92 11839.75 11864.09 11887.02 11908.62 11928.97 11948.15 11966.21 11983.23 11999.27

我有几个问题:

(1) 如何解释虽然数据集显示出明显的下降趋势,但该模型的预测却呈上升趋势? ARIMA(2,0,0) 也会发生这种情况,它是使用 auto.arima(预测包)和 ARIMA(1,0,1) 模型的数据的最佳 ARIMA 拟合。

(2) ARIMA(1,0,0) 模型的截距值为 12260.298。截距不应该满足方程:C = Mean * (1 - sum(AR coeffs)),在这种情况下,该值应为 715.52。我一定错过了一些基本的东西。

(3) 这显然是一个具有非平稳均值的序列。为什么 AR(2) 模型仍然被 auto.arima 选为最佳模型?有没有直观的解释?

谢谢。

最佳答案

  1. ARIMA(p,0,q) 模型不会考虑趋势,因为该模型是平稳的。如果您确实想要包含趋势,请使用带有漂移项的 ARIMA(p,1,q) 或 ARIMA(p,2,q)。 auto.arima() 建议 0 差异的事实通常表明没有明显的趋势。

  2. arima() 的帮助文件显示截距实际上是平均值。也就是说,AR(1) 模型是 (Y_t-c) = phi(Y_{t-1} - c) + e_t 而不是 Y_t = c + phiY_{t-1 } + e_t 如您所料。

  3. auto.arima() 使用单位根测试来确定所需的差异数量。因此,请检查单位根检验的结果,看看发生了什么。如果您认为单位根测试不会产生合理的模型,您始终可以在 auto.arima() 中指定所需的差异数。

以下是两次数据测试的结果:

R> adf.test(x)

Augmented Dickey-Fuller Test

data: x
Dickey-Fuller = -1.031, Lag order = 3, p-value = 0.9249
alternative hypothesis: stationary

R> kpss.test(x)

KPSS Test for Level Stationarity

data: x
KPSS Level = 0.3491, Truncation lag parameter = 1, p-value = 0.09909

因此,ADF 表示强烈非平稳性(这种情况下的原假设),而 KPSS 并不完全拒绝平稳性(该检验的原假设)。 auto.arima() 默认使用后者。如果您想要第一次测试,可以使用 auto.arima(x,test="adf") 。在这种情况下,它建议模型 ARIMA(0,2,1) 确实有趋势。

关于r - 解释 ARIMA 模型的预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2684479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com