How to get multiple-steps ahead forecast with STL model in fable-r?

345 Views Asked by At

My purpose is forecast multiple-step without re-estimation. And I will update new observation to next forecast.

I did not using fit and apply forecast(h=7) because this function using fitted value to forecast next observation.

I used following codes to get 1-step ahead forecast with stretch_tsibble to do it.

library(fable)
library(dplyr)
library(tsibble)
library(feasts)
us_accidental_deaths <- as_tsibble(USAccDeaths)

stretch_dt <- us_accidental_deaths %>%
  stretch_tsibble(.init = 60, .step = 1)

fit_train <- stretch_dt %>%
  # keep same estimate period with each .id
  filter_index(. ~ '1977 Dec') %>%
  model(stl_ets_mod = decomposition_model(
    STL(value, ~ season(window = 12)),
    ETS(season_adjust ~ season("N")),
    SNAIVE(season_year)
  ),
  arima_mod = ARIMA(value))

It's ok when I refit ARIMA model

fit_train %>% 
  select(arima_mod) %>% 
  refit(stretch_dt) %>% 
  forecast(h = 1)

But I met error when I refit STL model.

fit_train %>% 
  select(stl_ets_mod) %>% 
  refit(stretch_dt) %>% 
  forecast(h = 1)

Many thanks !!!

1

There are 1 best solutions below

0
On

The error you are getting is

! no applicable method for 'refit' applied to an object of class "c('decomposition_model', 'model_combination')"

refit() is not available for all models.

It is not clear how a refit should work for an STL decomposition. The STL components are specific to the data set used for training. If the model is applied to a different data set, potentially of a different length, what should the components be?