从 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
系列很不寻常,因为它非常容易根据其季节性进行预测。你在野外遇到的大多数系列都不太像这样。
我陷入了这个问题,我无法解决。
当使用 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
系列很不寻常,因为它非常容易根据其季节性进行预测。你在野外遇到的大多数系列都不太像这样。