Set up an spatial conditional autoregressive (CAR) term in brms. The function does not evaluate its arguments -- it exists purely to help set up a model with CAR terms.

`car(M, gr = NA, type = "escar")`

- M
Adjacency matrix of locations. All non-zero entries are treated as if the two locations are adjacent. If

`gr`

is specified, the row names of`M`

have to match the levels of the grouping factor.- gr
An optional grouping factor mapping observations to spatial locations. If not specified, each observation is treated as a separate location. It is recommended to always specify a grouping factor to allow for handling of new data in post-processing methods.

- type
Type of the CAR structure. Currently implemented are

`"escar"`

(exact sparse CAR),`"esicar"`

(exact sparse intrinsic CAR),`"icar"`

(intrinsic CAR), and`"bym2"`

. More information is provided in the 'Details' section.

An object of class `'car_term'`

, which is a list
of arguments to be interpreted by the formula
parsing functions of brms.

The `escar`

and `esicar`

types are
implemented based on the case study of Max Joseph
(https://github.com/mbjoseph/CARstan). The `icar`

and
`bym2`

type is implemented based on the case study of Mitzi Morris
(https://mc-stan.org/users/documentation/case-studies/icar_stan.html).

```
if (FALSE) {
# generate some spatial data
east <- north <- 1:10
Grid <- expand.grid(east, north)
K <- nrow(Grid)
# set up distance and neighbourhood matrices
distance <- as.matrix(dist(Grid))
W <- array(0, c(K, K))
W[distance == 1] <- 1
# generate the covariates and response data
x1 <- rnorm(K)
x2 <- rnorm(K)
theta <- rnorm(K, sd = 0.05)
phi <- rmulti_normal(
1, mu = rep(0, K), Sigma = 0.4 * exp(-0.1 * distance)
)
eta <- x1 + x2 + phi
prob <- exp(eta) / (1 + exp(eta))
size <- rep(50, K)
y <- rbinom(n = K, size = size, prob = prob)
dat <- data.frame(y, size, x1, x2)
# fit a CAR model
fit <- brm(y | trials(size) ~ x1 + x2 + car(W),
data = dat, data2 = list(W = W),
family = binomial())
summary(fit)
}
```