The problem: two confirmations may be the same confirmation
An irrigation decision-support system receives two similar soil-moisture readings. It is natural to treat the second as confirmation and their average as much more reliable. Yet both sensors may respond to the same environmental disturbance or share imperfect calibration. Agreement does not protect against an error in the same direction. Our question is therefore how much new information a second measurement really adds.
Abstract. Starting with two sensors whose error standard deviation is two percentage points, we introduce correlation and derive uncertainty of the average. We then choose weights for unequal-quality sensors and explain why a negative weight need not be an algebra mistake. A 200,000-pair simulation checks how an apparently 95% interval can be overconfident. Inputs and thresholds are educational: no field measurement, agronomic recommendation or EL-AI performance follows from these numbers.
What are we measuring, and in which units?
Let θ denote volumetric water content in percent. A value of 25 means 25% by volume in this example. Moving from 25 to 27 is two percentage points, not a relative 2%. Errors and standard deviations below use percentage points; variances and covariances use squared percentage points. Assume both instruments measure the same quantity at the same time and representative volume. If they observe different zones, differences may be physical signal rather than noise to remove.
Write y₁=θ+e₁ and y₂=θ+e₂. The y values are readings and e values are errors relative to truth. Assume zero-mean errors: over ideal repetitions, overestimates and underestimates balance. Individual readings need not be exact. Variance σ² is mean squared error here, and its square root σ describes typical spread. An uncorrected systematic bias violates the zero-mean assumption; we return to that limit.
Covariance records what errors do together
Errors are positively correlated when they tend to be simultaneously above or below zero. Covariance c=E[e₁e₂] summarizes this for centered errors. Dividing by σ₁σ₂ gives dimensionless correlation ρ, between −1 and 1. Zero correlation need not imply independence, but removes the cross-term in a sum variance. Our experiment uses a joint Gaussian distribution, whose linear dependence is described by correlation.
The average m=(y₁+y₂)/2 has error (e₁+e₂)/2. Square it to obtain e₁², e₂² and twice e₁e₂, then take expectations. The error product, often omitted, contains the information about misleading agreement.
For ρ=0 we obtain the familiar √2 improvement in standard deviation. For ρ=1 and equal spread, averaging does not help: errors coincide. With σ=2 and ρ=0.8 the average has standard deviation 1.897 points, not 1.414. The second reading helps, but much less than independence suggests. This formula is exact for the linear combination; no small-perturbation approximation was needed.
Why two readings can look highly consistent
Now examine y₁−y₂. Truth cancels, leaving e₁−e₂ with variance σ₁²+σ₂²−2c. The common term enters negatively. For equal sensors, increasing correlation reduces difference variability while increasing uncertainty of the average. Here the difference standard deviation is 1.265 points. Sensors look increasingly consistent, yet their average remains uncertain. Agreement mainly measures how their errors differ, not distance from truth.
| ρ | Average SD (points) | Equivalent independent readings |
|---|---|---|
| 0 | 1.414 | 2.000 |
| 0.5 | 1.732 | 1.333 |
| 0.8 | 1.897 | 1.111 |
| 1.0 | 2.000 | 1.000 |
The last column asks how many independent readings, each of variance σ², would give the same average variance. Solving σ²/N_eff=σ²(1+ρ)/2 gives N_eff=2/(1+ρ). At ρ=0.8, two readings equal about 1.11 independent readings for this metric alone. This is not a universal information count or an automatic correction for any AI model.
From the number to a decision: an interval that is too narrow
Suppose the observed average is 25. With Gaussian errors and known parameters, an interval centered on the estimate with half-width 1.96 σ_m has about 95% repeated-measurement coverage of the fixed truth. Ignoring correlation gives 25±2.772, about [22.23,27.77]. Accounting for it gives 25±3.719, about [21.28,28.72]. Readings did not change; our assessment of their combined uncertainty did.
Imagine a purely illustrative threshold at 22: the first interval lies entirely above it, the second crosses it. This is not an irrigation prescription, which needs soil, crop, depth and error costs. It shows how uncertainty changes support for a decision. The 95% concerns interval-procedure coverage under the model, not certainty about this measurement or a distribution-free guarantee.
The simulation: what we actually ran
Generate independent standard Gaussians z₁ and z₂. Set e₁=2z₁ and e₂=2(0.8z₁+0.6z₂). Here 0.6=√(1−0.8²), preserving variance four in the second error. Shared z₁ gives covariance 3.2 and correlation 0.8. This exposes how dependence is constructed. We use 200,000 pairs, NumPy 2.5.3 and seed 20260929; code and versions are attached.
Empirical average standard deviation is 1.8963 points, close to analytic 1.8974. Intervals pretending independence cover truth in 85.64% of replicates, not 95%; correct-covariance intervals reach 95.05%. These are simulation frequencies with Monte Carlo variation, not greenhouse measurements. Code checks agreement within tolerance rather than demanding exact equality between sample frequency and theoretical probability.

In the left plot, uncertainty returns toward the single-sensor two points as ρ approaches one. On the right, the first bar’s gap below the dashed line shows the cost of the wrong assumption. We do not establish that all sensors have ρ=0.8; we test a mathematical consequence of an explicit chosen hypothesis.
Unequal sensors: choosing weights
A simple average fits equal-quality sensors. If the first is more precise, seek an estimate ŵ=w y₁+(1−w)y₂. Weights summing to one preserve θ for zero-mean errors; they cannot remove miscalibration bias. Estimate variance is a quadratic in w. Minimizing it selects the smallest model-predicted spread among these unbiased linear combinations.
The second line is variance slope with respect to weight. Setting it to zero gives w*. The denominator is error-difference variance; when positive, the quadratic has a unique minimum. Identical errors give zero denominator, not permission to divide by zero: every sum-one combination retains the same error. Covariance must satisfy |c|≤σ₁σ₂; arbitrary values violating it cannot describe a valid distribution.
Take σ₁=1, σ₂=2 and initially c=0. Weights are 0.8 and 0.2; readings 24 and 26 give estimate 24.4 and variance 0.8. The more precise sensor carries more weight. With covariance 1.6 and unchanged spreads, optimal weights become 4/3 and −1/3; estimate 23.333 and variance again 0.8. Readings are unchanged; the shared-error model changed.
A negative weight subtracts part of the common component; it is not “negative reliability.” This statistical solution assumes known stable covariances. It can leave the range of readings and become fragile under an incorrect error model. Constraining weights to [0,1] moves the second example’s minimum to w=1: use only the first sensor, variance 1. We trade theoretical improvement for no extrapolation, not prescribe negative field weights.
More sensors do not eliminate a common cause
Write eᵢ=b+ηᵢ: b is shared disturbance; η values are independent individual disturbances, also independent of b. All have zero mean across the repetitions considered. Set Var(b)=3.2 and Var(ηᵢ)=0.8; each sensor then has variance four and pairwise correlation 0.8. Averaging N sensors leaves b plus average η. The first term remains whole; only the second shrinks.
Two to ten sensors reduce SD from 1.897 to 1.811 points; a hundred reach 1.791. The limit is not zero. If b were fixed calibration bias rather than a centered random variable across repetitions, averaging would retain that bias and variance alone would not describe total error. Address or characterize the common cause instead of merely adding identical instruments. This is model analysis, not economics for a real installation.
What must be estimated before using the formula
Raw-reading correlation is not error correlation: correct sensors both follow true moisture changes. Use a reference and residuals to the same value across representative conditions. The reference itself may add shared uncertainty, which must be propagated rather than blamed on sensors. One 24/26 pair cannot estimate ρ. Replicates and separation of soil variability, drift and instrument noise are needed.
Covariance estimated from little data adds uncertainty if treated as known. Compare plausible ρ values, validate on a separate campaign and distinguish operating conditions. An AI network receiving both readings does not make them independent; learned fusion must also be evaluated for common errors and environmental changes. Another dataset column is not automatically another independent observation.
The answer and the sources
Agreeing sensors help when their errors are at least partly different and that difference is characterized correctly. Our average remains useful, but ignoring correlation turns a nominal 95% interval into roughly 86% simulated coverage. Weighting can improve estimates under verifiable assumptions. In sensor-fed AI design, count not just readings but which uncertainties can shrink and which remain shared.
NIST uncertainty propagation including covariance is the metrological reference; our linear derivation is exact. Gaussian notation and measurement models refer to Särkkä, Bayesian Filtering and Smoothing (2013), section 3.1 and appendix A.1. Agricultural examples and simulation are our educational analysis, not those sources’ experiments, original research or an EL-AI installation. The snippet reconstructs analytic cases; the archive includes full simulation, seed and plots.
NIST — Combining uncertainty components.
Särkkä (2013) — Bayesian Filtering and Smoothing, 3.1 and A.1.
from math import sqrt
sigma, rho = 2.0, 0.8 # synthetic percentage points
print("independence assumption:", sigma/sqrt(2))
print("correlation-aware sd:", sigma*sqrt((1+rho)/2))
v1, v2, c = 1.0, 4.0, 1.6
w = (v2-c)/(v1+v2-2*c)
print("weights:", w, 1-w)
print("variance:", (v1*v2-c*c)/(v1+v2-2*c))
# Full seeded simulation and data are in the downloadable archive.
Code, data, and instructions · JSON. Educational calculations executed with Python 3.14.0; figures with Matplotlib 3.11.2. AI-assisted analysis, without claiming peer review or human review. Original illustrative ImageGen cover: it does not document EL-AI people, premises, or installations. Sources accessed 29 September 2026.

