I am currently in a scenario where I need to fit multiple models where I just change one of the parameters.
library(fpp3)
gas <- us_gasoline %>% filter(year(Week) <= 2004)
gas %>% autoplot(Barrels)
fit <- gas %>%
model(
fourier1 = TSLM(Barrels ~ trend() + fourier(K = 1)),
fourier2 = TSLM(Barrels ~ trend() + fourier(K = 2)),
fourier3 = TSLM(Barrels ~ trend() + fourier(K = 3)),
fourier4 = TSLM(Barrels ~ trend() + fourier(K = 4)),
fourier5 = TSLM(Barrels ~ trend() + fourier(K = 5)),
fourier6 = TSLM(Barrels ~ trend() + fourier(K = 6)),
fourier7 = TSLM(Barrels ~ trend() + fourier(K = 7)),
fourier8 = TSLM(Barrels ~ trend() + fourier(K = 8)),
fourier9 = TSLM(Barrels ~ trend() + fourier(K = 9))
)
I would like to have a loop from 1 to n and create a model definition for each of the values of K that I would then feed to the function model
. I would like to store the model definitions in a dictionary (list) where I would have separately the model name and the model itself.
Thus far I have been able to create single model formuas and feed them to the function model in a successful manner:
form <- as.formula("Barrels ~ trend() + fourier(K = 1)")
mod <- TSLM(form)
gas %>%
model(
mod
)
My goal would be to have a set of model definitions created in a loop and stored in a list, which I would then feed to the function model as arguments
# Create model definitions
mods <- list()
for (i in seq(1, 9)) {
form <- paste0("Barrels ~ trend() + fourier(K = ", as.character(i), ")")
mods[[paste0("model_name_", as.character(i))]] <- TSLM(form)
}
In python I would use list unpacking or dict unpacking to achieve this, but I fail to attain this in R. People suggest using do.call
but I fail to do this...
Could anybody please help?