See appendices for further tecnhical details about the various spatial distributions implemented in GeoBUGS 1.2.

The intrinsic Gaussian CAR prior distribution is specified using the distribution

`car.normal`

for the vector of random varables S = (S`car.l1`

. The syntax for these distributions is as follows:`S[1:N] ~ car.normal(adj[], weights[], num[], tau)`

S[1:N] ~ car.l1(adj[], weights[], num[], tau)

where:

`adj[]`

- A vector listing the ID numbers of the adjacent areas for each area (this is a sparse representation of the full adjacency matrix for the study region, and can be generated using the Adjacency Tool from the menu in GeoBUGS.`weights[]`

- A vector the same length as `adj[]`

giving unnormalised weights associated with each pair of areas. For the CAR model described above, taking C`weights[]`

.`num[]`

- A vector of length N (the total number of areas) giving the number of neighbours n`tau`

- A scalar argument representing the precision (inverse variance) parameter of the Gaussian CAR prior, or the inverse scale parameter of the Laplace prior (for the latter model, the variance = 2 / tauThe first 3 arguments must be entered as data (it is currently not possible to allow

`weights[]`

to be unknown); the final variable `tau`

is usually treated as unknown and so is assigned a prior distribution. The data variables num and adj may be created by the adj matrix option of the Adjacency Tool as described in Adjacency matrices. The variable `weights`

must be created by the user, and must be a vector the same length as `adj`

. A common choice is to set all the `weights`

equal to 1 since this gives the standard Besag, York and Mollie (1991) CAR model (see section on intrinsic CAR models in Appendix 1 for further discussion of weights). The easiest way to do this is to create a loop in your BUGS model code:`for (j in 1:sumNumNneigh){ weights[j] <- 1}`

where

`sumNumNneigh`

is the length of `adj`

and is also output by the option of the Adjacency Tool.Important things to check when using the

`car.normal`

or `car.l1`

distributions:* The

`car.normal`

and `car.l1`

distributions use *

`adj`

vector. BUGS does not check for this, so it is the user's responsibility. * The weights must be

* Take care with priors on tau, and be prepared to carry out sensitivity analysis to this choice.

* The car.normal and car.l1 distributions are parameterised to include a

`dflat()`

distribution.* Because the car.normal and car.l1 distributions are improper, they can only be used as

The proper Gaussian CAR prior distribution is specified using the distribution car.proper for the vector of random variables S = (S

`S[1:N] ~ car.proper(adj[], C[], num[], mu[], M[], tau, gamma)`

where:

`adj[]`

- A vector listing the ID numbers of the adjacent areas for each area (this is a sparse representation of the full adjacency matrix for the study region, and can be generated using the Adjacency Tool from the menu in GeoBUGS.`C[]`

- A vector the same length as adj[] giving normalised weights associated with each pair of areas (see sections on conditional specification and proper CAR priors in Appendix 1). Note that this differs from the intrinsic `car.normal`

or `car.l1`

distributions, where unnormalised weights should be specified. `num[]`

- A vector of length N (the total number of areas) giving the number of neighbours n`mu[]`

- A vector giving the mean for each area (this can either be entered as data, assigned a prior distribution, or specified deterministically within the model code).`M[]`

- A vector of length N giving the diagonal elements M`tau`

- A scalar parameter representing the overall precision (inverse variance) parameter.`gamma`

- A scalar parameter representing the overall degree of spatial dependence. This parameter is constrained to lie between bounds given by the inverse of the minimum and maximum eigenvalues of the matrix M`min.bound(C[], adj[], num[], M[])`

max.bound(C[], adj[], num[], M[])

where the arguments are the same as the corresponding vectors used as arguments to the

`car.proper`

distribution.Important things to check when using the

`car.proper`

distribution:*

`C`

, `adj`

, `num`

and `M`

must be entered as data (it is currently not possible to allow C to be unknown); `num`

and `adj`

may be created by the option of the Adjacency Tool as described in Adjacency matrices. The Lips example shows a (slightly clumsy) way of creating the `C`

and `M`

vectors within the BUGS model code; alternatively, these can be created externally to BUGS and read in as data.* The car.proper distribution uses

*

`adj`

vector. GeoBUGS does not check for this, so it is the user's responsibility. * The

* Take care with priors on tau, and be prepared to carry out sensitivity analysis to this choice.

* Take care with priors on gamma: you must ensure that the prior is constrained between the appropriate bounds. Besag, York and Mollie (1991) suggest that gamma needs to be close to its upper bound before it reflects reasonable spatial dependence, so you may want to try informative priors to represent this, and be prepared to carry out sensitivity analysis.

Bayesian Gaussian kriging models (multivariate Gaussian distribution with covariance matrix expressed as a parametric function of distance between pairs of points - e.g. see Diggle, Tawn and Moyeed, 1998 and Appendix 1) can be specified using the distributions

`spatial.exp`

or `spatial.disc`

for the vector of random variables S = (S`S[1:N] ~ spatial.exp(mu[], x[], y[], tau, phi, kappa)`

S[1:N] ~ spatial.disc(mu[], x[], y[], tau, alpha)

where:

`mu[]`

- A vector giving the mean for each area (this can either be entered as data, assigned a prior distribution, or specified deterministically within the model code).`x[]`

and `y[]`

- Vectors of length N giving the x and y coordinates of the location of each point, or the centroid of each area`tau`

- A scalar parameter representing the overall precision (inverse variance) parameter.Two options are available for specifying the form of the covariance matrix: the powered exponential function and the '

`disc`

' function (see section on Joint Specification in Appendix 1). The powered exponential function is implemented using the

`spatial.exp`

distribution and has 2 parameters:`phi`

- A scalar parameter representing the rate of decline of correlation with distance between points. Note that the magnitude of this parameter will depend on the units in which the x and y coordinates of each location are measured (e.g. metres, km etc.). `kappa`

- A scalar parameter controlling the amount of spatial smoothing. This is constrained to lie in the interval [0, 2). The

`disc`

function is implemented using the `spatial.disc`

distribution and has 1 parameter:`alpha`

- A scalar parameter representing the radius of the 'disc' centred at each (x, y) location. Non-hierarchically centred

` for (i in 1:N){`

y[i] ~ dnorm(S[i], gamma)

mu[i] <- alpha+beta*z[i]

}

S[1:N] ~ spatial.exp(mu[], x[], y[], tau, phi, 1)

Hierarchically centred

` for (i in 1:N){`

y[i] ~ dnorm(S[i], gamma)

S[i] <- alpha+beta*z[i] + W[i]

mu[i]<-0

}

W[1:N] ~ spatial.exp(mu[], x[], y[], tau, phi, 1)

In some simulated examples, the non-hierarchically centred parameterisation has produced incorrect results, while the hierarchically centred parameterisation gives sensible answers. This may be a feature of the single-site updating schemes used in BUGS, so interpret your results with care! (Thanks to Alan Gelfand, Shanshan Wu and Alex Schmidt for noting this problem).

Experience also suggests that there is often very little information in the data about the values of the parameters of the powered exponential (i.e. phi and kappa) or disc (i.e. alpha) functions. We therefore recommend that reasonably informative priors are used, or that the values are fixed a priori, based on either substantive knowledge or exploratory analysis using e.g. variograms.

Spatial interpolation or prediction at arbitrary locations can be carried out using the

`spatial.pred`

or `spatial.unipred`

functions, in conjunction with fitting either the `spatial.exp`

or `spatial.disc`

model to a set of observed data. `spatial.pred`

carries out joint or simultaneous prediction at a set of target locations, whereas `spatial.unipred`

carries out single site prediction. The difference is that the single site prediction yields marginal prediction intervals (i.e. ignoring correlation between prediction locations) whereas joint prediction yields simultaneous prediction intervals for the set of target locations (which will tend to be narrower than the marginal prediction intervals). The predicted means should be the same under joint or single site prediction. The disadvantage of joint prediction is that it is very slow (the computational time is of order PJoint prediction:

` T[1:P] ~ spatial.pred(mu.T[], x.T[], y.T[], S[])`

Single site prediction:

` for(j in 1:P) {`

T[j] ~ spatial.unipred(mu.T[j], x.T[j], y.T[j], S[])

}

where:

`P`

- Scalar giving the number of prediction locations`mu.T[]`

- vector of length `P`

(or scalar for single site version) specifying the mean for each prediction location (this should be specified in the same way as the mean for the observed data S).`x.T[]`

and `y.T[]`

- Vectors of length `P`

(or scalars for single site version) giving the x and y coordinates of the location of each prediction point`S`

- The vector of observations to which either the `spatial.exp`

or `spatial.disc`

model has been fitted.A conjugate Poisson-gamma spatial moving average distribution can be specified for non-negative counts defined on a spatial lattice (i.e. discrete geographical partition), using the distribution

`pois.conv`

. This is a discrete version of the Poisson-gamma random field model of Wolpert and Ickstadt (1998) and Best et al (2000a). The basic syntax for this distribution is as follows: ` S ~ dpois.conv(mu[])`

where

`S`

is a non-negative scalar parameter defined at some (usually spatial) location, and `mu[]`

is a vector of length J representing the influence of a set of gamma distributed latent parameters at each of J different locations on the value of S. Hence `mu[]`

must be defined as a convolution of gamma random variables:` for (j in 1 : J) { `

mu[j] <- gamma[j] * k[j]

gamma[j] ~ dgamma(a, b)

}

where

`k[j]`

is a spatial kernel or spatial 'weight' depending on some measure of distance or spatial proximity between the jth latent location and the location of S, and `a`

and `b`

are hyperparameters to be specified (see Appendix 2 for further discussion of this distribution, including suitable kernel functions). Usually, `k[]`

is calculated externally and read into WinBUGS as data; alternatively, if `k[]`

depends on unknown parameters, it may be defined as part of the BUGS code and re-computed at each MCMC iteration. However, this is likely to slow down the sampling within BUGS by many orders of magnitude, so is not recommended for models with large numbers of latent parameters (i.e. J large).More typically, the distribution will be used for each element of a vector of counts defined on a spatial lattice of N regions, using the following syntax:

` for (i in 1:N) {`

S[i] ~ dpois.conv(mu[i, ])

for (j in 1 : J) {

mu[i, j] <- gamma[j] * k[i, j]

}

}

where the latent

`gamma[j]`

parameters are defined as above, and `k[,]`

is now an N x J matrix with elements `k[i,j]`

representing the 'weight' or contribution of the latent gamma random variable at location j to the expected value of S at location i. Conditional on mu, the

`S[i]`

have independent Poisson distributions with mean = ΣNote that the model may be extended to include observed covariates as well as latent variables in the Poisson mean - see MVCAR Example.

The multivariate intrinsic Gaussian CAR prior distribution is specified using the distribution

`mv.car`

for the p x N matrix of random varables `S`

, where columns of `S`

represent the spatial units (areas) and rows represent the variables (it is important to ensure the dimensions of `S`

are specified the correct way round). The syntax for this distribution is as follows:` S[1:p, 1:N] ~ mv.car(adj[], weights[], num[], omega[ , ])`

where:

`adj[]`

- A vector listing the ID numbers of the adjacent areas for each area (this is a sparse representation of the full adjacency matrix for the study region, and can be generated using the Adjacency Tool from the menu in GeoBUGS.`weights[]`

- A vector the same length as `adj[]`

giving unnormalised weights associated with each pair of areas. For the CAR model described above, taking C`weights[]`

.`num[]`

- A vector of length N (the total number of areas) giving the number of neighbours n`omega[,]`

- A p x p matrix representing the precision (inverse variance) matrix of the multivariate intrinsic Gaussian CAR prior.The first 3 arguments must be entered as data (it is currently not possible to allow the

`weights`

to be unknown); the final variable `omega`

is usually treated as unknown and so is assigned a prior distribution (which must be a Wishart distribution). The data variables `num`

and `adj`

may be created by the adj matrix option of the Adjacency Tool as described in Adjacency matrices. The variable `weights`

must be created by the user, and must be a vector the same length as `adj`

. A common choice is to set all the `weights`

equal to 1 since this gives the multivariate equivalent of the standard Besag, York and Mollie (1991) CAR model (see sections on intrinsic CAR models and multivariate intrinsic CAR models in Appendix 1 for further discussion of weights). The easiest way to do this is to create a loop in your BUGS model code:` for(j in 1:sumNumNneigh) { weights[j] <- 1}`

where

`sumNumNneigh`

is the length of `adj`

and is also output by the `adj`

matrix option of the Adjacency Tool.Important things to check when using the mv.car distribution:

* The

`mv.car`

distribution uses `car.normal`

distribtion.*

`adj`

vector. GeoBUGS does not check for this, so it is the user's responsibility. * The weights must be

* Take care with priors on

`omega`

, and be prepared to carry out sensitivity analysis to this choice.* The

`mv.car`

distribution is parameterised to include a `dflat() `

distribution. * An alternative

`mv.car.uncon`

. The syntax is the same as for `mv.car`

. * Because the

`mv.car`

(and `mv.car.uncon`

) distribution is improper, it can only be used as a prior distribution, and not as a likelihood. (Note: for clarity of exposition, we parameterise the Normal distribution in terms of the mean and

Assume we have a set of area-specific spatially correlated Gaussian data or random effects S

where

**Joint specification**

We may assume a parametric form for the elements of the between-area correlation matrix:

Σ

where d

f(d

The parameter φ controls the rate of decline of correlation with distance:

φ large -> rapid decay

φ small -> slow decay

One possible strategy for specifying a prior for φ is to choose a uniform distribution between φ

The parameter κ controls the amount by which spatial variations in the data are smoothed. Large values of κ lead to greater smoothing, with κ = 2 corresponding to the Gaussian correlation function (although the resulting covariance matrix is nearly singular). It is often difficult to learn much about this parameter, so unless there is a good reason for believing otherwise, it is usually advisable to set κ = 1 a priori.

f(d

= 0 for d

The parameter α controls the rate of decline of correlation with distance:

α large -> slow decay

α small -> rapid decay

The disc function leads to an approximately linear decrease in correlation with increasing distance, with correlation declining to zero at a distance equal to α.

Exploratory analysis using variograms maybe be helpful to help chose an appropriate specification for the correlation function and associated parameters.

**Conditional specification**

By writing the between-area covariance matrix in the following form:

v

γ = controls overall strength of spatial dependence

and using standard multivariate normal theory (e.g. Johnson and Kotz, 1972; Besag and Kooperberg, 1995), the joint multivariate Gaussian model can be expressed in the form of a set of conditional distributions

S

(here Σ

From a modelling perspective, use of the joint formulation requires specification of the elements of the covariance matrix

*

* γ = 0 implies no spatial dependence

**Intrinsic CAR model**

Besag, York and Mollie (1991) propose an intrinsic version of this CAR model in which the covariance matrix

S

where S.bar

Since the CAR model defined above is improper (the overall mean of the S

We must also specify prior distributions for the overall variance parameter v. As usual in WinBUGS, the

**Proper CAR model**

If γ is constrained to lie in the interval (γ

M

C

**Multivariate instrinsic CAR model**

Assume we have a multivariate p-dimensional vector of spatially correlated Gaussian data or random effects in each area,

(here (

where

Gelfand and Vounatsou (2003) discuss a multivariate generalisation of the proper version of CAR distribution, but only the improper intrinsic multivariate CAR is currently implemented in WinBUGS.

Spatial moving average models are a flexible class of models that have been used to describe continuous spatial processes, particularly in geostatistical applications. Such models are constructed by integrating a simple two-dimensional random noise process (for example, a grid of iid Gaussian random variables) with a smoothing kernel that is a function of distance and, possibly, location. The kernel can be thought of as a device to `smear out' the random noise process in two-dimensional space to give a smooth surface.

Spatial moving average models have been developed primarily for continuous spatial processes and are currently not implementable in WinBUGS 1.4. However, Ickstadt and Wolpert (1998) and Best et al (2000b) proposed a discrete version of a gamma moving average process, for use in identity-link Poisson regression models. Suppose we have a set of area-specific spatially correlated Poisson count data (or random effects) S

S

The model for each λ

λ

Best et al (2000b) assume an isotropic, stationary Gaussian kernel function (although other kernel forms are easily accommodated, such as an adjacency-based kernel - see the 'Forest Example'):

k

where τ can be thought of as a scale factor for the λ's, d

One interpretation of Poisson-gamma moving average model is to view the gamma random variables as representing the location and magnitude of unmeasured risk factors, and the area-specific Poisson means λ

The model may be extended to include observed covariates and an offset adjustment (e.g. to account for different populations in different areas). Observed covariates are included as additive terms in the linear predictor λ

λ

where X

λ

p

Note that Best et al (2004) discuss how to standardise the offset N

Estimation of the

`pois.conv`

distribution is carried out in WinBUGS 1.4 using a data augmentation scheme to exploit the Poisson-gamma conjugacy of the full conditionals for the γ