Summary of Bayesian Models as HTML Table

Daniel Lüdecke

2024-05-13

## Loading 'brms' package (version 2.21.0). Useful instructions
## can be found by typing help('brms'). A more detailed introduction
## to the package is available through vignette('brms_overview').
## 
## Attaching package: 'brms'
## The following objects are masked from 'package:rstanarm':
## 
##     dirichlet, exponential, get_y, lasso, ngrps
## The following object is masked from 'package:stats':
## 
##     ar

This vignette shows examples for using tab_model() to create HTML tables for mixed models. Basically, tab_model() behaves in a very similar way for mixed models as for other, simple regression models, as shown in this vignette.

# load required packages
library(sjPlot)
library(brms)

# sample models
zinb <- read.csv("http://stats.idre.ucla.edu/stat/data/fish.csv")
set.seed(123)
m1 <- brm(bf(
    count ~ persons + child + camper + (1 | persons),
    zi ~ child + camper + (1 | persons)
  ),
  data = zinb,
  family = zero_inflated_poisson()
)

data(epilepsy)
set.seed(123)
epilepsy$visit <- as.numeric(epilepsy$visit)
epilepsy$Base2 <- sample(epilepsy$Base, nrow(epilepsy), replace = TRUE)
f1 <- bf(Base ~ zAge + count + (1 |ID| patient))
f2 <- bf(Base2 ~ zAge + Trt + (1 |ID| patient))
m2 <- brm(f1 + f2 + set_rescor(FALSE), data = epilepsy)

Bayesian models summaries as HTML table

For Bayesian regression models, some of the differences to the table output from simple models or mixed models of tab_models() are the use of Highest Density Intervals instead of confidence intervals, the Bayes-R-squared values, and a different “point estimate” (which is, by default, the median from the posterior draws).

tab_model(m1)
  count
Predictors Incidence Rate Ratios CI (95%)
Count Model
Intercept 0.42 0.22 – 0.88
persons 2.32 1.86 – 2.93
child 0.32 0.26 – 0.38
camper 2.08 1.73 – 2.53
Zero-Inflated Model
Intercept 0.52 0.11 – 2.21
child 6.44 3.46 – 12.95
camper 0.43 0.21 – 0.87
Random Effects
σ2 5.63
τ00 33.53
ICC 0.14
N persons 4
Observations 250
Marginal R2 / Conditional R2 0.186 / 0.248

Multivariate response models

For multivariate response models, like mediator-analysis-models, it is recommended to print just one model in the table, as each regression is displayed as own “model” in the output.

tab_model(m2)
  Base Base2
Predictors Estimates CI (95%) Estimates CI (95%)
Intercept 28.61 11.35 – 34.20 26.61 11.24 – 29.03
z Age -4.85 -5.42 – -1.76 1.21 -0.31 – 2.15
count 0.00 -0.00 – 0.00
Trt: Trt 1 -0.32 -4.36 – 1.43
Random Effects
σ2 54.64
τ00 4.04
ICC 0.96
N patient 59
Observations 236

Show two Credible Interval-column

To show a second CI-column, use show.ci50 = TRUE.

tab_model(m2, show.ci50 = TRUE)
  Base Base2
Predictors Estimates CI (50%) CI (95%) Estimates CI (50%) CI (95%)
Intercept 28.61 24.07 – 30.23 11.35 – 34.20 26.61 21.53 – 28.45 11.24 – 29.03
z Age -4.85 -5.17 – -3.89 -5.42 – -1.76 1.21 0.74 – 1.54 -0.31 – 2.15
count 0.00 -0.00 – 0.00 -0.00 – 0.00
Trt: Trt 1 -0.32 -1.91 – 0.69 -4.36 – 1.43
Random Effects
σ2 55.75
τ00 4.52
ICC 0.96
N patient 59
Observations 236

Mixing multivariate and univariate response models

When both multivariate and univariate response models are displayed in one table, a column Response is added for the multivariate response model, to indicate the different outcomes.

tab_model(m1, m2)
  count Base,Base 2
Predictors Incidence Rate Ratios CI (95%) Estimates CI (95%) Response
Intercept 0.42 0.22 – 0.88 28.61 11.35 – 34.20 Base
Intercept 0.42 0.22 – 0.88 26.61 11.24 – 29.03 Base2
persons 2.32 1.86 – 2.93
child 0.32 0.26 – 0.38
camper 2.08 1.73 – 2.53
z Age -4.85 -5.42 – -1.76 Base
count 0.00 -0.00 – 0.00 Base
z Age 1.21 -0.31 – 2.15 Base2
Trt: Trt 1 -0.32 -4.36 – 1.43 Base2
Zero-Inflated Model
Intercept 0.52 0.11 – 2.21
child 6.44 3.46 – 12.95
camper 0.43 0.21 – 0.87
Random Effects
σ2 5.63 56.36
τ00 33.59 4.36
ICC 0.14 0.96
N 4 persons 59 patient
Observations 250 236
Marginal R2 / Conditional R2 0.186 / 0.248 NA