intrinsic.matern.operators {rSPDE} | R Documentation |
Covariance-based approximations of intrinsic fields
Description
intrinsic.matern.operators
is used for computing a
covariance-based rational SPDE approximation of intrinsic
fields on R^d
defined through the SPDE
(-\Delta)^{\beta/2}(\kappa^2-\Delta)^{\alpha/2} (\tau u) = \mathcal{W}
Usage
intrinsic.matern.operators(
kappa,
tau,
alpha,
beta = 1,
G = NULL,
C = NULL,
d = NULL,
mesh = NULL,
graph = NULL,
loc_mesh = NULL,
m_alpha = 2,
m_beta = 2,
compute_higher_order = FALSE,
return_block_list = FALSE,
type_rational_approximation = c("brasil", "chebfun", "chebfunLB"),
fem_mesh_matrices = NULL,
scaling = NULL,
opts = NULL
)
Arguments
kappa |
range parameter |
tau |
precision parameter |
alpha |
Smoothness parameter |
beta |
Smoothness parameter |
G |
The stiffness matrix of a finite element discretization of the domain of interest. |
C |
The mass matrix of a finite element discretization of the domain of interest. |
d |
The dimension of the domain. |
mesh |
An inla mesh. |
graph |
An optional |
loc_mesh |
locations for the mesh for |
m_alpha |
The order of the rational approximation for the Matérn part, which needs to be a positive integer. The default value is 2. |
m_beta |
The order of the rational approximation for the intrinsic part, which needs to be a positive integer. The default value is 2. |
compute_higher_order |
Logical. Should the higher order finite element matrices be computed? |
return_block_list |
Logical. For |
type_rational_approximation |
Which type of rational approximation should be used? The current types are "brasil", "chebfun" or "chebfunLB". |
fem_mesh_matrices |
A list containing FEM-related matrices. The list should contain elements c0, g1, g2, g3, etc. |
scaling |
scaling factor, see details. |
opts |
options for numerical calulcation of the scaling, see details. |
Details
The covariance operator
\tau^{-2}(-\Delta)^{\beta}(\kappa^2-\Delta)^{\alpha}
is approximated based on rational approximations of the two fractional
components. The Laplacians are equipped with homogeneous Neumann boundary
conditions. Unless supplied, the scaling is computed as the lowest positive eigenvalue of
sqrt(solve(c0))%*%g1%*%sqrt(solve(c0))
. opts provides a list of options for the
numerical calculation of the scaling factor, which is done using Rspectra::eigs_sym
.
See the help of that function for details.
Value
intrinsic.matern.operators
returns an object of
class "intrinsicCBrSPDEobj". This object is a list including the
following quantities:
C |
The mass lumped mass matrix. |
Ci |
The inverse of |
GCi |
The stiffness matrix G times |
Q |
The precision matrix. |
Q_list |
A list containing the blocks required to assemble the precision matrix. |
alpha |
The fractional power of the Matérn part of the operator. |
beta |
The fractional power of the intrinsic part of the operator. |
kappa |
Range parameter of the covariance function |
tau |
Scale parameter of the covariance function. |
m_alpha |
The order of the rational approximation for the Matérn part. |
m_beta |
The order of the rational approximation for the intrinsic part. |
m |
The total number of blocks in the precision matrix. |
n |
The number of mesh nodes. |
d |
The dimension of the domain. |
type_rational_approximation |
String indicating the type of rational approximation. |
higher_order |
Boolean indicating if higher order FEM-related matrices are computed. |
return_block_list |
Boolean indicating if the precision matrix is returned as a list with the blocks. |
fem_mesh_matrices |
A list containing the mass lumped mass matrix, the stiffness matrix and the higher-order FEM-related matrices. |
make_A |
A function to compute the projection matrix which links the field to observation locations. |
variogram |
A function to compute the variogram of the model at a specified node. |
A |
Matrix that sums the components in the approximation to the mesh nodes. |
scaling |
The scaling used in the intrinsic part of the model. |
Examples
if (requireNamespace("RSpectra", quietly = TRUE)) {
x <- seq(from = 0, to = 10, length.out = 201)
beta <- 1
alpha <- 1
kappa <- 1
op <- intrinsic.matern.operators(
kappa = kappa, tau = 1, alpha = alpha,
beta = beta, loc_mesh = x, d = 1
)
# Compute and plot the variogram of the model
Sigma <- op$A[,-1] %*% solve(op$Q[-1,-1], t(op$A[,-1]))
One <- rep(1, times = ncol(Sigma))
D <- diag(Sigma)
Gamma <- 0.5 * (One %*% t(D) + D %*% t(One) - 2 * Sigma)
k <- 100
plot(x, Gamma[k, ], type = "l")
lines(x,
variogram.intrinsic.spde(x[k], x, kappa, alpha, beta, L = 10, d = 1),
col = 2, lty = 2
)
}