Ensemble forecasts with fable, NYR Conference, 14 August 2020

Hi Rob,

Regarding Ensemble forecasts with fable, NYR Conference, 14 August 2020:

I'd be very grateful for the R code (as it's not included), slide 35: Combination vs ensemble forecasting, both the distribution plots, as I'd very much like to plot them myself, each step ahead.


The R code for the plots is included in the repo. See the Rmd file.

Yes - many thanks!


(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) |>
    turnover = dist_mixture(
                turnover[1], turnover[2],
  ) |>
  mutate(.model = "ENSEMBLE") |>
    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:

  • 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 with bootstrap = 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.

To answer my own questions:

(1) bootstrap = TRUE,
forecast for model1 = f1 + e1,
forecast for model2 = f2 + e2,
forecast for model3 (ENSEMBLE and COMB) = as the seed is not being reset before each model, model3's forecast will not be the mean of the (bootstrap) forecasts of model2 and model3.
(2) & (3) I think using geom_density is correct, as bootstrap = TRUE.

Please let me know if I'm incorrect.

(4) For the ENSEMBLE, to calculate the 'aggregated' SE's is simple Mixture distribution - Wikipedia :slight_smile:

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.