Tidybayes supports two classes of models and sample formats: Models/formats that provide prediction functions, and those that do not.

## All Supported Models/Sample Formats

All supported models/formats support the base tidybayes sample extraction functions, such as tidy_draws(), spread_draws(), gather_draws(), spread_rvars(), and gather_rvars(). These models/formats include:

• rstan models

• cmdstanr models

• brms::brm() models

• rstanarm models

• runjags::runjags() models

• rjags::jags.model() models, if sampled using rjags::coda.samples()

• jagsUI::jags() models

• MCMCglmm::MCMCglmm() models

• coda::mcmc() and coda::mcmc.list() objects, which are output by several model types.

• posterior::draws objects

• Any object with an implementation of posterior::as_draws_df() or posterior::as_draws(). For a list of those available in your environment, run methods(as_draws_df) or methods(as_draws)

• Any object with an implementation of coda::as.mcmc.list(). For a list of those available in your environment, run methods(as.mcmc.list)

If you install the tidybayes.rethinking package, models from the rethinking package are also supported.

## Models Supporting Prediction

In addition, the following models support fit and prediction extraction functions, such as add_epred_draws(), add_predicted_draws(), add_linpred_draws(), add_epred_rvars(), add_predicted_rvars(), and add_linpred_rvars():

• brms::brm() models

• rstanarm models

• any package with implementations of rstantools::posterior_epred(), rstantools::posterior_predict(), or rstantools::posterior_linpred() that include an argument called newdata which takes a data frame of predictors.

If your model type is not in the above list, you may still be able to use the add_draws() function to turn matrices of predictive draws (or fit draws) into tidy data frames. Or, you can wrap output from a prediction function in posterior::rvar() and add it to a data frame so long as that output is a matrix with draws as rows.

If you install the tidybayes.rethinking package, models from the rethinking package are also supported.

## Extending tidybayes

To include basic support for new models, one need only implement the tidy_draws() generic function for that model. Alternatively, objects that support posterior::as_draws() or coda::as.mcmc.list() will automatically be supported by tidy_draws().

To include support for estimation and prediction, one must either implement the epred_draws(), predicted_draws(), and linpred_draws() functions or their correspond functions from rstantools: rstantools::posterior_epred(), rstantools::posterior_predict(), and rstantools::posterior_linpred(). If you take the latter approach, you should include newdata and ndraws arguments that work as documented in predicted_draws().