Cokriging
CoKriging extends ordinary kriging by adding one or more
secondary variables that are related to the primary. For example, a dense
NDVI or soil EC surface can help estimate a sparse yield sample when that
relationship is real and admissible
(Myers, 1982; Goovaerts, 1997; Wackernagel, 2003; Chilès and Delfiner, 2012). Run
covariate screening first: CoKriging does
not test its inputs itself, and an unrelated or inadmissible secondary
degrades the estimate rather than improving it.
This is an advanced method, not the default apbase.Map path. The default
pipeline chooses between IDW and ordinary kriging. Use co-kriging only after
screening the secondary variables and comparing the result with a plain
kriging baseline.
Estimator and constraint
Given a primary and secondaries , the estimate at a target pools weighted contributions from every variable's own local neighborhood:
where is variable 's own neighbor count: primary neighbors for and secondary- neighbors for . All three methods below use one global unbiasedness constraint (standardized ordinary cokriging), rather than one constraint per variable -- this is what keeps the system solvable while combining weights across variables that are in different units and different local neighborhoods.
Each secondary is rescaled to the primary's mean/variance before fitting or interpolating:
This keeps the shared constraint meaningful even when the secondary variables use different units. The equations below assume the variables have already been standardized this way.
The block system (ICM and LMC)
For ICM and LMC, each variable searches its own local neighborhood.
radius and max_neighbors apply to every variable, not only the primary,
so secondary variables do not need to share the primary's sample locations.
Writing for the fitted cross-covariance between variables
and at separation , the weights and Lagrange multiplier
solve
where block holds between variable 's neighbors and variable 's neighbors, and holds from variable 's neighbors to the target. This gives one linear system of size per target, extending the single-variable kriging system to variables.
ICM and LMC differ only in how is built from the fitted model:
ICM (Intrinsic Coregionalization Model). ICM uses one shared shape (model and range), fitted jointly over every one of the variable pairs, scaled per pair by two matrices -- a nugget matrix and a partial-sill matrix :
with the shared shape function (spherical/exponential/gaussian,
selected the same way as Variogram, chosen by
total fit error summed across all pairs). and
are fit independently per pair by closed-form weighted
least squares, then each checked for positive semidefiniteness (PSD) via
a Cholesky attempt with a small relative floor
(CoKrigingNonPSDCoregionalizationError if either fails) -- both
matrices are checked, not just the sill: the nugget contributes its own
additive covariance component at (structurally identical to LMC's
own nugget structure below), so a nugget matrix that is not itself PSD
corrupts the block system with a negative eigenvalue just as readily as
a bad sill matrix would, even though independent per-pair fits routinely
produce a near-zero nugget diagonal for low-noise data.
LMC (full Linear Model of Coregionalization). LMC uses nested structures (index = nugget, continuous, at geometrically spread ranges), each with its own coefficient matrix :
i.e. every structure contributes at , only the continuous structures () attenuate with for . Coefficients are fit by the Goulard & Voltz (1992) algorithm (Goulard and Voltz, 1992): block-coordinate descent, alternating a closed-form weighted-least-squares update per structure (holding the others fixed) with an eigendecomposition-based projection onto the PSD cone (clip negative eigenvalues to 0, reconstruct) after each update. Unlike ICM, PSD-ness is guaranteed by construction every sweep, not checked post-hoc -- LMC trades ICM's single shared shape for independently-shaped continuous structures, at the cost of a heavier iterative fit.
Collocated cokriging (MM1)
Collocated cokriging (Markov Model 1) (Xu et al., 1992; Journel, 1999) uses the primary's neighborhood plus one colocated datum for each secondary: the secondary value at, or nearest to, the target. It does not use a full secondary neighborhood. Under the Markov screening assumption, the secondary informs the primary through their shared location rather than its own spatial structure, so the cross-covariance collapses to a fixed multiple of the primary's own covariance:
where is the primary-secondary correlation from
CrossVariogram. This reduces the system
to primary-neighborhood size plus (one row/column per secondary) plus
one constraint row -- far smaller than ICM/LMC's full block system, at
the cost of needing the secondary value available at every interpolation
target (pre-interpolate a sparse secondary onto a denser point set first
if needed) and of the simpler screening assumption itself.
Choosing a method
| Secondaries need own local search | System size per target | Coregionalization fit | |
|---|---|---|---|
| Collocated | No -- one colocated value at target | primary neighbors + + 1 | closed-form per secondary |
| ICM | Yes | + 1 | one shared shape, joint pair fit |
| LMC | Yes | + 1 | shapes, Goulard-Voltz iterative |
Collocated is the cheapest option and needs the least fitting, but it assumes the Markov relationship and requires secondary coverage at every target. ICM captures multi-point secondary structure with one shared shape. LMC allows a different shape for each structure when one shared shape is not enough, at a higher fitting cost.
Local parameters
As with Kriging, radius and max_neighbors bound
each local search, while min_neighbors is the minimum needed for a finite
estimate. ICM and LMC apply these bounds independently to each variable, so a
sparse secondary and a dense primary can use different neighborhoods at the
same target.