Calculate the R2, also known as the coefficient of determination, value for different model objects. Depending on the model, R2, pseudo-R2, or marginal / adjusted R2 values are returned.
Usage
r2(model, ...)
# Default S3 method
r2(model, ci = NULL, verbose = TRUE, ...)
# S3 method for class 'mlm'
r2(model, multivariate = TRUE, ...)
# S3 method for class 'merMod'
r2(model, ci = NULL, tolerance = 1e-05, ...)Arguments
- model
A statistical model.
- ...
Arguments passed down to the related r2-methods.
- ci
Confidence interval level, as scalar. If
NULL(default), no confidence intervals for R2 are calculated.- verbose
Logical. Should details about R2 and CI methods be given (
TRUE) or not (FALSE)?- multivariate
Logical. Should multiple R2 values be reported as separated by response (FALSE) or should a single R2 be reported as combined across responses computed by
r2_mlm(TRUE).- tolerance
Tolerance for singularity check of random effects, to decide whether to compute random effect variances for the conditional r-squared or not. Indicates up to which value the convergence result is accepted. When
r2_nakagawa()returns a warning, stating that random effect variances can't be computed (and thus, the conditional r-squared isNA), decrease the tolerance-level. See alsocheck_singularity().
Value
Returns a list containing values related to the most appropriate R2
for the given model (or NULL if no R2 could be extracted). See the
list below:
Logistic models: Tjur's R2
Generalized linear models: Nagelkerke's R2
Multinomial Logit: McFadden's R2
Beta or ordered Beta: Ferrari's R2
Models with zero-inflation: R2 for zero-inflated models
Mixed models: Nakagawa's R2
Bayesian models: R2 bayes
Additional model families from package glmmTMB that are not mentioned above (like
nbinom1,compois,betabinomialetc.) default to McFadden's R2.R2 for models from package gamlss is extracted directly from the
summary(), if available. Else, McFadden's R2 is returned.
Note
If there is no r2()-method defined for the given model class, r2() tries
to return a "generic" r-quared value, calculated as following:
1-sum((y-y_hat)^2)/sum((y-y_bar)^2)
Examples
# Pseudo r-quared for GLM
model <- glm(vs ~ wt + mpg, data = mtcars, family = "binomial")
r2(model)
#> # R2 for Logistic Regression
#> Tjur's R2: 0.478
# r-squared including confidence intervals
model <- lm(mpg ~ wt + hp, data = mtcars)
r2(model, ci = 0.95)
#> R2: 0.827 [0.654, 0.906]
#> adj. R2: 0.815 [0.632, 0.899]
model <- lme4::lmer(Sepal.Length ~ Petal.Length + (1 | Species), data = iris)
r2(model)
#> # R2 for Mixed Models
#>
#> Conditional R2: 0.969
#> Marginal R2: 0.658
