These functions are constructors for the cor_car
class
implementing spatial conditional autoregressive structures.
cor_car(W, formula = ~1, type = c("escar", "esicar", "icar"))cor_icar(W, formula = ~1)
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.
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 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.
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).
# 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)
# }
# NOT RUN {
# }
Run the code above in your browser using DataLab