我正在尝试在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)模型,我没有得到任何更好的结果。
答案 0 :(得分:1)
auto.arima
不处理多个季节性时段。请使用tbats
。
dt = msts(data$val, seasonal.periods=c(7, 30))
fit = tbats(dt)
plot(forecast(fit, 300))
auto.arima
将使用最大的季节性时期,并尝试尽其所能。