get_variance {insight} | R Documentation |
Get variance components from random effects models
Description
This function extracts the different variance components of a mixed model and
returns the result as list. Functions like get_variance_residual(x)
or
get_variance_fixed(x)
are shortcuts for get_variance(x, component = "residual")
etc.
Usage
get_variance(
x,
component = c("all", "fixed", "random", "residual", "distribution", "dispersion",
"intercept", "slope", "rho01", "rho00"),
verbose = TRUE,
...
)
get_variance_residual(x, verbose = TRUE, ...)
get_variance_fixed(x, verbose = TRUE, ...)
get_variance_random(x, verbose = TRUE, tolerance = 1e-05, ...)
get_variance_distribution(x, verbose = TRUE, ...)
get_variance_dispersion(x, verbose = TRUE, ...)
get_variance_intercept(x, verbose = TRUE, ...)
get_variance_slope(x, verbose = TRUE, ...)
get_correlation_slope_intercept(x, verbose = TRUE, ...)
get_correlation_slopes(x, verbose = TRUE, ...)
Arguments
x |
A mixed effects model. |
component |
Character value, indicating the variance component that should
be returned. By default, all variance components are returned. The
distribution-specific ( |
verbose |
Toggle off warnings. |
... |
Currently not used. |
tolerance |
Tolerance for singularity check of random effects, to decide
whether to compute random effect variances or not. Indicates up to which
value the convergence result is accepted. The larger tolerance is, the
stricter the test will be. See |
Details
This function returns different variance components from mixed models, which are needed, for instance, to calculate r-squared measures or the intraclass-correlation coefficient (ICC).
Value
A list with following elements:
-
var.fixed
, variance attributable to the fixed effects -
var.random
, (mean) variance of random effects -
var.residual
, residual variance (sum of dispersion and distribution) -
var.distribution
, distribution-specific variance -
var.dispersion
, variance due to additive dispersion -
var.intercept
, the random-intercept-variance, or between-subject-variance (τ00) -
var.slope
, the random-slope-variance (τ11) -
cor.slope_intercept
, the random-slope-intercept-correlation (ρ01) -
cor.slopes
, the correlation between random slopes (ρ00)
Fixed effects variance
The fixed effects variance, σ2f, is the variance of the matrix-multiplication β∗X (parameter vector by model matrix).
Random effects variance
The random effect variance, σ2i, represents the mean random effect variance of the model. Since this variance reflects the "average" random effects variance for mixed models, it is also appropriate for models with more complex random effects structures, like random slopes or nested random effects. Details can be found in Johnson 2014, in particular equation 10. For simple random-intercept models, the random effects variance equals the random-intercept variance.
Distribution-specific variance
The distribution-specific variance,
σ2d,
depends on the model family. For Gaussian models, it is
σ2 (i.e. sigma(model)^2
).
For models with binary outcome, it is
\pi^2 / 3
for logit-link, 1
for probit-link, and \pi^2 / 6
for cloglog-links. Models from Gamma-families use \mu^2
(as obtained
from family$variance()
). For all other models, the distribution-specific
variance is based on lognormal approximation, log(1 + var(x) / \mu^2)
(see Nakagawa et al. 2017). The expected variance of a zero-inflated
model is computed according to Zuur et al. 2012, p277.
Variance for the additive overdispersion term
The variance for the additive overdispersion term,
σ2e,
represents "the excess variation relative to what is expected from a certain
distribution" (Nakagawa et al. 2017). In (most? many?) cases, this will be
0
.
Residual variance
The residual variance, σ2ε, is simply σ2d + σ2e.
Random intercept variance
The random intercept variance, or between-subject variance
(τ00), is obtained from
VarCorr()
. It indicates how much groups or subjects differ from each other,
while the residual variance σ2ε
indicates the within-subject variance.
Random slope variance
The random slope variance (τ11)
is obtained from VarCorr()
. This measure is only available for mixed models
with random slopes.
Random slope-intercept correlation
The random slope-intercept correlation
(ρ01) is obtained from
VarCorr()
. This measure is only available for mixed models with random
intercepts and slopes.
Note
This function supports models of class merMod
(including models
from blme), clmm
, cpglmm
, glmmadmb
, glmmTMB
, MixMod
, lme
,
mixed
, rlmerMod
, stanreg
, brmsfit
or wbm
. Support for objects of
class MixMod
(GLMMadaptive), lme
(nlme) or brmsfit
(brms) is
experimental and may not work for all models.
References
Johnson, P. C. D. (2014). Extension of Nakagawa & Schielzeth’s R2 GLMM to random slopes models. Methods in Ecology and Evolution, 5(9), 944–946. doi:10.1111/2041-210X.12225
Nakagawa, S., Johnson, P. C. D., & Schielzeth, H. (2017). The coefficient of determination R2 and intra-class correlation coefficient from generalized linear mixed-effects models revisited and expanded. Journal of The Royal Society Interface, 14(134), 20170213. doi:10.1098/rsif.2017.0213
Zuur, A. F., Savel'ev, A. A., & Ieno, E. N. (2012). Zero inflated models and generalized linear mixed models with R. Newburgh, United Kingdom: Highland Statistics.
Examples
library(lme4)
data(sleepstudy)
m <- lmer(Reaction ~ Days + (1 + Days | Subject), data = sleepstudy)
get_variance(m)
get_variance_fixed(m)
get_variance_residual(m)