Practical Tutorials

Variography for Geologists Who Hate Math: A Visual Guide

Variograms without the equations. A field-first walkthrough of sill, range, nugget, anisotropy, and how to actually read an experimental variogram before you fit a model.

By Ghozian Karami · · 11 min read
Variography for Geologists Who Hate Math: A Visual Guide

If you trained as a geologist and not a statistician, the first time someone hands you an experimental variogram and asks you to fit it, the reaction is usually a quiet panic followed by copy-pasting whatever the senior consultant used last quarter. I’ve done it. Most of my colleagues have done it. The result is variogram models that look fine on screen and then quietly break the kriging downstream.

This post is the explanation I wish someone had given me on day one. No matrix algebra. No covariance proofs. Just the field intuition for what a variogram is, what it tells you about your deposit, and how to read one without faking it.

What a variogram actually measures

A variogram answers one practical question: how fast does grade change as you move away from a known sample?

That’s it. If you stand at a high-grade composite and walk 10m sideways, do you still expect high grade? What about 50m? 200m? At some distance, the grade at the new point becomes effectively unrelated to the grade where you started. That distance is your range, and it’s the most important number on the chart.

The variogram plots that idea. On the X axis: separation distance between two samples (also called lag). On the Y axis: half the squared difference of their grades, averaged across every pair you have at that lag. High values on Y mean grade has changed a lot. Low values on Y mean grade is similar.

If you’ve ever drawn a contour map by hand and felt your way through “these two points should connect, those two probably shouldn’t,” you already understand variography. The variogram is just the formal version of that intuition.

The three numbers you need to know

Three parameters describe almost any variogram model. Get these right and your kriging behaves. Get them wrong and the block grades will lie to you.

Range: how far does continuity reach?

The range is the distance at which two samples become uncorrelated. Beyond the range, knowing the grade at sample A tells you nothing about the grade at sample B.

Field analogy: if your drillhole spacing is 50m and your range is 30m, every block sits in a zone where no neighbor sample is informative. You’re effectively doing nearest-neighbor estimation no matter what algorithm you picked. If your range is 200m and your spacing is 50m, every block has a generous neighborhood of useful samples and kriging earns its keep.

Practical rule: target drillhole spacing to be roughly half the variogram range, or shorter. If your range is 80m, drill on a 40m grid for Indicated, 20m grid for Measured.

Sill: the total variance

The sill is the value the variogram flattens out to. It represents the total variance of the grade population in the domain. If your domain has Cu grades ranging from 0.1% to 2.5%, the sill captures that spread.

In practice you usually normalize the experimental variogram to a sill of 1.0 (called a relative or standardized variogram). It makes the model fitting easier to read, because nugget and partial sill end up as fractions you can interpret directly.

Nugget: the noise floor

The nugget effect is the value where the model intercepts the Y axis at zero distance. Theoretically, two samples taken at the same point should have the same grade and the variogram should start at zero. In reality it doesn’t, because:

  • Assay measurement repeatability is imperfect
  • Sub-sampling introduces variance (the famous Gy fundamental sampling error)
  • Geological micro-variability exists below your sample support

A nugget of 0.3 (on a normalized sill of 1.0) means 30% of your variance is pure noise that no spatial model can predict. That’s a flag. It either means your assay QC is sloppy, your sample size is too small for the grain size of the mineral, or the deposit is genuinely nuggetty (free gold is the textbook example).

Element Typical nugget ratio What it tells you
Cu (porphyry) 0.10 to 0.25 Reasonable, well-behaved
Ni (lateritic) 0.15 to 0.30 Domain control matters more than nugget
Au (vein, free gold) 0.40 to 0.70 Nuggetty, expect noisy estimates
Au (disseminated) 0.20 to 0.40 Manageable with good QC
Fe (BIF) 0.05 to 0.15 Continuous, easy to estimate

If your gold variogram has a nugget of 0.05, you didn’t discover a uniquely continuous deposit. You probably under-sampled the high grades and your experimental variogram is artificially smooth. Re-check your top-cut and your domain definition.

Reading an experimental variogram

The experimental variogram is the cloud of points you compute from the data before fitting a model. It looks like a scatter that rises from low values, climbs through some structure, then plateaus (hopefully) at the sill.

Three things to check before you fit anything:

  1. Pair count per lag. Each point on the variogram represents an average of N pairs of samples at that distance. If N is below about 30, that point is unreliable. Most software lets you display the pair count per lag. Look at it. Ignore lag bins with too few pairs when judging the model.

  2. Lag distance. The lag spacing controls the resolution of the variogram. Too small and each lag bin has too few pairs and the curve is noisy. Too large and you smear out the short-range structure where the range actually lives. A reasonable starting point is half your average drillhole spacing.

  3. Maximum lag. Don’t trust the tail past about half the field extent. There aren’t enough pairs at that distance to be meaningful, and the variogram often does weird things (rising past the sill, dipping back down) that are pure artifact.

If your experimental variogram has fewer than 50 pairs in the first lag bin, you don’t have enough data to fit a variogram at all. Composite differently, expand the domain, or accept that you’re estimating with judgment, not geostatistics.

Fitting a model: the three shapes you’ll actually use

Variogram models are continuous functions fit to the experimental cloud. Three shapes cover 95% of real cases.

Spherical

The default. Rises steadily from the nugget, then bends over and reaches the sill exactly at the range. Beyond the range, the model is flat at the sill.

Use it when: the experimental variogram has a clear plateau and the rise looks roughly linear in the early lags. This is the workhorse for porphyry Cu, disseminated Au, and most sediment-hosted deposits.

Exponential

Rises faster than spherical near the origin, and approaches the sill asymptotically (so it never quite reaches it). The “practical range” of an exponential model is conventionally defined as the distance at which the variogram reaches 95% of the sill.

Use it when: the experimental variogram rises quickly near zero and the plateau is less well defined. Common for fault-controlled or vein-hosted styles.

Gaussian

Has a flat shape near the origin (a “parabolic” start) and then climbs sharply. It implies very smooth, very continuous behavior at short distances.

Use it when: you genuinely have a smooth, continuous variable like elevation or weathering thickness. Almost never use it for grade. Gaussian models on grade variograms produce kriging systems that are mathematically unstable (the matrix becomes singular or near-singular). The estimates look smooth but are numerically fragile.

Field rule: if you reach for a Gaussian variogram on grades, stop. You’ve either over-smoothed your experimental variogram, missed a nugget, or you’re modeling a different variable than you think.

Nested structures

Real deposits often need two structures stacked together. A short-range structure for local continuity (within a single ore shoot) plus a longer-range structure for the overall trend (the deposit envelope). The total sill is the sum of the partial sills, and you fit each one with its own range and shape.

Don’t go beyond two nested structures unless you’re writing a research paper. Three-structure models look impressive in a report and don’t improve estimates.

Anisotropy: the direction matters

A flat-lying sediment-hosted deposit is more continuous along bedding than across it. A vein system is more continuous along strike than across the vein. A porphyry copper system is roughly isotropic in the ore zone, then becomes anisotropic on the deposit scale because of structural overprint.

Computing directional variograms is how you measure this. You compute one variogram along the major axis (typically along strike or dip), one along the semi-major axis, and one along the minor axis. You’ll get three different ranges, often with the same nugget and sill.

The ratio of those ranges is your anisotropy ratio. A 4:1 anisotropy means grade is four times as continuous along the major direction as the minor. That ratio goes straight into your search ellipsoid for kriging. Get it wrong and your search will pull samples from across the wrong direction, and your block grades will smear.

Practical workflow:

  1. Compute an omnidirectional variogram first to get the nugget and sill.
  2. Compute three directional variograms with a generous angular tolerance (22.5° is typical) to get enough pairs.
  3. Fix the nugget and sill across all three directional models, fit only the ranges.
  4. Confirm the major axis aligns with the geology you logged. If your variogram says the major axis is N40°E and your structural data says N20°W, one of them is wrong. Investigate.

A worked example: copper grades on a porphyry project

Imagine a Sulawesi-style porphyry Cu project, 80 holes on roughly 60m spacing, 1m raw assay intervals composited to 3m for estimation. Cu grades range from 0.05% to 1.8% with a mean around 0.45%.

# Pseudo-workflow, library-agnostic
omni_variogram = compute_variogram(
    data=composites["Cu_pct"],
    lag_distance=30,        # half average spacing
    n_lags=15,              # max 450m, well under field extent
    tolerance=0.5,          # half-lag tolerance
)
# Result: nugget ~0.18, sill ~1.0 (normalized), range ~140m

Reading the omni:

  • Nugget at 0.18 (18% of total variance). Reasonable for porphyry Cu. QC was clean, so this is genuine micro-scale variability.
  • Sill plateau at 1.0 around 140m. Past 140m, samples are uncorrelated.
  • Single structure, spherical fit.

Now compute directional:

Direction Range (m) Nugget Sill Notes
060° (along ore body strike) 180 0.18 1.0 Major axis
150° (across strike) 110 0.18 1.0 Semi-major
Vertical 75 0.18 1.0 Minor axis

Anisotropy ratio: 180:110:75, or roughly 2.4:1.5:1. That goes into the search ellipsoid for ordinary kriging. With drillhole spacing of 60m, every block has good coverage along the major axis (3 ranges of samples in reach) and adequate coverage on the minor axis. Kriging will perform well.

If the same project came back with a 30m range omni and 60m spacing, you’d be over-spaced. Kriging would behave like nearest neighbor, and you’d need either tighter drilling or a more conservative classification.

Common pitfalls

Five mistakes that show up in almost every junior geologist’s first variogram report:

  1. Insufficient pairs per lag. The variogram rises in a smooth curve, then jumps wildly past lag 5 because each lag bin has 12 pairs. Look at the pair count. If it’s below 30, ignore the lag.

  2. Wrong lag distance. Setting the lag to your sample length (1m or 2m) when your drillhole spacing is 60m means the first dozen lag bins are computed within single drillholes only, missing the spatial structure that matters.

  3. Mixing domains. Computing a single variogram across two different lithologies. The result is a mess that fits no model cleanly. Domain first, variogram second. Always.

  4. Trusting the omnidirectional variogram alone. Anisotropic deposits look isotropic when you smear them across all directions. Always check at least two directional variograms, even if you’re going to fall back to omni.

  5. Force-fitting a Gaussian model because it “looks smoother.” It’s smoother because it’s mathematically too smooth. Your kriging matrix will be unstable and the variance map will be unrealistic.

A variogram model that fits the experimental cloud perfectly is suspicious. Real data is noisy. A model that hugs every wiggle has been over-fit and probably won’t generalize.

Where Orebit Geotools fits in

Phase 03 (Resource Estimation) computes both omnidirectional and directional variograms automatically when you upload your composited drillhole CSV. It handles:

  • Auto-suggested lag distance based on your drillhole spacing
  • Pair count per lag, displayed alongside the variogram
  • Auto-fitting of spherical, exponential, and nested models with sensible defaults
  • Visual sliders to adjust nugget, range, and sill so you can see the model update in real time
  • Export of variogram parameters as a JORC Table 1 Section 3 attachment

You can override every auto-fit parameter manually. The defaults are calibrated against a library of real porphyry, vein, and sediment-hosted deposits, which gets you to a defensible model in minutes instead of hours.

If you’re new to variography and want to see the parameters move with your data, this is the fastest way to build intuition. Combine it with the drillhole validation workflow and you’ve covered the data prep through estimation pipeline end to end.

See the toolkit → · Buy on Lynk.id → (Bundle IDR 99K, single modules IDR 49K, lifetime access)

Bottom line

Variography isn’t math. It’s the formal description of what your eye already does when it looks at a strip log and says “those two intercepts probably belong to the same shoot.” The math just makes the description repeatable, defensible, and signable by a Competent Person.

Get the nugget right. Get the range right. Get the anisotropy right. Don’t reach for Gaussian models. Don’t trust lag bins with too few pairs.

That’s enough to estimate most deposits competently. The rest is repetition.


Working through your first variogram and want a sanity check on the parameters? Email hello@orebit.id with the experimental variogram and I’ll tell you what jumps out.

Ship faster

Try the toolkit this article uses.

Orebit Geotools — single-file HTML, works offline, no install. From CSV to resource report in one afternoon.

Explore Geotools →
# From this article:
open geotools.orebit.id
load(your_drillhole.csv)
apply(workflow_above)

# Done. Ship the report.

Keep reading