12.4 预测组合
提高预测精度的一个简单方法是在同一时间序列上使用几种不同的预测方法,并对预测结果进行平均。近50年前, John Bates 和 Clive Granger 发表了一篇著名的论文(Bates & Granger, 1969 ),表明组合预测方法往往能提高预测的准确性。20年后, Clemen (1989) 写道
结论是无异议的:组合多个预测方法可以提高预测准确性。在许多情况下,只需对不同预测方法的预测结果进行平均就可以显著提高预测精度。
虽然已经有相当多的研究使用加权平均数,或其他更复杂的组合方法,但经证明使用简单平均是难以超越的。
以下示例是1982年4月至2017年9月澳大利亚外出就餐的月度支出数据。我们使用以下模型进行预测: ETS , ARIMA , STL-ETS , NNAR 和 TBATS ;我们对过去5年(60个月)的观察结果进行比较。
<- window(auscafe, end=c(2012,9))
train <- length(auscafe) - length(train)
h <- forecast(ets(train), h=h)
ETS <- forecast(auto.arima(train, lambda=0, biasadj=TRUE), h=h)
ARIMA <- stlf(train, lambda=0, h=h, biasadj=TRUE)
STL <- forecast(nnetar(train), h=h)
NNAR <- forecast(tbats(train, biasadj=TRUE), h=h)
TBATS <- (ETS[["mean"]] + ARIMA[["mean"]] +
Combination "mean"]] + NNAR[["mean"]] + TBATS[["mean"]])/5 STL[[
autoplot(auscafe) +
autolayer(ETS, series="ETS", PI=FALSE) +
autolayer(ARIMA, series="ARIMA", PI=FALSE) +
autolayer(STL, series="STL", PI=FALSE) +
autolayer(NNAR, series="NNAR", PI=FALSE) +
autolayer(TBATS, series="TBATS", PI=FALSE) +
autolayer(Combination, series="Combination") +
xlab("年") + ylab("十亿美元") +
ggtitle("澳大利亚外出就餐月支出") +
theme(text = element_text(family = "STHeiti"))

图 12.5: 使用各种方法对澳大利亚外出就餐月支出的预测。
c(ETS=accuracy(ETS, auscafe)["Test set","RMSE"],
ARIMA=accuracy(ARIMA, auscafe)["Test set","RMSE"],
`STL-ETS`=accuracy(STL, auscafe)["Test set","RMSE"],
NNAR=accuracy(NNAR, auscafe)["Test set","RMSE"],
TBATS=accuracy(TBATS, auscafe)["Test set","RMSE"],
Combination=accuracy(Combination, auscafe)["Test set","RMSE"])
#> ETS ARIMA STL-ETS NNAR
#> 0.13700 0.15920 0.19310 0.31769
#> TBATS Combination
#> 0.09406 0.07161
TBATS 方法在这个时间序列数据中表现的非常好,但是使用预测组合方法会得到更好的结果。对于其他数据, TBATS 可能会表现的非常糟糕,而预测组合方法的效果几乎总是接近或优于最佳方法。