Fitting multiple models with a loop
Nobody has claimed this yet.
- Dominant language
- R
- Stars
- 588
- Forks
- 71
- Avg merge
- 1h 58m
- Merged PRs (30d)
- 1
Description
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?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No project file or test is named. Start by reading the model() and TSLM() entry points, then determine how named model definitions and dynamically generated formulas are expected to be passed; done means fitting the requested range of K values with distinct model names and a documented, tested usage path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- r
- Domain
- data
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100