experiments/helpers/fit_mdls_m134.R

pkgload::load_all()
series <- qs::qread(paste0("nonstandard_data/M_all_1.qs"))

series <- series %>%
  dplyr::select( -period ) %>%
  tsibble::as_tsibble( index = "index", key = "key" )

res <- series %>%
  dplyr::group_by( key ) %>%
  dplyr::mutate( train = index < max( index) - 14 + 1) %>%
  dplyr::ungroup()

train <- res %>%
  dplyr::filter( train ) %>%
  dplyr::select(-train)
test <- res %>%
  dplyr::filter( !train ) %>%
  dplyr::select(-train)

fit_models <- function( train,
                        models = list( ar = fable::AR)) {

  values_from <- tsibble::measured_vars(train)
  model_set <- purrr::map( models, ~ .x( !!rlang::sym(values_from))  )

  fabletools::model(train, !!!model_set, .safely = TRUE )
}

progressr::handlers(global = TRUE)
future::plan("multisession")

fitted_mdls <- fit_models( train, list( arima = fable::ARIMA,
                         snaive = fable::SNAIVE,
                         rw = fable::RW,
                         theta = fable::THETA,
                         ets = fable::ETS,
                         nnetar = fable::NNETAR,
                         croston = fable::CROSTON,
                         ar = fable::AR,
                         ar1 = fix_model_parameters(fable::AR, order(1)),
                         ar3 = fix_model_parameters(fable::AR, order(3)),
                         arma11 = fix_model_parameters(fable::ARIMA, pdq(1,0,1)),
                         arma31 = fix_model_parameters(fable::ARIMA, pdf(3,0,1)),
                         bats = fable.tbats::BATS,
                         tbats = fable.tbats::TBATS) )

qs::qsave(fitted_mdls, "mdls1.qs")

qs::qread( "mdls1.qs" ) -> mdls

fcsts <- fabletools::forecast( mdls, h = 14, times = 0 )

qs::qsave( fcsts, "fcsts1.qs" )
JSzitas/soothsayer documentation built on April 18, 2023, 12:59 a.m.