The Krig engines and support functions {fields} | R Documentation |
These are internal functions to Krig that compute the basic matrix decompositions or solve the linear systems needed to evaluate the Krig/Tps estimate. Others listed below do some simple housekeeping and formatting. Typically they are called from within Krig but can also be used directly if passed a Krig object list.
Krig.engine.default(out, verbose = FALSE) Krig.engine.knots(out, verbose = FALSE) Krig.engine.fixed( out, verbose=FALSE, lambda=NA) Krig.coef(out, lambda = out$lambda, y = NULL, yM = NULL, verbose = FALSE) Krig.check.xY(x, Y, weights, na.rm, verbose = FALSE) Krig.cor.Y(obj, verbose = FALSE) Krig.transform.xY(obj, knots, verbose = FALSE)
out |
A complete or partial Krig object. If partial it must have all the information accumalted to this calling point within the Krig function. |
obj |
Same as out . |
verbose |
If TRUE prints out intermediate results for debugging. |
lambda |
Value of smoothing parameter "hard wired" into decompostions. Default is NA – use the value in the out object. |
y |
|
yM |
|
Y |
|
x |
|
weights |
|
na.rm |
|
knots |
{Raw knots
matrix passed to Krig}
ENGINES:
The engines are the code modules that handle the basic linear algebra needed to computed the estimated curve or surface coefficients. All the engine work on the data that has been reduced to unique locations and possibly replicate group means with the weights adjusted accordingly. All information needed for the decomposition are components in the Krig object passed to these functions.
Krig.engine.default
finds the decompositions for a Universal
Kriging estimator. by simultanously diagonalizing the linear system
system for the coefficients of the estimator. The main advantage of this
form is that it is fairly stable numerically, even with ill-conditioned
covariance matrices with lambda > 0. (i.e. provided there is a "nugget"
or measure measurement error. Also the eigendecomposition allows for
rapid evaluation of the likelihood, GCV and coefficients for new data
vectors under different values of the smoothing parameter, lambda.
Krig.engine.knots
finds the decompositions in the case that the
covariance is evaluated at arbitrary locations possibly different than
the data locations (called knots). The intent of these decompostions is
to facilitate the evaluation at different values for lambda. There will
be computational savings when the number of knots is less than the
number of unique locations. (But the knots are as densely distributed as
the structure in the underlying spatial process.) This function call
fields.diagonalize, a function that computes the matrix and eigenvalues
that simultaneous diagonalize a nonnegative definite and a positive
definite matrix. These decompostions also facilitate multiple
evaluations of the likelihood and GCV functions in estimating a
smoothing parameter and also multiple solutions for different y vectors.
Krig.engine.fixed
are specific decomposition based on the Cholesky
factorization assuming that the smoothing parameter is fixed. This
is the only case that works in the sparse matrix.
Both knots and the full set of locations can be handled by this case.
The difference between the "knots" engine above is that only a single value
of lambda is considered in the fixed engine.
OTHER FUNCTIONS:
Krig.coef
Computes the "c" and "d" coefficients to represent the
esimated curve. These coefficients are used by the predict functions for
evaluations. Krig.coef can be used outside of the call to Krig to
recompute the fit with different Y values and possibly with different
lambda values. If new y values are not passed to this function then the yM
vector in the Krig object is used. The internal function
Krig.ynew
sorts out the logic of what to do and use based on the
passed arguments.
Krig.check.xY
Checks for removes missing values (NAs).
Krig.cor.Y
Standardizes the data vector Y based on a correlation model.
Krig.transform.xY
Finds all replcates and collapse to unique
locations and mean response and pooled variances and weights. These are
the xM, yM and weightsM used in the engines. Also scales the x locations
and the knots according to the transformation.
ENGINES:
The returned value is a list with the matix decompositions and
other information. These are incorporated into the complete Krig object.
Common to all engines:
decomp |
Type of decomposition |
nt |
dimension of T matrix |
np |
number of knots |
u |
Transformed data using eigenvectors. |
D |
Eigenvalues |
G |
Reduced and weighted matrix of the eigenvectors |
qr.T |
QR decomposition of fixed regression matrix |
V |
The eigenvectors |
u |
A transformed vector that is based on the data vector. |
D |
Eigenvalues of decomposition |
G |
|
qr.T |
|
pure.ss |
pure error sums of squares including both the variance from replicates and also the sums of squared residuals from fitting the full knot model with lambda=0 to the replicate means. |
d |
|
c |
|
qr.VT |
QR decomposition of the inverse Cholesky factor times the T matrix. |
MC |
Cholesky factor |
qr.Treg |
QR decomposition of regression matrix modified by the estimate of the nonparametric ( or spatial) component. |
lambda.fixed |
Value of lambda used in the decompositions |
yM |
Y values as replicate group means |
shat.rep |
Sample standard deviation of replicates |
shat.pure.error |
|
pure.ss |
Pure error sums of squares based on replicates |
c |
The "c" basis coefficients associated with the covariance or radial basis functionss. |
d |
The "d" regression type coefficients that are from the fixed part of the model or the linear null space. |
u |
When the default decomposition is used the data vecotr transformed by the orthogonal matrices. This facilitates evaluting the GCV function at different values of the smoothing parameter. |
Doug Nychka
Krig( ozone$x, ozone$y)-> out Krig.engine.default( out)-> stuff # compare "stuff" to components in out$matrices Krig.coef( out)$c # compare to out$c Krig.coef( out, yM = ozone$y)$c # better be the same even though we pass as new data!