Yes - many thanks!
Questions:
(1) Just to confirm, if bootstrap = TRUE
, would the following be bootstrapping the forecasts of each model, and then averaging each models bootstrap forecasts?
auscafe |>
filter(year(date) <= 2018) |>
model(ETS = ETS(turnover),
ARIMA = ARIMA(turnover ~
pdq(d=1) + PDQ(D=1))
) |>
forecast(h = "1 year", bootstrap = TRUE) |>
summarise(
turnover = dist_mixture(
turnover[1], turnover[2],
weights=c(0.5,0.5))
) |>
mutate(.model = "ENSEMBLE") |>
accuracy(
data = auscafe,
measures = list(crps=CRPS, rmse=RMSE)
)
And the same question for a Combination?
mutate(COMB = (ETS + ARIMA)/2)
The code in the repo plots distributions for Combination and Mixture models, with no transformation and bootstrap = FALSE
, as Normals and Mixture of Normals i.e. as "smoothed" distributions.
The models I have used in fable, are:
- ARIMA
- ETS
- ENSEMBLE: ARIMA and ETS
for various series, with transformations: - none (back-transformed Normal distribution),
- log (back-transformed Log-Normal distribution)
- sqrt (back-transformed Non-Central Chi-squared distribution),
all withbootstrap = TRUE
, as a Normal distribution for the residuals may be an unreasonable assumption.
(2) For the single models ARIMA, and ETS, I have used geom_density
with bootstrap = TRUE
. Correct?
(3) For the ENSEMBLE will geom_density
suffice or is there an equivalent dist_mixture( ?, ?, weights = c(0.5, 0.5)))
for geom_density
? If, not how to plot the forecast distribution for an ENSEMBLE with bootstrap = TRUE
?
(4) Also, as per fable: Combination Models, Methodology and Simple Numerical Example - #6 by mitchelloharawild, exactly how are the forecast SE's calculated/aggregated for an ENSEMBLE? I'd very much appreciate a simple numerical example.