r.squaredGLMM: Pseudo-R-squared for Generalized Mixed-Effect models

r.squaredGLMMR Documentation

Pseudo-R-squared for Generalized Mixed-Effect models

Description

Calculate conditional and marginal coefficient of determination for Generalized mixed-effect models (\RsqxGLMM).

Usage

r.squaredGLMM(object, null, ...)
## S3 method for class 'merMod'
r.squaredGLMM(object, null, envir = parent.frame(), pj2014 = FALSE, ...)

Arguments

object

a fitted linear model object.

null

optionally, a null model, including only random effects. See ‘Details’.

envir

optionally, the environment in which the null model is to be evaluated. Defaults to the current frame. See eval.

pj2014

logical, if TRUE and object is of poisson family, the result will include \RsqxGLMM using original formulation of Johnson (2014). This requires fitting object with an observation-level random effect term added.

...

additional arguments, ignored.

Details

There are two types of \RsqxGLMM: marginal and conditional.

Marginal \RsqxGLMM represents the variance explained by the fixed effects, and is defined as:

\mydequation

R_GLMM(m)^2= \frac\sigma_f^2\sigma_f^2 + \sigma_\alpha^2 + \sigma_\varepsilon ^2 R_GLMM(m)² = (\sigma_f²) / (\sigma_f² + \sigma_\alpha² + \sigma_\epsilon²) R_GLMM(m)^2 = (sigma_f^2) / (sigma_f^2 + sigma_alpha^2 + sigma_epsilon^2)

Conditional \RsqxGLMM represents the variance explained by the entire model, including both fixed and random effects. It is calculated by the equation:

\mydequation

R_GLMM(c)^2= \frac\sigma_f^2 + \sigma_\alpha^2\sigma_f^2 + \sigma_\alpha^2 + \sigma_\varepsilon ^2 R_GLMM(c)² = (\sigma_f² + \sigma_\alpha²) / (\sigma_f² + \sigma_\alpha² + \sigma_\epsilon²) R_GLMM(c)^2 = (sigma_f^2 + sigma_alpha^2) / (sigma_f^2 + sigma_alpha^2 + sigma_epsilon^2)

where \myequation\sigma_f^2\sigma_f²sigma_f^2 is the variance of the fixed effect components, \myequation\sigma_\alpha\sigma_\alpha²sigma_alpha^2 is the variance of the random effects, and \myequation\sigma_\epsilon^2\sigma_\epsilon²sigma_epsilon^2 is the “observation-level” variance.

Three methods are available for deriving the observation-level variance \sigma_\varepsilon: the delta method, lognormal approximation and using the trigamma function.

The delta method can be used with for all distributions and link functions, while lognormal approximation and trigamma function are limited to distributions with logarithmic link. Trigamma-estimate is recommended whenever available. Additionally, for binomial distributions, theoretical variances exist specific for each link function distribution.

Null model. Calculation of the observation-level variance involves in some cases fitting a null model containing no fixed effects other than intercept, otherwise identical to the original model (including all the random effects). When using r.squaredGLMM for several models differing only in their fixed effects, in order to avoid redundant calculations, the null model object can be passed as the argument null. Otherwise, a null model will be fitted via updating the original model. This assumes that all the variables used in the original model call have the same values as when the model was fitted. The function warns about this when fitting the null model is required. This warnings can be disabled by setting options(MuMIn.noUpdateWarning = TRUE).

Value

r.squaredGLMM returns a two-column numeric matrix, each (possibly named) row holding values for marginal and conditional \RsqxGLMM calculated with different methods, such as “delta”, “log-normal”, “trigamma”, or “theoretical” for models of binomial family.

Note

Important: as of MuMIn version 1.41.0, r.squaredGLMM returns a revised statistics based on Nakagawa et al. (2017) paper. The returned value's format also has changed (it is a matrix rather than a numeric vector as before). Pre-1.41.0 version of the function calculated the “theoretical” \RsqxGLMM for binomial models.

\Rsqx

GLMM can be calculated also for fixed-effect models. In the simpliest case of OLS it reduces to var(fitted) / (var(fitted) + deviance / 2). Unlike likelihood-ratio based \Rsq for OLS, value of this statistic differs from that of the classical \Rsq.

Currently methods exist for classes: merMod, lme, glmmTMB, glmmADMB, glmmPQL, cpglm(m) and (g)lm.

For families other than gaussian, Gamma, poisson, binomial and negative binomial, the residual variance is obtained using get_variance from package insight.

See note in r.squaredLR help page for comment on using \Rsq in model selection.

Author(s)

Kamil Bartoń. This implementation is based on R code from ‘Supporting Information’ for Nakagawa et al. (2014), (the extension for random-slopes) Johnson (2014), and includes developments from Nakagawa et al. (2017).

References

Nakagawa, S., Schielzeth, H. 2013 A general and simple method for obtaining \Rsq from Generalized Linear Mixed-effects Models. Methods in Ecology and Evolution 4, 133–142.

Johnson, P. C. D. 2014 Extension of Nakagawa & Schielzeth’s \RsqxGLMM to random slopes models. Methods in Ecology and Evolution 5, 44–946.

Nakagawa, S., Johnson, P. C. D., Schielzeth, H. 2017 The coefficient of determination \Rsq and intra-class correlation coefficient from generalized linear mixed-effects models revisited and expanded. J. R. Soc. Interface 14, 20170213.

See Also

summary.lm, r.squaredLR

r2 from package performance calculates \RsqxGLMM also for variance at different levels, with optional confidence intervals. r2glmm has functions for \Rsq and partial \Rsq.

Examples



data(Orthodont, package = "nlme")

fm1 <- lme(distance ~ Sex * age, ~ 1 | Subject, data = Orthodont)

fmnull <- lme(distance ~ 1, ~ 1 | Subject, data = Orthodont)

r.squaredGLMM(fm1)
r.squaredGLMM(fm1, fmnull)
r.squaredGLMM(update(fm1, . ~ Sex), fmnull)

r.squaredLR(fm1)
r.squaredLR(fm1, null.RE = TRUE)
r.squaredLR(fm1, fmnull) # same result

## Not run: 
if(require(MASS)) {
    fm <- glmmPQL(y ~ trt + I(week > 2), random = ~ 1 | ID, 
        family = binomial, data = bacteria, verbose = FALSE)
    fmnull <- update(fm, . ~ 1)
    r.squaredGLMM(fm)

    # Include R2GLMM (delta method estimates) in a model selection table:
    # Note the use of a common null model
    dredge(fm, extra = list(R2 = function(x) r.squaredGLMM(x, fmnull)["delta", ]))
    
}

## End(Not run)


MuMIn documentation built on June 22, 2024, 6:44 p.m.