Brms: Multivariate meta-analysis syntax

Please also provide the following information in addition to your question:

  • Operating System: Windows 10
  • brms Version: 2.6


I am still fairly new to brms. I am attempting to conduct a multivariate, multi level meta-analysis (mostly for educational purposes). I came across this Google group discussion:!topic/brms-users/KPQaLs-PU4s

I am curious if someone can help me understand the syntax. Normally, brms uses the cbind() function to indicate multiple response variables. And for meta analysis, I have seen examples of mod = brms(yi|se~…). However, since the data structure in this example is “yi” with a dichotomous “outcome” variable, does the coefficient represent mu for the second level in this outcome variable? This does not seem to match the typical syntax of for a meta-analysis in brms.

My confusion is trying to figure out how to analyze 42 studies, each with 1-4 outcomes, and conduct moderator analyses at the same time (e.g., incorporate a study quality rating scale). My initial guess was something like this (assuming a known variance-covariance matrix V, setting outcome 1 as referent group):

brm_mod<- brm(yi ~ 1 + outcome2 + outcome3 + outcome4 + SQuality + SQuality:outcome2 + SQuality:outcome3 + SQuality:outcome4+ (1|study),
prior = set_prior(“uniform(0, 1000)”, class = “sd”),
autocor = cor_fixed(V),
data = dat, iter = 5000, warmup = 2000, cores = 4)

But this doesn’t really capture multivariate since the outcomes are all modeled separately and I have to use interactions to estimate moderation on each outcome, which means if I want an additional moderator I would be adding 4 more parameters. Is there a better way to do this?

If you want an interaction between outcome and moderator, which you probably want (unless you expect the moderator effect so be the same for all outcomes), the way you do is basically the way to go.

A “real” multivariate meta-analysis would include varying effects of outcome. So suppose outcome is the factor variable of your outcome measures, then we can write:

yi ~ 0 + outcome + outcome:SQuality + (0 + outcome | study)

to estimate a separate effect per outcome and a separate moderator effect per outcome, as well as correlated varying effects across studies.

1 Like

Thank you so much for your reply. As I understand it, your syntax will create a unique intercept for each outcome because of the 0, plus a moderator effect for each outcome. That’s great.

One more question about brms as a meta-analytic package: although the author of this website ( says the results between metafor and brms are identical, they are not. Critically, if I compare confidence and credible intervals, the brms output does include 0 whereas metafor does not. Additionally, it appears that heterogeneity estimates differ per the actual outputs unlike the author’s words. Is this a case of the author using uniform priors? These differences are small but noticeable.

Thanks again.

for small data sets it’s quite likely that model result will differ by some amount.