Simpson 2016 - Matern SPDE and GMRF Representation
Summary
Matern Gaussian fields with integer are stationary solutions of . A finite-element discretisation on a triangulation gives sparse precision matrices (a Gaussian Markov random field); for the weights satisfy . Neumann boundary conditions () inflate variance near the boundary.
Overview
The SPDE approach (Lindgren, Rue & Lindstrom 2011) provides the basis and joint law of used in the off-grid likelihood. It reproduces classical CAR models on a regular lattice (Whittle 1954, 1963: second-order CAR converges to Matern with ).
Main Content
Matern covariance (Sec. 5)
For ,
the modified Bessel function of the second kind, smoothness, inverse range, scale; the normalisation is chosen to match the SPDE (5). Equivalently with marginal variance .
SPDE representation (eq. 5)
, with (the printed text says , apparently a typo; the consistent relation is ), , spatial white noise.
Finite-element weights for (eq. 6)
Piecewise linear on a triangular mesh: , with sparse (diagonal, lumped), , . The matrix is sparse, so is a GMRF (for the precision is , still sparse); computation scales with sparsity not with .
Details:
- Boundary: set (Neumann, no flux); this approximately doubles the variance near the boundary (Lindgren et al. 2011, Thm 1). Dirichlet conditions (fixed value) reduce it. Boundary modelling in point-process work is barely studied (Wood et al. 2008 for smoothing).
- Meshing: regular triangulation, refined where points are dense; coarser in unsampled regions but with gradual size transition, and keep nodes inside holes so the field behaves.
- Extensions: non-stationary, anisotropic, multivariate, spatio-temporal (Cameletti 2013; Fuglstad 2015).
- Priors: independent on in all examples.
Examples
Matern correlation values
gives the exponential kernel ; : (many software packages instead use ).
import numpy as np
from scipy.special import kv, gamma
def matern(h, nu, kappa, sigma2=1.0):
h = np.maximum(h, 1e-12); x = kappa*h
return sigma2*(2**(1-nu)/gamma(nu))*x**nu*kv(nu, x)
h = np.array([0.1, 1., 3.]); print(matern(h, .5, 1.), np.exp(-h)) # nu=1/2 equals exponential
print(matern(h, 1.5, 1.), (1+h)*np.exp(-h)) (Both pairs agree: with the Matern-3/2 correlation is .)
Connections
- Link to HSGP: both are finite-basis GPs; HSGP uses Laplacian eigenfunctions with spectral weights (Hilbert Space Gaussian Processes).
- General GRF background: Spatial Fields - Gaussian Random Fields, Kriging and Field-Level Inference; GMRF/ICAR relation: Spatial Models - BYM.