从 R 中的 ETS() 和 AUTO.ARIMA() 模型解释拟合值的问题

Problems Interpreting fitted values from ETS() and AUTO.ARIMA() models in R

我陷入了这个问题,我无法解决。

当使用 AirPassengers 数据并通过 ETS() 和 AUTO.ARIMA() 对其建模时,拟合值似乎与观测值非常吻合:

library(forecast)

a <- ts(AirPassengers, start = 1949, frequency = 12)
a <- window(a, start = 1949, end = c(1954,12), frequency = 12)

fit_a_ets <- ets(a)
fit_a_arima <- auto.arima(a)

plot(a)
lines(fit_a_ets$fitted, col = "blue")
lines(fit_a_arima$fitted, col = "red")

Plot from AirPassengers and fitted models

当我在我的数据上尝试相同的代码时,它似乎错位了 1 个句点:

b <- c(1237,1982,1191,1163,1418,1687,2331,2181,1943,1782,177,1871,391,1397,734,712,1006,508,368,767,675,701,989,725,1292,983,1094,1105,928,1246,1604,1163,1390,959,1630,789,1173,910,875,718,655,606,968,716,476,476,655,499,544,1250,359,386,458,947,542,953,1450,1195,1317,957,778,1030,1399,1119,3142,1024,1537,1321,2062,1897,2094,2546,1796,2089,1194,896,727,599,785,674,828,311,375,315,365,314,126,315,372,666,596,589,001,613,498,635,644,1018,873,900,502,121,293,259,311,169,378,153,24,115,250,565,349,201,393,83,327,325,185,307,501,194)
b <- ts(b, start = 1949, frequency = 12)
b <- window(b, start = 1949, end = c(1954,12), frequency = 12)

fit_b_ets <- ets(b)
fit_b_arima <- auto.arima(b)

plot(b)
lines(fit_b_ets$fitted, col = "blue")
lines(fit_b_arima$fitted, col = "red")

Plot from my data and fitted models

有人知道为什么吗?

在这里试过 https://otexts.com/fpp2/index.html 但我不明白为什么会这样。

我认为这是因为它没有很好地适合我的数据,但对于其他数据集,同样会发生。例如,来自 https://otexts.com/fpp2/ses.html.

的图 7.1

这是典型的。

在预测的上下文中,“拟合”值是 one-step-ahead 预测。对于许多不同类型的系列,我们能做的最好的事情就是接近最新观察结果,再加上小幅调整。这使得它看起来像“拟合”值滞后 1 个周期,因为它通常非常接近先前的观察值。

问为什么拟合序列滞后就像问“为什么我们不能在未来发生之前就知道未来?”。根本就没那么容易,也不是说模型一定不完善(也不一定能做得更好)。

比较观察值和拟合值的时间序列的图很少用于预测;他们总是本质上看起来像这样。这也使得很难判断线之间的垂直距离,这是您真正关心的(预测误差)。最好直接绘制预测误差。

AirPassengers 系列很不寻常,因为它非常容易根据其季节性进行预测。你在野外遇到的大多数系列都不太像这样。