r2 {sjstats}R Documentation

Compute r-squared of (generalized) linear (mixed) models

Description

Compute R-squared values of linear (mixed) models, or pseudo-R-squared values for generalized linear (mixed) models, or a Bayesian version of R-squared for regression models for stanreg and brmsfit objects.

Usage

r2(x, n = NULL, loo = FALSE)

Arguments

x

Fitted model of class lm, glm, lmerMod, lme, glmerMod, stanreg or brmsfit.

n

Optional, a lmerMod object, representing the fitted null-model (unconditional model) to x. If n is given, the pseudo-r-squared for random intercept and random slope variances are computed (Kwok et al. 2008) as well as the Omega squared value (Xu 2003). See 'Examples' and 'Details'.

loo

Logical, if TRUE and x is a stanreg or brmsfit object, a LOO-adjusted r-squared is calculated. Else, a rather "unadjusted" r-squared will be returned by calling rstantools::bayes_R2().

Details

For linear models, the r-squared and adjusted r-squared value is returned, as provided by the summary-function.

For linear mixed models, an r-squared approximation by computing the correlation between the fitted and observed values, as suggested by Byrnes (2008), is returned as well as a simplified version of the Omega-squared value (1 - (residual variance / response variance), Xu (2003), Nakagawa, Schielzeth 2013), unless n is specified.

If n is given, for linear mixed models pseudo r-squared measures based on the variances of random intercept (tau 00, between-group-variance) and random slope (tau 11, random-slope-variance), as well as the r-squared statistics as proposed by Snijders and Bosker 2012 and the Omega-squared value (1 - (residual variance full model / residual variance null model)) as suggested by Xu (2003) are returned.

For generalized linear models, Cox & Snell's and Nagelkerke's pseudo r-squared values are returned.

For generalized linear mixed models, the coefficient of determination as suggested by Tjur (2009) (see also cod). Note that Tjur's D is restricted to models with binary response.

The ("unadjusted") r-squared value and its standard error for brmsfit or stanreg objects are robust measures, i.e. the median is used to compute r-squared, and the median absolute deviation as the measure of variability. If loo = TRUE, a LOO-adjusted r-squared is calculated, which comes conceptionally closer to an adjusted r-squared measure.

More ways to compute coefficients of determination are shown in this great GLMM faq. Furthermore, see r.squaredGLMM or rsquared for conditional and marginal r-squared values for GLMM's.

Value

Note

If n is given, the Pseudo-R2 statistic is the proportion of explained variance in the random effect after adding co-variates or predictors to the model, or in short: the proportion of the explained variance in the random effect of the full (conditional) model x compared to the null (unconditional) model n.

The Omega-squared statistics, if n is given, is 1 - the proportion of the residual variance of the full model compared to the null model's residual variance, or in short: the the proportion of the residual variation explained by the covariates.

The r-squared statistics for linear mixed models, if the unconditional model is also specified (see n), is the difference of the total variance of the null and full model divided by the total variance of the null model.

Alternative ways to assess the "goodness-of-fit" is to compare the ICC of the null model with the ICC of the full model (see icc).

References

See Also

rmse for more methods to assess model quality.

Examples

library(sjmisc)
library(lme4)
fit <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
r2(fit)

data(efc)
fit <- lm(barthtot ~ c160age + c12hour, data = efc)
r2(fit)

# Pseudo-R-squared values
efc$services <- ifelse(efc$tot_sc_e > 0, 1, 0)
fit <- glm(services ~ neg_c_7 + c161sex + e42dep,
           data = efc, family = binomial(link = "logit"))
r2(fit)

# Pseudo-R-squared values for random effect variances
fit <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
fit.null <- lmer(Reaction ~ 1 + (Days | Subject), sleepstudy)
r2(fit, fit.null)



[Package sjstats version 0.15.0 Index]