我有一个简单的示例时间序列:
数据:
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2000 200.1 199.5 199.4 198.9 199.0 200.2 198.6 200.0 200.3 201.2 201.6 201.5
2001 201.5 203.5 204.9 207.1 210.5 210.5 209.8 208.8 209.5 213.2 213.7 215.1
2002 218.7 219.8 220.5 223.8 222.8 223.8 221.7 222.3 220.8 219.4 220.1 220.6
2003 218.9 217.8 217.7 215.0 215.3 215.9 216.7 216.7 217.7 218.7 222.9 224.9
2004 222.2 220.7 220.0 218.7 217.0 215.9 215.8 214.1 212.3 213.9 214.6 213.6
2005 212.1 211.4 213.1 212.9 213.3 211.5 212.3 213.0 211.0 210.7 210.1 211.4
2006 210.0 209.7 208.8 208.8 208.8 210.6 211.9 212.8 212.5 214.8 215.3 217.5
2007 218.8 220.7 222.2 226.7 228.4 233.2 235.7 237.1 240.6 243.8 245.3 246.0
2008 246.3 247.7 247.6 247.8 249.4 249.0 249.9 250.5 251.5 249.0 247.6 248.8
2009 250.4 250.7 253.0 253.7 255.0 256.2 256.0 257.4 260.4 260.0 261.3 260.4
2010 261.6 260.8 259.8 259.0 258.9 257.4 257.7 257.9 257.4 257.3 257.6 258.9
2011 257.8 257.7 257.2 257.5 256.8 257.5 257.0 257.6 257.3 257.5 259.6 261.1
2012 262.9 263.3 262.8 261.8 262.2 262.7
然后我运行了 4 个不同的时间序列预测模型:Holt Winters 平滑、TBATS 平滑、ARIMA 和具有以下功能的 AR 神经网络:HoltWinters()、tbats()、auto.arima()、nnetar()
我预测了 36 个时期(3 年)。结果如下:
我的问题是为什么 HoltWinters 似乎是唯一有意义的预测。我有足够的数据得到所有其他预测的平线似乎很奇怪。就像有什么东西坏了,或者我不理解什么东西。特别是因为 TBATS 是 Holt Winters 的广义形式。只看系列 ARIMA 应该输出比平均平均值更多的东西吗?正确的?(1,1,1) 甚至暗示它考虑了差异。此外,没有一个模型似乎失败并返回一个空模型。很好奇为什么我会看到这些结果以及如何解释。
非常感谢任何帮助或解释!
顺便说一句,需求是一个ts
对象。
下面是我的代码:
hw_test = HoltWinters(demand)
hw_forecast = forecast(hw_test, h=36)
plot(hw_forecast)
arima_test = auto.arima(demand)
arima_forecast = forecast(arima_test, h=36)
plot(arima_forecast)
tbats_test = tbats(demand)
tbats_forecast = forecast(tbats_test, h=36)
plot(tbats_forecast)
nn_test = nnetar(demand)
nn_forecast = forecast(nn_test, h=36)
plot(nn_forecast)