# Can you have a random effect for predictors on the highest level?

I feel slightly embarrassed to be asking this question but is it possible to specify a random effect for a predictor that is on the highest level of a multilevel model? I searched online but cannot find a clear answer. I have students (L1) nested in teachers (L2) and am looking at the effect of teaching practices (L2 variable) on some student-level outcome variables. Can these teaching practice effects be modelled as random or can only effects of student-level predictors be modelled as random? I tried the random effects with brms and the models all looked fine. Thanks!

Hello!

Yes, instead of assuming a random effect of mean zero and estimated standard deviation, you can compute the mean as the result of an equation with covariates!

I am not sure you can implement this model in brms, though!

Good success,
Lucas

Thanks for responding! I basically just modelled a random slope for the predictor on the highest level in the same way I did as for variables on the lowest levelâ€¦

So something like this:

Outcome ~ 0 + Intercept + student_predictor + classroom_predictor + (0 + Intercept + student_predictor + classroom_predictor |p| classroom)

And the model converged fine. Does that seem OK then?

I just got confused because I cannot seem to find any papers in which they modelled highest-level predictors as random effects. So I thought that this is maybe not a thing.

Thanks.

I think modeling the teaching practice effects as random should be no problem. In general, I donâ€™t see a problem with random effects on different nested levels. There are some options, though:

• You have to pay attention to the coding of the lower levels (students in your example). In lme4, thereâ€™s the nesting syntax `(1 | g1/g2)` which is equivalent to `(1 | g1) + (1 | g1:g2)` (see Table 2 here) but I donâ€™t know if that nesting syntax is also supported by brms. With the nesting syntax, itâ€™s possible to have the same student codes within each teacher (e.g. `stud1`, `stud2`, â€¦) even though `stud1` of teacher 1 is not the same person as `stud1` of teacher 2. To be safe, I think itâ€™s better to have students coded like `teacher1_stud1`, `teacher1_stud2`, â€¦, `teacher2_stud1`, â€¦). Then you also donâ€™t need the nesting syntax.
• brms offers argument `by` of function `gr()` which leads to separate variance-covariance matrices for each level of the `by` variable. That might be interesting for you, too.

Note that I am assuming that each student has only one teacher since you said

I couldnâ€™t really connect your formula

to your initial post so I canâ€™t say anything about that.

Thank you. Sorry, I should have said teacher rather than classroom in the simplified example code. I actually have a cross-classified multiple membership structure, with students (L1) nested in classrooms (L2) and teachers (L2), whereby some students belonged to multiple classrooms and/or teachers over the course of the study. So much more complicated than this. But the important thing is that my main question has been a answered and I now know that it was not a mistake to model the effects on the highest level as random. Thanks so much!

1 Like

Ok, that sounds rather like a multi-membership problem. See function `brms::mm()` (perhaps also `brms::mmc()`) for that. This vignette also partly deals with multi-membership models.

1 Like