R: Spatial conditional autoregressive (CAR) structures

cor_car {brms} | R Documentation

## Spatial conditional autoregressive (CAR) structures

### Description

These functions are constructors for the `cor_car` class implementing spatial conditional autoregressive structures.

### Usage

    cor_car(W, formula = ~1, type = c("escar", "esicar", "icar"))

    cor_icar(W, formula = ~1)

### Arguments

`W` | Adjacency matrix of locations. All non-zero entries are treated as if the two locations are adjacent. If `formula` contains a grouping factor, the row names of `W` have to match the levels of the grouping factor.
`formula` | An optional one-sided formula of the form `~ 1 | g`, where `g` is a 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) and `"esicar"` (exact sparse intrinsic CAR) and `"icar"` (intrinsic CAR). More information is provided in the 'Details' section.

### Details

The `escar` and `esicar` types are implemented based on the case study of Max Joseph (https://github.com/mbjoseph/CARstan). The `icar` type is implemented based on the case study of Mitzi Morris (http://mc-stan.org/users/documentation/case-studies/icar_stan.html).

### Examples

    ## Not run:
    # 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, data = dat,
               family = binomial(), autocor = cor_car(W))
    summary(fit)

    ## End(Not run)

[Package brms version 2.6.0 Index]