inla.spde2.matern {INLA} | R Documentation |
Create an inla.spde2
model object for a Matern model. Use
inla.spde2.pcmatern
instead for a PC prior for the parameters.
inla.spde2.matern( mesh, alpha = 2, param = NULL, constr = FALSE, extraconstr.int = NULL, extraconstr = NULL, fractional.method = c("parsimonious", "null"), B.tau = matrix(c(0, 1, 0), 1, 3), B.kappa = matrix(c(0, 0, 1), 1, 3), prior.variance.nominal = 1, prior.range.nominal = NULL, prior.tau = NULL, prior.kappa = NULL, theta.prior.mean = NULL, theta.prior.prec = 0.1, n.iid.group = 1, ... ) inla.spde2.theta2phi0(spde, theta) inla.spde2.theta2phi1(spde, theta) inla.spde2.theta2phi2(spde, theta)
mesh |
The mesh to build the model on, as an |
alpha |
Fractional operator order, 0<α≤q 2 supported. (ν=α-d/2) |
param |
Parameter, e.g. generated by |
constr |
If |
extraconstr.int |
Field integral constraints. |
extraconstr |
Direct linear combination constraints on the basis weights. |
fractional.method |
Specifies the approximation method to use for
fractional (non-integer) |
B.tau |
Matrix with specification of log-linear model for τ. |
B.kappa |
Matrix with specification of log-linear model for κ. |
prior.variance.nominal |
Nominal prior mean for the field variance |
prior.range.nominal |
Nominal prior mean for the spatial range |
prior.tau |
Prior mean for tau (overrides
|
prior.kappa |
Prior mean for kappa (overrides
|
theta.prior.mean |
(overrides |
theta.prior.prec |
Scalar, vector or matrix, specifying the joint prior precision for theta. |
n.iid.group |
If greater than 1, build an explicitly iid replicated
model, to support constraints applied to the combined replicates, for
example in a time-replicated spatial model. Constraints can either be
specified for a single mesh, in which case it's applied to the average of
the replicates ( |
... |
Additional parameters for special uses. |
This method constructs a Matern SPDE model, with spatial scale parameter κ(u) and variance rescaling parameter τ(u).
(kappa^2(u)-Delta)^(alpha/2) (tau(u) x(u)) = W(u)
(kappa^2(u)-Delta)^(alpha/2) (tau(u) x(u)) = W(u)
Stationary models are supported for 0 < α ≤q 2, with spectral
approximation methods used for non-integer α, with approximation
method determined by fractional.method
.
Non-stationary models are supported for α=2 only, with
log tau(u) = B.tau_0(u) + sum_{k=1}^p B.tau_k(u) theta_klog tau(u) = B.tau_0(u) + sum_{k=1}^p B.tau_k(u) theta_k
log kappa(u) = B.kappa_0(u) + sum_{k=1}^p B.kappa_k(u) theta_klog kappa(u) = B.kappa_0(u) + sum_{k=1}^p B.kappa_k(u) theta_k
The same parameterisation is used in the stationary cases, but with B^τ_0, B^τ_k, B^κ_0, and B^τ_k constant across u.
Integration and other general linear constraints are supported via the
constr
, extraconstr.int
, and extraconstr
parameters,
which also interact with n.iid.group
.
An inla.spde2
object.
inla.spde2.theta2phi0
: Convert from theta vector to phi0 values in
the internal spde2 model representation
inla.spde2.theta2phi1
: Convert from theta vector to phi1 values in
the internal spde2 model representation
inla.spde2.theta2phi2
: Convert from theta vector to phi2 values in
the internal spde2 model representation
Finn Lindgren finn.lindgren@gmail.com
inla.mesh.2d()
, inla.mesh.create()
,
inla.mesh.1d()
, inla.mesh.basis()
,
inla.spde2.pcmatern()
, inla.spde2.generic()
n = 100 field.fcn = function(loc) (10*cos(2*pi*2*(loc[,1]+loc[,2]))) loc = matrix(runif(n*2),n,2) ## One field, 2 observations per location idx.y = rep(1:n,2) y = field.fcn(loc[idx.y,]) + rnorm(length(idx.y)) mesh = inla.mesh.create(loc, refine=list(max.edge=0.05)) spde = inla.spde2.matern(mesh) data = list(y=y, field=mesh$idx$loc[idx.y]) formula = y ~ -1 + f(field, model=spde) result = inla(formula, data=data, family="normal") ## Plot the mesh structure: plot(mesh) if (require(rgl)) { col.pal = colorRampPalette(c("blue","cyan","green","yellow","red")) ## Plot the posterior mean: plot(mesh, rgl=TRUE, result$summary.random$field[,"mean"], color.palette = col.pal) ## Plot residual field: plot(mesh, rgl=TRUE, result$summary.random$field[,"mean"]-field.fcn(mesh$loc), color.palette = col.pal) } result.field = inla.spde.result(result, "field", spde) plot(result.field$marginals.range.nominal[[1]])