osmose.calibration.uq.predictive

Posterior-predictive diagnostic (Goal 2): per-species marginal emulator-predictive ranges from the posterior over theta.

DIAGNOSTIC, not calibrated against reality. The joint draws are computed internally and DISCARDED — only per-species marginal ranges + a theta-mediated cross-species correlation are returned, so totals/ratios/P(total>X) (invalid for a conditionally- independent emulator) cannot be derived from the result. y is a single-run log-biomass with mean mu_emu (NO Jensen shift): the predictive median biomass is the GEOMETRIC mean, below the arithmetic target by exp(-0.5*sigma_seed_sq).

Functions

emulator_holdout_coverage(emulators, ...[, ...])

Per-key fraction of held-out engine points inside the emulator's predictive interval.

marginal_coverage(ranges, targets)

Per-species marginal coverage: does each target fall within its predictive biomass [lo, hi]? The one honest, cheap posterior-predictive check available now — a genuine trophic (joint) PPC needs per-seed joint design outputs, which Phase 1 discarded.

posterior_predictive(sampler_result, ...[, ...])

Genuine per-theta mixture -> per-species marginal predictive ranges.

Classes

EmulatorPredictiveRanges(keys, log_ranges, ...)

Per-species MARGINAL emulator-predictive ranges (a labeled diagnostic).