Function to set up a multi-membership grouping term in brms. The function does not evaluate its arguments -- it exists purely to help set up a model with grouping terms.

```
mm(
...,
weights = NULL,
scale = TRUE,
by = NULL,
cor = TRUE,
id = NA,
cov = NULL,
dist = "gaussian"
)
```

- ...
One or more terms containing grouping factors.

- weights
A matrix specifying the weights of each member. It should have as many columns as grouping terms specified in

`...`

. If`NULL`

(the default), equally weights are used.- scale
Logical; if

`TRUE`

(the default), weights are standardized in order to sum to one per row. If negative weights are specified,`scale`

needs to be set to`FALSE`

.- by
An optional factor matrix, specifying sub-populations of the groups. It should have as many columns as grouping terms specified in

`...`

. For each level of the`by`

variable, a separate variance-covariance matrix will be fitted. Levels of the grouping factor must be nested in levels of the`by`

variable matrix.- cor
Logical. If

`TRUE`

(the default), group-level terms will be modelled as correlated.- id
Optional character string. All group-level terms across the model with the same

`id`

will be modeled as correlated (if`cor`

is`TRUE`

). See`brmsformula`

for more details.- cov
An optional matrix which is proportional to the withon-group covariance matrix of the group-level effects. All levels of the grouping factor should appear as rownames of the corresponding matrix. This argument can be used, among others, to model pedigrees and phylogenetic effects. See

`vignette("brms_phylogenetics")`

for more details. By default, levels of the same grouping factor are modeled as independent of each other.- dist
Name of the distribution of the group-level effects. Currently

`"gaussian"`

is the only option.

```
if (FALSE) {
# simulate some data
dat <- data.frame(
y = rnorm(100), x1 = rnorm(100), x2 = rnorm(100),
g1 = sample(1:10, 100, TRUE), g2 = sample(1:10, 100, TRUE)
)
# multi-membership model with two members per group and equal weights
fit1 <- brm(y ~ x1 + (1|mm(g1, g2)), data = dat)
summary(fit1)
# weight the first member two times for than the second member
dat$w1 <- rep(2, 100)
dat$w2 <- rep(1, 100)
fit2 <- brm(y ~ x1 + (1|mm(g1, g2, weights = cbind(w1, w2))), data = dat)
summary(fit2)
# multi-membership model with level specific covariate values
dat$xc <- (dat$x1 + dat$x2) / 2
fit3 <- brm(y ~ xc + (1 + mmc(x1, x2) | mm(g1, g2)), data = dat)
summary(fit3)
}
```