【发布时间】:2015-09-16 07:23:55
【问题描述】:
我正在尝试在 R 中使用 ARIMA 模型来预测数据。我的时间序列片段如下所示:
这只是一小段时间让您了解一下。我有 2010 年到 2015 年的每日数据。
我想预测未来。我正在使用forecast 库,我的代码如下所示:
dt = msts(data$val, seasonal.periods=c(7, 30))
fit = auto.arima(dt)
plot(forecast(fit, 300))
这会导致:
这个模型不好也不有趣。我的seasonal.periods 是我定义的,因为我希望看到每周和每月的季节性,但结果看起来相同,没有定义季节性周期。
我错过了什么吗?很快,预测预测的变化非常非常小。
编辑:
为了进一步说明我在说什么,这里有一个具体的例子。假设我有以下假数据集:
x = 1:500
y = 0.5*c(NA, head(x, -1)) - 0.4*c(NA, NA, head(x, -2)) + rnorm(500, 0, 5)
这是一个 AR(2) 模型,其系数为 0.5 和 0.4。绘制这个时间序列产生:
所以我为此创建了一个 ARIMA 模型并绘制了预测结果:
plot(forecast(auto.arima(y), 300))
结果是:
为什么 ARIMA 函数不能学习这个明显的模型?如果我使用 arima 函数并强制它尝试 AR(2) 模型,我不会得到任何更好的结果。
【问题讨论】:
-
这不是 AR(2) 模型。右侧的滞后项是
x,因此模型是线性趋势加噪声。但是,auto.arima应该仍然能够做得比这更好。由于某种原因,它错过了趋势。
标签: r time-series