The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
The goal of nestedmodels is to allow the modelling of nested data. Some models only accept certain predictors. For panel data, it is often desirable to create a model for each panel. nestedmodels enhances the ‘tidymodels’ set of packages by allowing the user to classify a model as ‘nested’.
# Install the released version on CRAN
install.packages("nestedmodels")
# Or install the development version from GitHub:
# install.packages("devtools")
::install_github("ashbythorpe/nestedmodels") devtools
library(nestedmodels)
Nested models are often best used on panel data.
<- example_nested_data
data
<- tidyr::nest(example_nested_data, data = -id)
nested_data
nested_data#> # A tibble: 20 × 2
#> id data
#> <int> <list>
#> 1 1 <tibble [50 × 6]>
#> 2 2 <tibble [50 × 6]>
#> 3 3 <tibble [50 × 6]>
#> 4 4 <tibble [50 × 6]>
#> 5 5 <tibble [50 × 6]>
#> 6 6 <tibble [50 × 6]>
#> 7 7 <tibble [50 × 6]>
#> 8 8 <tibble [50 × 6]>
#> 9 9 <tibble [50 × 6]>
#> 10 10 <tibble [50 × 6]>
#> 11 11 <tibble [50 × 6]>
#> 12 12 <tibble [50 × 6]>
#> 13 13 <tibble [50 × 6]>
#> 14 14 <tibble [50 × 6]>
#> 15 15 <tibble [50 × 6]>
#> 16 16 <tibble [50 × 6]>
#> 17 17 <tibble [50 × 6]>
#> 18 18 <tibble [50 × 6]>
#> 19 19 <tibble [50 × 6]>
#> 20 20 <tibble [50 × 6]>
The nested_resamples()
function makes sure that the
testing and training data contain every unique value of ‘id’.
<- nested_resamples(nested_data, rsample::initial_split())
split
<- rsample::training(split)
data_tr <- rsample::testing(split) data_tst
Fitting a nested model to this data is very simple.
<- parsnip::linear_reg() %>%
model nested()
<- fit(model, z ~ x + y + a + b,
fit ::nest(data_tr, data = -id))
tidyr
predict(fit, data_tst)
#> # A tibble: 260 × 1
#> .pred
#> <dbl>
#> 1 35.0
#> 2 27.7
#> 3 35.0
#> 4 39.4
#> 5 30.4
#> 6 29.5
#> 7 33.8
#> 8 33.1
#> 9 26.3
#> 10 18.9
#> # ℹ 250 more rows
If you don’t want to nest your data manually, use
step_nest()
inside a workflow:
<- recipes::recipe(data_tr, z ~ x + y + a + b + id) %>%
recipe step_nest(id)
<- workflows::workflow() %>%
wf ::add_model(model) %>%
workflows::add_recipe(recipe)
workflows
<- fit(wf, data_tr)
wf_fit
predict(wf_fit, data_tst)
#> # A tibble: 260 × 1
#> .pred
#> <dbl>
#> 1 35.0
#> 2 27.7
#> 3 35.0
#> 4 39.4
#> 5 30.4
#> 6 29.5
#> 7 33.8
#> 8 33.1
#> 9 26.3
#> 10 18.9
#> # ℹ 250 more rows
Please note that the nestedmodels project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.