【问题标题】:R ARIMA model giving odd resultsR ARIMA 模型给出奇怪的结果
【发布时间】: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.50.4。绘制这个时间序列产生:

所以我为此创建了一个 ARIMA 模型并绘制了预测结果:

plot(forecast(auto.arima(y), 300))

结果是:

为什么 ARIMA 函数不能学习这个明显的模型?如果我使用 arima 函数并强制它尝试 AR(2) 模型,我不会得到任何更好的结果。

【问题讨论】:

  • 这不是 AR(2) 模型。右侧的滞后项是x,因此模型是线性趋势加噪声。但是,auto.arima 应该仍然能够做得比这更好。由于某种原因,它错过了趋势。

标签: r time-series


【解决方案1】:

auto.arima 不处理多个季节性时段。为此使用tbats

dt = msts(data$val, seasonal.periods=c(7, 30))
fit = tbats(dt)
plot(forecast(fit, 300))

auto.arima 将只使用最大的季节性时段,并尽力做到最好。

【讨论】:

  • 嘿@Rob Hyndman 谢谢你,我没有意识到这一点。 tbats 确实提供了更好的结果,但我仍然不确定为什么 arima 函数甚至不能提供简单的 ARIMA 模型。查看我的编辑。
猜你喜欢
  • 2020-08-12
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多