Hierarchical model for brain data

Hello there, I’m having some difficulties in specification of my model, in the sense I’m not sure if I am specifying it correctly since the (desired) posterior estimates are missing from the model. Essentially the dependent variable is CONN (brain connectivity), which is measured from different ROIS (regions, includes >10 levels), which would be the grouping variable. Main predictors are AGE and EMOTION (Condition w 2 levels). I’m only getting the posterior (via coef/fixef) as EMOTIONDes (in addition to Intercept & AGE) while not being able to see EMOTIONAsc, nor for each ROIS levels. Same for AGE (does not show different ROI effects for AGE).

I’ve attached data structure example and model spec code herewith.

It would help a lot if someone could help me straighten this out.
Model ex

```fit3 <- brm(data = df,
            family = gaussian,
            formula = CONN ~ 1 + AGE + EMOTION  + (1|SUBJECT)+(1+AGE+EMOTION|ROI),
            warmup = 500, iter = 2000,chains = 2)

If possible, add also code to simulate data or attach a (subset of) the dataset you work with.

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

* Operating System: Windoes 10
* brms Version: brms 2.14.4

Don't forget to add relevant tags to your topic (top right of this form) especially for application area. Delete this text before posting your question :-) Thx!

Looking forward to your topic!

The information you are looking for is already contained in the Intercept, and your parameter for EMOTIONDes informs about the difference of the two Emotion levels (same for age). If you want to have it more explicit, you could try fitting the model as
… ~ 0 + AGE + EMOTION (instead of …1+…)

Many thanks for the reply.

So if I got it right, the Intercept has how much the observed variable changes due to EmotionAsc. When I fit the model as

fit3 ← brm(data = df,
family = gaussian,
formula = SFC ~ 0 + EMOTION + AGE + (0+AGE+EMOTION|ROI) + (1|SUBJECT),
warmup = 500, iter = 2000, chains = 2)

it gives individual contributions of EmotionAsc and EmotionDes.

So in the main model with intercept, how do I extract the population effect and intervals of EmotionAsc specifically from the intercept? Or do I have to run with 0+AGE+EMOTION, extract it and use it instead ?

I am not sure I am understanding you correctly.

Changes compared to what? the Intercept shows you the (mean) value for CONN in EMOTIONAsc (and the Age condition you don’t see). the value for EMOTIONDes shows you how much the value of CONN changes when you go from EMOTIONAsc to EMOTIONDes.

Do you know the function conditional_effects(your_model)? I is a nice visualization of what I think you want to know from your model.

1 Like


I tried the conditional effects, it showed the effect of various predictors specified on the dependent variable (CONN).

I was really confused (still am) about interpreting the result. The main question of this study was to understand how CONN of different ROIs varied due to EMOTION, AGE and their interaction EMOTION:AGE. So I (re)specified the model like this, to incorporate subject specific variance to the intercept as specifying interaction effects of EMOTION and AGE.

fit2 ← brm(data = df,
family = gaussian,
prior = c(set_prior(“normal(0,100)”,class = “Intercept”)),
set_prior(“normal(0,100)”,class = “b”),
warmup = 500, iter = 4000,chains = 2,cores = 6).

I am interpreting the group level effects using the ranef() function, which gives effects of EMOTION:AGE on each ROIs. (EMOTIONAsc:AGE as well as EMOTIONDes:AGE).

Am I specifying the structure and interpreting the results correctly? I feel like there’s some serious error somewhere.

Many thanks