Compute a Bayesian version of R-squared for regression models

# S3 method for brmsfit
bayes_R2(
object,
resp = NULL,
summary = TRUE,
robust = FALSE,
probs = c(0.025, 0.975),
...
)

## Arguments

object

An object of class brmsfit.

resp

Optional names of response variables. If specified, predictions are performed only for the specified response variables.

summary

Should summary statistics be returned instead of the raw values? Default is TRUE.

robust

If FALSE (the default) the mean is used as the measure of central tendency and the standard deviation as the measure of variability. If TRUE, the median and the median absolute deviation (MAD) are applied instead. Only used if summary is TRUE.

probs

The percentiles to be computed by the quantile function. Only used if summary is TRUE.

...

Further arguments passed to posterior_epred, which is used in the computation of the R-squared values.

## Value

If summary = TRUE, an M x C matrix is returned (M = number of response variables and c = length(probs) + 2) containing summary statistics of the Bayesian R-squared values. If summary = FALSE, the posterior draws of the Bayesian R-squared values are returned in an S x M matrix (S is the number of draws).

## Details

For an introduction to the approach, see Gelman et al. (2018) and https://github.com/jgabry/bayes_R2/.

## References

Andrew Gelman, Ben Goodrich, Jonah Gabry & Aki Vehtari. (2018). R-squared for Bayesian regression models, The American Statistician. 10.1080/00031305.2018.1549100 (Preprint available at https://stat.columbia.edu/~gelman/research/published/bayes_R2_v3.pdf)

## Examples

if (FALSE) {
fit <- brm(mpg ~ wt + cyl, data = mtcars)
summary(fit)
bayes_R2(fit)

# compute R2 with new data
nd <- data.frame(mpg = c(10, 20, 30), wt = c(4, 3, 2), cyl = c(8, 6, 4))
bayes_R2(fit, newdata = nd)
}