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

问题描述

我陷入了无法解决的问题。

在使用AirPassengers数据并通过ETS()和AUTO.ARIMA()对其建模时,拟合值似乎很合理地适合于观测值:

library(forecast)

a <- ts(AirPassengers,start = 1949,frequency = 12)
a <- window(a,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,1390,959,1630,789,1173,910,875,718,655,606,968,716,476,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,372,666,596,589,001,613,498,635,644,1018,873,900,502,121,293,259,169,378,153,24,115,250,565,349,201,393,83,327,325,185,307,501,194)
b <- ts(b,frequency = 12)
b <- window(b,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。

解决方法

这是典型的。

在预测的情况下,“拟合”值是一步一步的预测。对于许多不同类型的系列,我们能做的最好的事情就是接近最新的观察结果,并进行少量调整。这使“拟合”值看起来滞后了1个周期,因为它通常通常非常接近先前的观测值。

问为什么拟合系列滞后就像问“为什么我们在发生之前不知道未来?”。根本不是那么容易,并且它也并不表明该模型必然不足(可能无法做得更好)。

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

AirPassengers系列之所以与众不同,是因为它的季节性非常容易预测。您将在野外遇到的大多数系列都不是这样。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...