MEASUREMENT UNCERTAINTY / METHOD GUIDE
GUM vs Monte Carlo:
when results differ.
Short answer: to propagate uncertainty, write the measurement model, give each input a value and a standard uncertainty, then either combine the sensitivities (first-order GUM) or sample the model (Monte Carlo). Both methods propagate the same declared measurement model. The first-order GUM method linearises that model; Monte Carlo samples it. They agree when the model is close to linear over the input uncertainty, and may disagree when it is not.
How do you propagate uncertainty?
- Write the measurement model:
y = f(x1, …, xN). - Give each input an estimate and a standard uncertainty
u(xi). For a uniform half-widtha, useu = a / sqrt(3). - Compute each sensitivity coefficient at those estimates:
ci = ∂f/∂xi. - Combine them. For independent inputs:
u(y)² = Σ ci² u(xi)². With correlationsr(xi, xj), add2 ΣΣ ci cj u(xi) u(xj) r(xi, xj)over the pairsi < j. - Multiply by a coverage factor: about 1.96 for 95% under a normal approximation.
- Check the result with Monte Carlo when the model is not close to linear.
Worked by hand: for y = x1 * x2 with both values 1 and both standard uncertainties 1, each sensitivity is 1, so u(y) = sqrt(1 + 1) ≈ 1.414. The recorded example below returned the same value, and shows why it is too small for this model.
What do you need to declare?
Supply an expression such as x1 + x2 + x3 + x4 and up to 16 named inputs. Each input has a value, a distribution and a unit. A normal input uses a standard uncertainty: one standard deviation. A uniform or triangular input uses a half-width, not a standard deviation. For a uniform half-width a, the corresponding standard uncertainty is a / sqrt(3); do not enter that value as a normal standard uncertainty.
Units are checked before any interval is produced. Adding a length to a duration is refused with a located diagnostic. Celsius and Fahrenheit are refused because their conversions are affine; use kelvin.
First-order GUM
The engine differentiates the expression with respect to each input, multiplies by that input's standard uncertainty and combines the contributions in quadrature. Declared correlations between normal inputs are included in the variance. The result is a standard uncertainty and a coverage interval under a normal approximation, without effective degrees of freedom.
Monte Carlo
The same expression is evaluated on seeded draws from the declared distributions. Ten independently seeded blocks are combined, and their spread is compared with the requested significant-digit tolerance. The output includes a symmetric interval and the shortest interval containing the requested coverage. Fixed draws are used; the sample count is not increased adaptively.
When do GUM and Monte Carlo results differ?
The engine applies the JCGM 101 section 8 idea: a first-order result is reported as adequate only when it agrees with a converged Monte Carlo interval within the declared numerical tolerance. A sum of squares near zero, a product of uncertain factors or an exponential model can bend enough that the linear interval misses the simulated distribution. In that case the honest result is that linearisation is inadequate, not that one method is wrong.
A recorded example
Model: x1 + x2 + x3 + x4; four independent normal inputs with value 0 and standard uncertainty 1; 95% coverage; 200,000 draws; seed 7. A native engine execution recorded on 2 October 2026 returned a first-order standard uncertainty of 2.000, a Monte Carlo standard deviation of 1.99987 and the verdict linearization_adequate (response SHA-256 888054fe6fac3e7d25a0e1ecdc4d29179e85106174024323ad38edc02ed0d042). This is a dated historical execution, not a live run; the current demo may use different draws.
A recorded example where they differ
Model: x1 * x2; two independent normal inputs with value 1 and standard uncertainty 1; 95% coverage; 200,000 draws; seed 7. A public MCP call recorded on 2 November 2026 on release 0.17.1 returned a first-order standard uncertainty of 1.414 and interval [-1.77, 3.77], against a Monte Carlo standard deviation of 1.732 and interval [-1.74, 5.29], with the verdict linearization_inadequate. For this model the exact variance is 3, so the exact standard deviation is about 1.732: the first-order budget misses the product of the two deviations. The tool recommends the Monte Carlo result here.
Limits
- Unlisted influences are absent from the model. Coverage is conditional on the supplied distributions, correlations and expression.
- A coverage interval is not a guarantee about an instrument and does not establish accreditation.
- Correlations are accepted only where the contract declares them, currently between normal inputs.
- More Monte Carlo draws do not repair a wrong physical model or an invalid unit.
- No effective degrees of freedom are computed.
Sources
Primary method references: JCGM 100:2008 (GUM, the Guide to the Expression of Uncertainty in Measurement) and JCGM 101:2008 (Supplement 1, Monte Carlo), Joint Committee for Guides in Metrology. The engine's own tests compare selected cases with independent references; that comparison is not external certification of your model.
Try the uncertainty demonstration · Read the engine contract · Evidence and trust boundaries
First published 2 November 2026 · Last updated 2 November 2026