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.

Tier V.C — Persistency

UNEP
IMEO
MARS

Question: Given the inverted intensity λ(t)\lambda(t) from Tier V.B, when will the next emission event happen, and what’s the probability of an event during a specified window?

This is the operational layer — what an LDAR (Leak Detection and Repair) crew or a satellite-tasking dispatcher actually consumes. The full derivations of each metric live in methane_pod/notebooks/08_persistency; this page summarises the metrics and how they slot into the plumax API.


The four operational metrics

1. Expected wait time E[Δtt0]\mathbb{E}[\Delta t \mid t_0]

How long after time t0t_0 until the next event?

E[Δt]  =  1λ0(homogeneous Poisson; memoryless)\mathbb{E}[\Delta t] \;=\; \frac{1}{\lambda_0} \qquad \text{(homogeneous Poisson; memoryless)}
E[Δtt0]  =  t0exp ⁣(t0tλ(u)du)dt(inhomogeneous; depends on starting clock)\mathbb{E}[\Delta t \mid t_0] \;=\; \int_{t_0}^{\infty} \exp\!\left(-\int_{t_0}^{t} \lambda(u)\, \mathrm{d}u\right) \mathrm{d}t \qquad \text{(inhomogeneous; depends on starting clock)}

For a diurnal source, vastly different at noon vs. midnight.

Operational use. Dispatch decisions: arrive during a high-λ window and the next event is imminent (worth waiting); arrive during a low-λ window and you’d waste hours. Drives MARS-style dispatch suppression during dormant cycles.

2. Probability of occurrence P ⁣(N(t1,t2)1)\mathbb{P}\!\bigl(N(t_1, t_2) \geq 1\bigr)

What’s the chance of at least one event in [t1,t2][t_1, t_2]?

P ⁣(N(t1,t2)1)  =  1exp ⁣(λ0(t2t1))(homogeneous)\mathbb{P}\!\bigl(N(t_1, t_2) \geq 1\bigr) \;=\; 1 - \exp\!\bigl(-\lambda_0\, (t_2 - t_1)\bigr) \qquad \text{(homogeneous)}
P ⁣(N(t1,t2)1)  =  1exp ⁣(t1t2λ(t)dt)(inhomogeneous)\mathbb{P}\!\bigl(N(t_1, t_2) \geq 1\bigr) \;=\; 1 - \exp\!\left(-\int_{t_1}^{t_2} \lambda(t)\, \mathrm{d}t\right) \qquad \text{(inhomogeneous)}

Operational use. “Wrench-turning” probability. If a maintenance window is 4 hours, what’s the chance the leak shows itself during that window? Drives whether to schedule the visit.

3. Conditional intensity given prior detection λ(ttprev)\lambda(t \mid t_\text{prev})

For a source with a known recent detection at tprevt_\text{prev}, what’s the posterior intensity going forward?

For Poisson processes (no memory): unchanged. For Hawkes / self-exciting processes: bumped —

λ(ttprev)  =  μ+αexp ⁣(β(ttprev))\lambda(t \mid t_\text{prev}) \;=\; \mu + \alpha\, \exp\!\bigl(-\beta(t - t_\text{prev})\bigr)

— captures the empirical observation that super-emitters “cluster”.

Operational use. Prioritisation: a source with a recent detection is more likely to repeat-emit in the next 24 h. Re-task a high-resolution satellite (GHGSat GHGSat Inc., 2016, Carbon Mapper Carbon Mapper, 2024) on top of a TROPOMI alert Veefkind et al., 2012.

4. Cumulative event count E[N(0,T)]\mathbb{E}[N(0, T)] and credible bounds

Expected number of events in [0,T][0, T], with credible interval from the posterior on λ.

E[N(0,T)]  =  Λ(T)  =  0Tλ(t)dt\mathbb{E}[N(0, T)] \;=\; \Lambda(T) \;=\; \int_{0}^{T} \lambda(t)\, \mathrm{d}t

(Homogeneous: λ0T\lambda_0 \cdot T.)

Operational use. Annual reporting, regulatory compliance. “How many emission events should we expect this year at this facility class, with 95% credible interval?”


API shape

A thin wrapper around methane_pod.intensity:

from plume_simulation.population.persistency import (
    expected_wait_time,
    occurrence_probability,
    cumulative_count,
    next_event_quantile,
)

# Inputs: posterior samples of intensity parameters (from Tier V.B fit)
# Outputs: posterior samples of the operational metric

E_wait = expected_wait_time(intensity, t0=18.0, posterior_samples=mcmc.get_samples())
# → array of shape (n_samples,) in [hours]

P_occur = occurrence_probability(intensity, t1=8.0, t2=12.0,
                                 posterior_samples=mcmc.get_samples())
# → array of shape (n_samples,) in [0, 1]

The metric functions take an intensity callable (any of the 13 equinox modules from methane_pod.intensity), a query window, and a posterior sample of the intensity’s parameters. They return posterior samples of the metric — full UQ propagation, no point estimates.


Module layout

Table (1):Tier V.C module layout — concern, target module, status.

ConcernModuleStatus
Intensity functionsmethane_pod.intensity
Wait-time / occurrence / cumulative metricsplume_simulation.population.persistency
Posterior-aware metric wrapperssame module
Operational dashboard / report templatesout of scope for plumax; lives in plumax-deploy (future)

The integral over λ(t)\lambda(t) in the wait-time formula is closed-form for a few intensity choices (constant, exponential decay) and otherwise needs jax.scipy.integrate or a fixed quadrature. Worth wrapping once and reusing across metrics.


Validation strategy


Open questions

References
  1. GHGSat Inc. (2016). GHGSat WAF-P imaging spectrometer constellation. https://www.ghgsat.com/
  2. Carbon Mapper. (2024). Carbon Mapper: airborne and satellite imaging spectroscopy for greenhouse gas monitoring. https://carbonmapper.org/
  3. Veefkind, J. P., Aben, I., McMullan, K., Förster, H., de Vries, J., Otter, G., Claas, J., Eskes, H. J., de Haan, J. F., Kleipool, Q., & others. (2012). TROPOMI on the ESA Sentinel-5 Precursor: a GMES mission for global observations of the atmospheric composition for climate, air quality and ozone layer applications. Remote Sensing of Environment, 120, 70–83.