Function used to set up a basic grouping term in brms. The function does not evaluate its arguments -- it exists purely to help set up a model with grouping terms. gr is called implicitly inside the package and there is usually no need to call it directly.

gr(..., by = NULL, cor = TRUE, id = NA, cov = NULL, dist = "gaussian")



One or more terms containing grouping factors.


An optional factor variable, specifying sub-populations of the groups. 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.


Logical. If TRUE (the default), group-level terms will be modelled as correlated.


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.


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.


Name of the distribution of the group-level effects. Currently "gaussian" is the only option.

See also


if (FALSE) {
# model using basic lme4-style formula
fit1 <- brm(count ~ Trt + (1|patient), data = epilepsy)

# equivalent model using 'gr' which is called anyway internally
fit2 <- brm(count ~ Trt + (1|gr(patient)), data = epilepsy)

# include Trt as a by variable
fit3 <- brm(count ~ Trt + (1|gr(patient, by = Trt)), data = epilepsy)