Compute Bayes factors from marginal likelihoods.
# S3 method for brmsfit
bayes_factor(x1, x2, log = FALSE, ...)
A brmsfit
object
Another brmsfit
object based on the same responses.
Report Bayes factors on the log-scale?
Additional arguments passed to
bridge_sampler
.
Computing the marginal likelihood requires samples
of all variables defined in Stan's parameters
block
to be saved. Otherwise bayes_factor
cannot be computed.
Thus, please set save_all_pars = TRUE
in the call to brm
,
if you are planning to apply bayes_factor
to your models.
The computation of Bayes factors based on bridge sampling requires
a lot more posterior samples than usual. A good conservative
rule of thumb is perhaps 10-fold more samples (read: the default of 4000
samples may not be enough in many cases). If not enough posterior
samples are provided, the bridge sampling algorithm tends to be unstable,
leading to considerably different results each time it is run.
We thus recommend running bayes_factor
multiple times to check the stability of the results.
More details are provided under
bridgesampling::bayes_factor
.
if (FALSE) {
# model with the treatment effect
fit1 <- brm(
count ~ zAge + zBase + Trt,
data = epilepsy, family = negbinomial(),
prior = prior(normal(0, 1), class = b),
save_all_pars = TRUE
)
summary(fit1)
# model without the treatment effect
fit2 <- brm(
count ~ zAge + zBase,
data = epilepsy, family = negbinomial(),
prior = prior(normal(0, 1), class = b),
save_all_pars = TRUE
)
summary(fit2)
# compute the bayes factor
bayes_factor(fit1, fit2)
}