Supported surface
Select an interface by its actual model and operational contract. AMMM3 examples are useful methodological references, but their classes, options and saved artefacts cannot be assumed to work in AMMM4.
| Need | AMMM4 route | Boundary |
|---|---|---|
| Aggregate or dimensioned MMM | ammm.mmm.MMM | Priors define sharing and hierarchy |
| Multiplicative LogNormal response | Ordinary MMM(link="log") | Experimental; median/mean semantics and calibration restrictions |
| Unit fixed effects | FixedEffectsMMM | Balanced unit-only model; narrower operations |
| Correlated random effects | CorrelatedRandomEffectsMMM | Experimental posterior qualification |
| Experimental calibration | Ordinary MMM calibration methods | Supported contrast, link and persistence only |
| Python budget optimisation | model.budget_optimizer | Conditional local constrained optimum |
| Retained manual scenarios | Version-1 scenario recipes | Completed runner model; supported labels and windows |
| YAML optimisation stage | No validated configuration block | Reserved directory does not imply execution |
| Prior sensitivity | Stage 05 planning, optional stage 75 fits | Not equivalent to an input sweep |
| AI review | Optional local/provider evidence review | No automatic causal or decision approval |
| PIE | Separate PIEModel | Alpha transport prediction across campaigns |
Use current plot namespaces (model.plot, optimizer.plot, cv.plot) and the
current optimiser result interface. Do not restore removed wrapper classes or
legacy module paths to make an old example run. Model loading has no promised
AMMM3 compatibility; retain the originating environment or rebuild and refit.
This guide describes support, not comparative accuracy or production capacity. Such claims require a declared workload, evidence design and measured results.
Move a workflow deliberately
Reconstruct the statistical task and its evidence, then select the AMMM4 interface.
The mapping below is not a list of compatibility aliases: AMMM4’s explicit public
exports are defined at src/ammm/mmm/__init__.py:10.
| Previous task | AMMM4 route | Migration check |
|---|---|---|
| Ordinary panel MMM | MMM(dims=("geo",)) with explicit priors | Verify dimensions, learned pooling versus fixed hyperparameters, signed-max scales and likelihood |
| Unit fixed effects | FixedEffectsMMM(unit="geo", ...) | Check balanced known-unit panel, within estimability and excluded operations; inspect contrast priors and level predictions |
| Correlated random effects | CorrelatedRandomEffectsMMM(unit="geo", ...) | Use the transformed-summary basis and experimental qualification limits; do not transplant old flags or a Wald-test rule |
| Log-response specification | Experimental ordinary MMM(link="log") through Python | Verify support and median/mean estimand; retained YAML runner rejects it |
| YAML fitting | runme.py and current typed blocks | Rebuild trusted class paths and nested priors; verify input/output path resolution and overrides |
| Saved model reuse | MMM.load only for a supported AMMM4 persistence record | No general AMMM3-to-AMMM4 saved-model converter is provided |
| Current/manual plans | Version-1 ScenarioRecipe and retained run mode | Horizon totals differ from per-period Python budgets; verify history/carryover |
| Legacy workspaces, job protocol or categorical-time FE | No equivalent supported surface in these AMMM4 interfaces | Retain the originating runtime or redesign the task explicitly; do not rename classes and assume parity |
| Budget optimisation | Ordinary Python budget_optimizer | Recheck objective, bounds, additional variables and monetary conversion; no YAML optimiser block |
| Exported curve intervals | eti_94_lower, eti_94_upper in runner stage 60 | Update consumers and preserve interval type; do not relabel old HDI columns mechanically |
Operation boundaries are implemented at src/ammm/mmm/fixed_effects.py:104,
src/ammm/mmm/correlated_random_effects.py:188,
src/ammm/pipeline/stages/core.py:130, src/ammm/mmm/scenarios.py:160,
src/ammm/mmm/budget_optimizer.py:704 and src/ammm/pipeline/stages/core.py:951.
See the changelog for version-specific breaks and
the API signatures for the current call surface.
For an unsupported saved format, archive the original environment, source commit,
model file and canonical data. Reconstruct channels, controls, labels, dates,
transforms, priors, scaling, calibration records and preprocessing; inspect prior
predictions, refit, then verify save/load and labelled predictions. Compare
estimands and uncertainty under a stated numerical/statistical tolerance rather
than requiring identical posterior draws. AMMM4 persistence format 1 validates
canonical data and calibration replay; disabling an identity check does not bypass
that contract (src/ammm/mmm/persistence.py:62, src/ammm/mmm/mmm.py:970).
Implementation reference at 7cb7f20: src/ammm/mmm/init.py:1, src/ammm/pipeline/stages/core.py:969.