-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbridge_sampler.brmsfit.Rmd
64 lines (53 loc) · 2.02 KB
/
bridge_sampler.brmsfit.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
---
title: "``brms::bridge_sampler.brmsfit``"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(brms)
```
Log Marginal Likelihood via Bridge Sampling
#### Description
Computes log marginal likelihood via bridge sampling, which can be used in the computation of
bayes factors and posterior model probabilities. The brmsfit method is just a thin wrapper around
the corresponding method for stanfit objects.
#### Usage
<pre><code>
## S3 method for class 'brmsfit'
bridge_sampler(samples, ...)
</code></pre>
#### Arguments
samples A brmsfit object.
... Additional arguments passed to bridge_sampler.stanfit.
#### Details
Computing the marginal likelihood requires samples of all variables defined in Stan’s parameters block to be saved. Otherwise bridge_sampler cannot be computed. Thus, please set save_all_pars = TRUE in the call to brm, if you are planning to apply bridge_sampler to your models.
The computation of marginal likelihoods based on bridge sampling requires a lot more posterior samples than usual. A good conservative rule of thump 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 bridge_sampler multiple times to check the stability of the results.
More details are provided under bridgesampling:bridge_sampler.
See Also
bayes_factor, post_prob
#### Examples
```{r}
## Not run:
# 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)
bridge_sampler(fit1)
```
```{r}
# model without the treatment effect
fit2 <- brm(
count ~ count ~ zAge + zBase,
data = epilepsy, family = negbinomial(),
prior = prior(normal(0, 1), class = b),
save_all_pars = TRUE
)
summary(fit2)
bridge_sampler(fit2)
## End(Not run)
```