multilevelmod enables the use of multi-level models (a.k.a mixed-effects models, Bayesian hierarchical models, etc.) with the parsnip package.
(meme courtesy of @ChelseaParlett
)
You can install the released version of multilevelmod from CRAN with:
install.packages("multilevelmod")
For the development version:
::install_github("tidymodels/multilevelmod") devtools
The multilevelmod package provides engines for the models in the following table.
model | engine | mode |
---|---|---|
linear_reg | stan_glmer | regression |
linear_reg | lmer | regression |
linear_reg | glmer | regression |
linear_reg | gee | regression |
linear_reg | lme | regression |
linear_reg | gls | regression |
logistic_reg | gee | classification |
logistic_reg | glmer | classification |
logistic_reg | stan_glmer | classification |
poisson_reg | gee | regression |
poisson_reg | glmer | regression |
poisson_reg | stan_glmer | regression |
Loading mixedlevelmod will trigger it to add a few modeling
engines to the parsnip model database. For Bayesian models,
there are now stan-glmer
engines for
linear_reg()
, logistic_reg()
, and
poisson_reg()
.
To use these, the function parsnip::fit()
function
should be used instead of parsnip::fit_xy()
so that the
model terms can be specified using the
lme
/lme4
syntax.
The sleepstudy
data is used as an example:
library(multilevelmod)
set.seed(1234)
data(sleepstudy, package = "lme4")
<- linear_reg() %>% set_engine("lmer")
mixed_model_spec
<-
mixed_model_fit %>%
mixed_model_spec fit(Reaction ~ Days + (Days | Subject), data = sleepstudy)
mixed_model_fit#> parsnip model object
#>
#> Linear mixed model fit by REML ['lmerMod']
#> Formula: Reaction ~ Days + (Days | Subject)
#> Data: data
#> REML criterion at convergence: 1743.628
#> Random effects:
#> Groups Name Std.Dev. Corr
#> Subject (Intercept) 24.741
#> Days 5.922 0.07
#> Residual 25.592
#> Number of obs: 180, groups: Subject, 18
#> Fixed Effects:
#> (Intercept) Days
#> 251.41 10.47
For a Bayesian model:
<- linear_reg() %>% set_engine("stan_glmer")
hier_model_spec
<-
hier_model_fit %>%
hier_model_spec fit(Reaction ~ Days + (Days | Subject), data = sleepstudy)
hier_model_fit#> parsnip model object
#>
#> stan_glmer
#> family: gaussian [identity]
#> formula: Reaction ~ Days + (Days | Subject)
#> observations: 180
#> ------
#> Median MAD_SD
#> (Intercept) 251.5 6.5
#> Days 10.5 1.7
#>
#> Auxiliary parameter(s):
#> Median MAD_SD
#> sigma 25.9 1.6
#>
#> Error terms:
#> Groups Name Std.Dev. Corr
#> Subject (Intercept) 24
#> Days 7 0.08
#> Residual 26
#> Num. levels: Subject 18
#>
#> ------
#> * For help interpreting the printed output see ?print.stanreg
#> * For info on the priors used see ?prior_summary.stanreg
This project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
For questions and discussions about tidymodels packages, modeling, and machine learning, please post on RStudio Community.
If you think you have encountered a bug, please submit an issue.
Either way, learn how to create and share a reprex (a minimal, reproducible example), to clearly communicate about your code.
Check out further details on contributing guidelines for tidymodels packages and how to get help.