Ax3man
February 18, 2021, 11:13pm
#1
I’m trying to figure out the correct notation for a model I’ve fitted in `brms`

. The model is basically of the following form:

`y ~ factor + covariate + (0 + factor | group1) + (1 | group2)`

Note that there is a population level intercept and group-level intercept for `group2`

, but I have suppressed the intercept for `group1`

in order to directly model the covariance between the two levels of `factor`

.

Could anyone help me on my way, or point me to examples?

Thanks all.

While not a direct answer to your question, have a look at the equatiomatic R package. It takes model objects and returns the implied equation.

I’m not sure if `brms`

is supported, so you might have to create a ‘dummy’ `lmer`

object with the same formula and use that instead. The package’s github repo also has a quick tutorial gif showing the package in action

Ax3man
February 18, 2021, 11:36pm
#3
Sorry, I should have mentioned this, `equatiomatic`

can’t express this model because of the lack of concordance in the intercept between population (fixed) and group (random) level effects. See here: lme4 models with random effects with suppressed intercepts, (0 + f | g), fail · Issue #153 · datalorax/equatiomatic · GitHub .

Ax3man
February 18, 2021, 11:43pm
#4
I have the notation for two related models,

`y ~ factor + covariate + (1 + factor | group1) + (1 | group2)`

\begin{aligned}
\operatorname{y}_{i} &\sim N \left(\alpha_{j[i],k[i]} + \beta_{1j[i]}(\operatorname{factor}_{\operatorname{male}}) + \beta_{2}(\operatorname{covariate}), \sigma^2 \right) \\
\left(
\begin{array}{c}
\begin{aligned}
&\alpha_{j} \\
&\beta_{1j}
\end{aligned}
\end{array}
\right)
&\sim N \left(
\left(
\begin{array}{c}
\begin{aligned}
&\mu_{\alpha_{j}} \\
&\mu_{\beta_{1j}}
\end{aligned}
\end{array}
\right)
,
\left(
\begin{array}{cc}
\sigma^2_{\alpha_{j}} & \rho_{\alpha_{j}\beta_{1j}} \\
\rho_{\beta_{1j}\alpha_{j}} & \sigma^2_{\beta_{1j}}
\end{array}
\right)
\right)
\text{, for group1 j = 1,} \dots \text{,J} \\ \alpha_{k} &\sim N \left(\mu_{\alpha_{k}}, \sigma^2_{\alpha_{k}} \right)
\text{, for group2 k = 1,} \dots \text{,K}
\end{aligned}

And 2) `y ~ 0 + factor + covariate + (0 + factor | group1)`

:

\begin{aligned}
\operatorname{y}_{i} &\sim N \left(\beta_{0j[i]}(\operatorname{factor}_{\operatorname{female}}) + \beta_{1j[i]}(\operatorname{factor}_{\operatorname{male}}) + \beta_{2}(\operatorname{covariate}), \sigma^2 \right) \\
\left(
\begin{array}{c}
\begin{aligned}
&\beta_{0j} \\
&\beta_{1j}
\end{aligned}
\end{array}
\right)
&\sim N \left(
\left(
\begin{array}{c}
\begin{aligned}
&\mu_{\beta_{0j}} \\
&\mu_{\beta_{1j}}
\end{aligned}
\end{array}
\right)
,
\left(
\begin{array}{cc}
\sigma^2_{\beta_{0j}} & \rho_{\beta_{0j}\beta_{1j}} \\
\rho_{\beta_{1j}\beta_{0j}} & \sigma^2_{\beta_{1j}}
\end{array}
\right)
\right)
\text{, for group1 j = 1,} \dots \text{,J}
\end{aligned}

So if I’m understanding the syntax correctly (been a while!), the formula:

```
y ~ factor + covariate + (0 + factor | group1) + (1 | group2)
```

Implies:

Random intercept for `group2`

Fixed slope for `factor`

+ random slope for `factor`

, across `group1`

Fixed slope for `covariate`

For which I believe the formula would be:

\begin{aligned}
\operatorname{y}_{i} &\sim N \left(\alpha_{k[i]} + \beta_{1j[i]}(\operatorname{factor}_{\operatorname{male}}) + \beta_{2}(\operatorname{covariate}), \sigma^2 \right) \\
\begin{array}{c}
\begin{aligned}
&\beta_{1j}
\end{aligned}
\end{array}
&\sim N \left(
\begin{array}{c}
\begin{aligned}
&\mu_{\beta_{1j}}
\end{aligned}
\end{array}
,
\begin{array}{cc}
\sigma^2_{\beta_{1j}}
\end{array}
\right)
\text{, for group1 j = 1,} \dots \text{,J} \\ \alpha_{k} &\sim N \left(\mu_{\alpha_{k}}, \sigma^2_{\alpha_{k}} \right)
\text{, for group2 k = 1,} \dots \text{,K}
\end{aligned}

@mike-lawrence Does that look right to you as well?

1 Like

Ax3man
February 19, 2021, 12:13am
#6
Thanks for the help, I really appreciate it!!

I understand very little about these mathematical representations, but that doesn’t seem right to me (?). The `(0 + factor | group1)`

also fits the correlation between the levels of `factor`

, across `group1`

.

Here’s the random effects structure as summarized by `lme4`

(same structure as for `brms`

), in the hope this makes it more clear what the syntax encodes:

```
Random effects:
Groups Name Std.Dev. Corr
group1 factorfemale 6.705
factormale 6.412 0.94
group2 (Intercept) 8.964
Residual 4.921
```

Oh right right, completely missed that ‘factor’ was an actual factor. The dangers of pre-coffee math.

Can you also post the summary of the fixed effects? So I can make sure that all the terms line up

1 Like

Ax3man
February 19, 2021, 12:21am
#8
Hah, yes I tried to name them informatively! `factor`

is actually just `sex`

.

```
Fixed Effects:
(Intercept) factormale covariate
25.08586 0.06093 -0.70624
```

I’d also be happy with `y ~ 0 + factor + covariate + (0 + factor | group1) + (1 | group2)`

, which is the same model but with these fixed effects instead:

```
Fixed Effects:
factorfemale factormale covariate
25.0859 25.1468 -0.7062
```

If that’s somehow easier.

Ax3man
February 19, 2021, 12:49am
#10
Wonderful, thanks so much!