解释 ARIMA 模型的预测
Posted
技术标签:
【中文标题】解释 ARIMA 模型的预测【英文标题】:Explaining the forecasts from an ARIMA model 【发布时间】:2011-02-10 16:27:31 【问题描述】:我试图向自己解释将 ARIMA 模型应用于时间序列数据集的预测结果。数据来自M1-Competition,系列为MNB65。我正在尝试将数据拟合到 ARIMA(1,0,0) 模型并获得预测。我正在使用 R。这里有一些输出 sn-ps:
> 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) 这显然是一个具有非平稳均值的序列。为什么 auto.arima
仍将 AR(2) 模型选为最佳模型?有没有直观的解释?
谢谢。
【问题讨论】:
我投票决定关闭它,因为它不是编程问题。 【参考方案1】:没有 ARIMA(p,0,q) 模型允许趋势,因为模型是固定的。如果您确实想要包含趋势,请使用带有漂移项的 ARIMA(p,1,q) 或 ARIMA(p,2,q)。 auto.arima() 暗示 0 差异的事实通常表明没有明显的趋势。
arima() 的帮助文件显示截距实际上是平均值。也就是说,AR(1) 模型是(Y_t-c) = ϕ(Y_t-1 - c) + e_t
,而不是您可能期望的Y_t = c + ϕY_t-1 + e_t
。
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) 确实有趋势。
【讨论】:
教授。 Hyndman,有没有办法确定一个系列是 I(2) 还是需要两次差分才能使其静止?如果系列被区分一次或两次,进一步分析的结果会有所不同。您的帖子建议使用 KPSS,但有其他选择吗?谢谢。以上是关于解释 ARIMA 模型的预测的主要内容,如果未能解决你的问题,请参考以下文章