Dear Stan community,
ELI5 (Explain like I’m 5) your general approach / how you would go about setting up for and performing a random-effects Bayesian meta-analysis and meta-regression (starting with brms)?
Working with…
- Aggregate data,
- Standardized mean difference effect/variance estimate (e.g., Hedges’ g),
- Weakly informative heterogeneity prior (sensitivity analysis with empirical/uninformative priors),
- 2-3 small studies (n=10-40) and 3-5 medium studies (n=50-80).
To achieve…
- A forest plot with the pooled estimate (95% credible/prediction intervals),
- A meta-regression, 3 sets of models (i.e., patient characteristics, intervention characteristics, general study characteristics) with multiple (4-5) categorical and continuous potential effect modifiers in each model,
- Any (non-frequentist) test for publication bias or small-study effects.
I am a keen but complete novice with Bayesian modelling/computation, but hopefully after some surveying here I can get a better idea on how to narrow down my personal learning objectives. Thank you in advance for your advice.
1 Like
Hi @andrjohns, thank you very much for your response.
I understand the core theoretical formulas:
di ∼ Normal (θi, σi = sei)
θi ∼ Normal (μ, τ)
μ ∼ Normal (0, 1)
τ ∼ HalfCauchy (0, 1)
However, I don’t understand how the syntax/formula setup below relates to them.
Please can you help me understand how to interpret:
(1)
b14.5
d | se(se) ~ 1 + (1 | study)
b14.6
d | se(se) ~ 1 + (1 | study) + (1 | outcome)
Specifically,
- “|” … According to “?brmsformula” the “|” is for grouping factors, is that what it means here?
- “1 + (1 | study)” or “(1 | outcome)” … Are these the SDs? What is the difference between the 1 inside and the 1 outside the brackets?
- “d | se(se)”
(2)
label ←
tibble(tau = c(.12, .3),
y = c(15, 10),
label = c(“sigma[‘outcome’]”, “sigma[‘study’]”))
Where do the values for tau “.12, .3” and y “15, 10” come from? I suspect it is from the output of b14.6, but none of the values seem to match.
d | se(se)
- This indicates that
d
is the outcome (in your case, effect size), and that it is measured with standard error se
~ 1 + (1 | study)
- This indicates that the outcome has a fixed intercept (
1
outside of parentheses) and random intercept for study
Note the comment above the code:
# we'll want this to label the plot
label <-
tibble(tau = c(.12, .3),
y = c(15, 10),
label = c("sigma['outcome']", "sigma['study']"))
Those values for tau
and y
are just used for positioning those labels on the plot
2 Likes
@andrjohns Thank you so much! I’m very excited to be learning this.
1 Like