| 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]])