rtime-seriesensemble-learning# How to do ensembles with time series using AICc?

Start by making a very simple ensemble time series model, using data from the book Forecasting Principles and Practice, 3rd edition:

```
library(fpp3)
Time_Series <- fpp3::aus_airpassengers
fit <- Time_Series %>%
model(
Ets1 = ETS(Passengers ~ season() + trend()),
Ets2 = ETS(Passengers ~ trend())
) %>%
mutate(combination = (Ets1 + Ets2)/2)
```

Now measure the results using AICc:

```
Results <-
fabletools::glance(fit) %>%
dplyr::select(.model, AICc) %>%
dplyr::arrange(AICc)
```

This returns the error:

```
no applicable method for 'glance' applied to an object of class "model_combination"
```

While RMSE does work, the text states, "Consequently, we recommend that one of the AICc, AIC, or CV statistics be used, each of which has forecasting as their objective..., In most of the examples in this book, we use the AICc value to select the forecasting model." (source: https://otexts.com/fpp3/selecting-predictors.html)

So how can the results of the time series ensemble be measured using AICc?

Solution

An ensemble is not a model, and so there is no likelihood. Without a likelihood, you can't compute the AICc (or other penalized likelihood measures).

In theory, you could define a "model" as $y_t = \hat{y}*{t|t-1} + \varepsilon_t$, where $\hat{y}*{t|t-1}$ is the one-step forecast obtained from the combination. Then the Gaussian "likelihood" could be obtained assuming the errors are normally distributed. However, it is not obvious how to define the model degrees of freedom, needed to compute the AICc penalty. It is not simply the sum of the two component model degrees of freedom, because the errors from the component models are almost certainly highly correlated. Perhaps the average of the two would work, but to my knowledge, no-one has developed the theory for that.

- Making an SEIR model parameter to depend on incidence of a compartment at each time step using ode function
- Applying strsplit() on data.frame results in unexpected output
- How to use pivot_longer to combine multiple columns in R with dplyr
- How to access and read files on an external hard drive using R and RStudio (Mac)?
- Subsetting netcdf files with multiple variables by time range
- Using enter key with action button in R Shiny
- How do I change the default library path for R packages
- Change background color between day and night in R base
- Balance of deposit account using tidyverse / mutate
- How to color in flextable with an as_grouped_data format with equal cells with same values
- Error in x[[1]] : subscript out of bounds
- How to configure chatbot using the shinyChatR package
- Remove rows with dplyr based on two conditions of two variables in R
- Calculate CDF of Weibull distribution in R
- How to delete all strings except some specific name in R?
- Assign date order (mm/dd/yyyy) to a date time character in R
- How to use conditional panel in R Shiny to only hide and show user inputs while still allowing underlying calculations to run?
- What are the ways for the faster processing of raster stack
- Regression with Panel Data (Wide)?
- R -How to pass value in mongolite Query
- Saving output from a function containing loop and ifelse
- A simple pivot_longer on 3D array in R?
- How to add a subscript in R
- MCMC and binary logistic regressions with zero events
- Summary statistics table in R Markdown
- calculate color scale range independently for each facet
- Remove variable label when using tbl_strata() and tbl_summary() from gtsummary package
- Adding superscript and minus signs to data and axis labels in ggplot2
- R equivalent of MATLAB's pascal(n, 1) different column signs
- Scraping federal note yield table from the treasury website