multilevelR2.RdCalculates several measures for the proportion of explained variance in a fitted linear mixed-effects or multilevel model (or a list of fitted models).
multilevelR2(model, print = c("RB1", "RB2", "SB", "MVP"))This function calculates several measures of explained variance (\(R^2\)) for linear-mixed effects models.
It can be used with a single model, as produced by the packages lme4 or nlme, or a list of fitted models produced by with.mitml.list.
In the latter case, the \(R^2\) measures are calculated separately for each imputed data set and then averaged across data sets.
Different \(R^2\) measures can be requested using the print argument.
Specifying RB1 and RB2 returns the explained variance at level 1 and level 2, respectively, according to Raudenbush and Bryk (2002, pp. 74 and 79).
Specifying SB returns the total variance explained according to Snijders and Bosker (2012, p. 112).
Specifying MVP returns the total variance explained based on “multilevel variance partitioning” as proposed by LaHuis, Hartman, Hakoyama, and Clark (2014).
A numeric vector containing the \(R^2\) measures requested in print.
Calculating \(R^2\) measures is currently only supported for two-level models with a single cluster variable.
LaHuis, D. M., Hartman, M. J., Hakoyama, S., & Clark, P. C. (2014). Explained variance measures for multilevel models. Organizational Research Methods, 17, 433-451.
Raudenbush, S. W., & Bryk, A. S. (2002). Hierarchical linear models: Applications and data analysis methods (2nd ed.). Thousand Oaks, CA: Sage.
Snijders, T. A. B., & Bosker, R. J. (2012). Multilevel analysis: An introduction to basic and advanced multilevel modeling. Thousand Oaks, CA: Sage.
require(lme4)
data(studentratings)
fml <- MathAchiev + ReadAchiev + CognAbility ~ 1 + (1|ID)
imp <- panImpute(studentratings, formula = fml, n.burn = 1000, n.iter = 100, m = 5)
#> Running burn-in phase ...
#> Creating imputed data set ( 1 / 5 ) ...
#> Creating imputed data set ( 2 / 5 ) ...
#> Creating imputed data set ( 3 / 5 ) ...
#> Creating imputed data set ( 4 / 5 ) ...
#> Creating imputed data set ( 5 / 5 ) ...
#> Done!
implist <- mitmlComplete(imp)
fit <- with(implist, lmer(MathAchiev ~ 1 + CognAbility + (1|ID)))
multilevelR2(fit)
#> RB1 RB2 SB MVP
#> 0.33781732 -0.08679285 0.32664989 0.32984711