Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Missing Mass Paradox — Monte Carlo proof

The missing mass paradox

A satellite alerting system simultaneously overestimates the average emission rate of a facility while strictly underestimating the total emitted mass. This is the missing mass paradox, and it is a direct consequence of running a size-dependent detection filter over a heavy-tailed mark distribution. This notebook demonstrates the paradox numerically using the plumax.population.paradox library.

The architecture has three strictly separated layers:

  1. Event generator — homogeneous Poisson process generates Ntrue∼Poisson(Λtrue)N_{\text{true}} \sim \text{Poisson}(\Lambda_{\text{true}}) events on a timeline, with Λtrue=λtrue⋅T\Lambda_{\text{true}} = \lambda_{\text{true}} \cdot T.

  2. Mark generator — each event is assigned a flux rate Qi∼LogNormal(μ,σ)Q_i \sim \text{LogNormal}(\mu, \sigma) [kg/hr]. Heavy-tailed: a few catastrophic blowouts dominate the total mass budget.

  3. Atmospheric filter — each event is thinned independently with Bernoulli probability Pd(Qi)=σ(k(Qi−Q50))P_d(Q_i) = \sigma(k(Q_i - Q_{50})). Small leaks are invisible; large leaks are always detected.

The two proofs we will verify by Monte Carlo are:

PROOF 1:E[Qobs]>E[Qtrue](average overestimation)\text{PROOF 1:}\quad \mathbb{E}[Q_{\text{obs}}] > \mathbb{E}[Q_{\text{true}}] \qquad\text{(average overestimation)}
PROOF 2:Mobs<Mtrue(mass underestimation)\text{PROOF 2:}\quad M_{\text{obs}} < M_{\text{true}} \qquad\text{(mass underestimation)}

1. A single canonical scenario (realistic multi-satellite constellation)

We pick an “Active Compressor” setup with a detection midpoint Q50=1000Q_{50}=1000 kg/hr and a gradual sigmoid k=0.003k=0.003. That threshold is chosen to be representative of the mixed sparse-revisit constellation actually in orbit today — Sentinel-2, Landsat-8/9, EMIT, EnMAP, PRISMA, TROPOMI, Sentinel-3 — where the least-sensitive platform in a given overpass sets the effective floor. Hyperspectral hyperspecifics like GHGSat/Tanager are an order of magnitude more sensitive, but any stacked “any-satellite” PoD is dragged up by the multispectral majority.

Consequence: the satellite sees a small fraction of the true events, and the observed sample is heavily biased toward super-emitters. That is exactly what we want to visualise.

Loading...

The ratios confirm both proofs on a single Monte Carlo realisation. The average observed emission rate is inflated above the true average, while the total observed mass is a fraction of the true mass. The Missing Mass Scaling Factor (MMSF = Mtrue/MobsM_{\text{true}}/M_{\text{obs}}) quantifies how much the satellite is underreporting in a single number.

2. The three-phase visual proof

Three plots tell the full story: timeline thinning (what events survived), distribution warping (how the flux histogram gets biased), and the PoD filter overlay (which events the filter kills).

<Figure size 1600x450 with 3 Axes>

3. Why the PDFs look so similar — and where the paradox actually hides

At a casual glance the true PDF f(Q)f(Q) and the satellite-weighted PDF fobs(Q)f_{\text{obs}}(Q) look nearly indistinguishable on the linear-y semilogx plot above. This is not a bug in the simulation; it is a real property of the realistic-constellation regime. When the POD transition sits well to the right of the bulk of the mark distribution (realistic case: ln⁡Q50≫μ\ln Q_{50} \gg \mu), then Pd(Q)P_d(Q) is a nearly-flat (small) multiplier across the Q-range where f(Q)f(Q) has visible probability mass. Under that condition fobs(Q)=f(Q)Pd(Q)/E[Pd]f_{\text{obs}}(Q) = f(Q) P_d(Q) / \mathbb{E}[P_d] has the same shape as f(Q)f(Q) in the bulk — even though the paradox is present in the numbers.

So the paradox is real, but it lives in quantities the linear-y PDF plot hides. Three views make it obvious:

  1. Log-y PDF — at Q≫Q50Q \gg Q_{50} we have Pd(Q)→1P_d(Q) \to 1 while E[Pd]\mathbb{E}[P_d] stays small, giving fobs/ftrue→1/E[Pd]f_{\text{obs}}/f_{\text{true}} \to 1/\mathbb{E}[P_d]. That is a 10×–100× amplification of the far-right tail, completely invisible on linear-y.

  2. Mass density Q f(Q)Q\,f(Q) — the thing you actually integrate to get total mass. The true mass peaks near exp⁡(μ+σ2)\exp(\mu+\sigma^2); the detection-weighted mass peaks out near Q50Q_{50}. The horizontal shift between the two peaks IS the paradox, visualised.

  3. CDF — the observed CDF is visibly right-shifted against the true CDF. At the 50th percentile the gap is often an order of magnitude in Q.

<Figure size 1600x430 with 3 Axes>
Loading...

4. The canonical scenario sweep

The paradox direction holds across every physically realistic regime. We sweep the six canonical scenarios from build_canonical_scenarios(): abandoned well (severe), active compressor (moderate), super-emitter (mild), extreme skew, sharp-sensor, soft-sensor. For each one we average over 20 seeds to reduce sampling noise.

Loading...

Every scenario satisfies the two-proof structure:

  • Average overestimation ratio ≥ 1 (the satellite’s sample mean exceeds the true mean).

  • Mass underestimation ratio ≤ 1 (the satellite’s sample sum falls short of the true total).

The severity depends on where the bulk of the lognormal mark distribution sits relative to the detection threshold Q50Q_{50}. When Q50Q_{50} is far above the median mark (abandoned-well case), the satellite sees only the upper tail and the paradox is extreme. When Q50Q_{50} is at or below the median (super-emitter case), detection is near-complete and the paradox is mild.

5. Visual dashboard across scenarios

Six mini-panels, one per scenario, showing the mass density Q f(Q)Q\,f(Q) vs Q fobs(Q)Q\,f_{\text{obs}}(Q). Using the mass density (rather than the raw PDF) makes the right-shift of the observed distribution visible in every panel — the red curve peaks near Q50Q_{50} while the black curve peaks near exp⁡(μ+σ2)\exp(\mu+\sigma^2). That horizontal gap is the paradox made visible.

<Figure size 1500x750 with 6 Axes>

6. Sensitivity to μ and σ

Fix the satellite (keep Q50,kQ_{50}, k constant at the realistic constellation values above) and sweep the mark distribution. The heatmap below shows E[Pd]E[P_d] — the scalar “blindness factor”. When the lognormal mean is well below the detection threshold, the satellite is nearly blind (dark region). As μ\mu rises past ln⁡Q50≈6.9\ln Q_{50} \approx 6.9, the satellite becomes saturated. Larger σ\sigma (heavier tail) raises E[Pd]E[P_d] at fixed μ\mu because the right tail reaches into the detectable regime, but the paradox ratios also grow because the detectable right tail carries most of the mass.

<Figure size 750x500 with 2 Axes>

Takeaways

  • The paradox is not a bug in any particular satellite — it is a mathematical consequence of running a size-dependent filter over a heavy-tailed mark distribution.

  • A single scalar E[Pd]E[P_d] governs the severity: small E[Pd]E[P_d] means large MMSF.

  • Any operational inference built from satellite plume tallies must be debiased with a filter-aware model (next notebooks).

  • The companion notebook stationary NumPyro MCMC shows how to invert this filter via NumPyro.