Ordinary Kriging: Optimal Spatial Interpolation Visualized

simulator advanced ~15 min
Loading simulation...
Efficiency = 65% — 15 samples with range 100 m

With 15 sample points and a variogram range of 100 m, ordinary kriging achieves approximately 65% estimation efficiency. Areas near samples are well-estimated; distant areas revert toward the global mean.

Formula

Z*(x₀) = Σ λᵢ Z(xᵢ) where Σ λᵢ = 1
σ²_k = Σ λᵢ γ(xᵢ, x₀) + μ (kriging variance)
γ(h) = C₀ + C[1.5(h/a) − 0.5(h/a)³] for h ≤ a

The Best Linear Unbiased Estimator

Ordinary kriging, named after South African mining engineer Danie Krige, is mathematically the optimal way to interpolate spatially correlated data. Given a set of sample values and a variogram model describing their spatial correlation, kriging computes weights for each sample that minimize the estimation variance while ensuring the estimate is unbiased. The result is a smooth surface that passes through (or near) the sample points and gracefully reverts to the global mean in areas far from data.

How Kriging Weights Work

Unlike simple methods like inverse distance weighting, kriging weights are determined by solving a system of linear equations derived from the variogram. Samples close to the estimation point get more weight, but kriging also accounts for redundancy — if two samples are close to each other, they share information and each gets less weight than it would alone. Kriging weights can even be negative, a feature that prevents bias from clustered data and accounts for the screening effect where a nearby sample blocks the influence of a more distant one.

The Kriging Variance Map

One of kriging's greatest strengths is that it produces not just estimates but also a map of estimation uncertainty. The kriging variance at each location depends only on the geometry of nearby samples and the variogram — not on the actual measured values. This variance map shows exactly where the estimate is reliable and where additional sampling would be most beneficial. In this simulation, color intensity shows estimated values while transparency reveals kriging variance — faded areas have high uncertainty.

Applications Across Disciplines

Kriging originated in mining to estimate ore grades for resource classification and mine planning. Today it is used in petroleum engineering for reservoir characterization, in environmental science for contamination mapping, in meteorology for temperature and rainfall interpolation, in precision agriculture for soil nutrient mapping, and in epidemiology for disease rate smoothing. The unifying principle is always the same: exploit spatial correlation to make better predictions than any non-spatial method can achieve.

FAQ

What is ordinary kriging?

Ordinary kriging is the best linear unbiased estimator (BLUE) for spatially correlated data. It computes a weighted average of nearby samples where the weights are determined by the variogram model, minimizing the estimation variance while ensuring unbiasedness by requiring weights to sum to one.

How is kriging different from inverse distance weighting?

Unlike IDW, kriging uses the variogram to account for spatial correlation structure, clustering of samples, and anisotropy. It also provides a kriging variance — a map of estimation uncertainty — which IDW cannot. Kriging weights can be negative and account for data redundancy.

What is kriging variance?

Kriging variance σ²_k quantifies the estimation uncertainty at each location. It depends only on the sample geometry and variogram model — not on the actual data values. Locations far from samples have high kriging variance; locations surrounded by samples have low variance.

When should I use ordinary vs simple kriging?

Ordinary kriging is more robust because it estimates the local mean from the data (weights sum to 1). Simple kriging requires knowing the true global mean a priori. In practice, ordinary kriging is the standard choice unless you have strong prior information about the mean.

Sources

Embed

<iframe src="https://homo-deus.com/lab/geostatistics/kriging/embed" width="100%" height="400" frameborder="0"></iframe>
View source on GitHub