Subsections of Explanation

Interpretation

marketbayesmeta produces review artefacts, not automatic decisions.

Reportability

A completed run is not automatically reportable. Check:

  • run_status.reportable
  • readiness.csv
  • diagnostics.csv
  • prior_diagnostics.csv
  • sensitivity outputs
  • analysis_report.md

Future true effect

future_true_effect_summary.csv describes the latent true effect for a comparable future study. It excludes measurement error and is not a prediction for the next observed study estimate.

Posterior predictive checks

ppc.csv is an in-sample study-level posterior predictive check. It is useful for spotting studies that look out of line with the fitted model, but it is not leave-one-out validation and should not be interpreted as out-of-sample accuracy.

Reporting language

Recommended reporting should distinguish:

  • the pooled posterior estimate for comparable evidence;
  • the latent true-effect distribution for a future comparable study;
  • uncertainty-scenario dependence;
  • prior dependence;
  • diagnostics and readiness caveats.

Release Status

The current internal release candidate is 0.3.0.

Suitable use

0.3.0 is suitable for supervised Data Science analyst workflows where outputs are reviewed before reporting. It is not intended for unattended production reporting.

Validation snapshot

Validated locally on June 3, 2026 using the repository virtual environment:

  • PATH=.venv/bin:$PATH make check: passed
  • PATH=.venv/bin:$PATH make check-statistical: passed
  • PATH=.venv/bin:$PATH python runme.py examples/config.yaml: completed

The synthetic example completed with diagnostics passed, readiness directional, and run_status.reportable false, as expected for the small-K example.

Known limitations

  • Real project trackers still require analyst judgement about estimand comparability.
  • Small-K random-effects analyses remain prior-sensitive.
  • Leave-one-out influence summaries are not part of the default workflow.
  • This private repository intentionally does not use CI/CD.

FAQ

Does the library fit Bayesian random-effects models with PyMC?

Yes. The default model is a Bayesian normal-normal random-effects meta-analysis in PyMC. Random effects are a sensible default for comparable marketing measurement studies because campaigns, markets, periods, execution, and measurement designs often differ.

When should studies not be pooled?

Do not pool studies just because they share a broad label such as “sales uplift” or “awareness”. Pool only when the estimand, scale, population, measurement window, and study design are comparable enough for a pooled effect to mean something.

MMM, PA2, ROI, CPA, CPO, and iROAS should usually be triangulated rather than pooled unless harmonised explicitly upstream.

How many studies are enough?

There is no universal threshold. With two studies, random-effects meta-analysis is usually not recommended. With three to five studies, the pooled estimate can be useful but should be treated as directional and prior-sensitive.

By default, config runs require at least three comparable rows for an exploratory directional run and at least four for ready.

Where do priors come from?

Priors should come from defensible external information and explicit scale calibration, not from tuning the model until the result looks convenient.

Defaults are scale-aware:

  • log_relative: mu_sd=1.0, tau_scale=0.5
  • percentage_point: mu_sd=10.0, tau_scale=5.0

For serious reporting, set and justify priors in YAML and run prior sensitivity.

Why not use LOO by default?

LOO can be useful with enough independent studies, but it is easy to over-read at very small K. In the main use case, readiness checks, sampler diagnostics, prior sensitivity, and posterior predictive checks are more useful first-line review tools.