Choose an Estimator

PanelMMM provides three released named estimator presets:

  • time_series for one aggregate time series
  • fe for a one-unit fixed-effects panel
  • cre for a one-unit correlated-random-effects panel

The re declaration is typed but release-gated. It is not a runnable estimator.

Release support matrix

PresetStatus in 3.1.0Data contractIdentifying variationImportant operation boundary
time_seriesReleasedOne aggregate observation per dateAggregate temporal variationUses the supported ordinary PanelMMM workflow
feReleasedOne balanced unit-date panelWithin-unit temporal variationPrediction and historical/manual scenarios require all fitted units; calibration and fixed-budget optimisation are unavailable
creReleasedOne balanced unit-date panelWithin-unit variation conditional on the declared transformed between-unit summary adjustmentPrediction and historical/manual scenarios require all fitted units and frozen fitted CRE summaries; calibration and fixed-budget optimisation are unavailable
reGated; not releasedDeclaration onlyNot applicable until releaseGraph construction fails closed with EstimatorReleaseGateError

The support status is a software release boundary, not evidence that a preset is appropriate for a particular dataset or causal question.

Compare the released presets

Questiontime_seriesfecre
Data structureOne observation per dateBalanced unit-date panelBalanced unit-date panel
Unit effectsNot applicableAbsorbed unit interceptsGaussian random unit intercept
Identifying variation for shared slopesAggregate temporal variationWithin-unit temporal variationWithin-unit temporal variation, conditional on the declared between-unit summary adjustment
Media slopesSharedShared across unitsShared across units
Adstock and saturationSharedShared across unitsShared across units
Persistent unit differencesNot representedRemoved from the slope likelihoodModelled through the random intercept and declared CRE summaries
Common categorical time effectsNot an estimator optionNot supportedNot supported
CalibrationAvailable through the ordinary PanelMMM surfaceNot supportedNot supported
Historical and manual scenariosSupportedSupported for all fitted unitsSupported for all fitted units with frozen fitted CRE summaries
Fixed-budget optimisationSupportedNot supportedNot supported

All three presets combine likelihood information with the declared priors. None of them turns observational marketing data into a causal design.

Use the time-series preset

Use time_series when the modelling unit is one aggregate market, brand, or business series and each date occurs once.

estimator:
  type: time_series

Do not use it to disguise panel observations as independent aggregate rows. Aggregate the data deliberately or use a panel estimator.

Use FE

Use fe when the target question concerns changes within units over time and you want time-invariant unit characteristics removed from the shared-slope likelihood.

estimator:
  type: fe
  unit: geo

FE is appropriate only when the transformed media and controls have enough within-unit temporal variation. It cannot estimate coefficients for predictors that are constant within every unit. It also does not remove time-varying confounding or common shocks.

See Fixed-effects Estimator for the exact likelihood and estimability checks.

Use CRE

Use cre when persistent unit differences may be associated with the declared predictors and you need an explicit within-between panel specification.

estimator:
  type: cre
  unit: geo

CRE augments the shared-slope random-intercept model with centred unit summaries. Media summaries use the fitted adstock-and-saturation exposure basis rather than raw-spend means. The adjustment is limited to the declared basis. It does not correct arbitrary omitted confounding.

CRE needs both usable within-unit media variation and enough independent between-unit information for its active summaries. Prediction is limited to the complete set of fitted units.

See Correlated-random-effects Estimator for the exact likelihood, summary basis, estimability checks, and prediction boundary.

Do not choose from fit statistics alone

The presets answer different statistical questions. Do not select one only because it has the best in-sample fit, lowest information criterion, or the most favourable media coefficient.

Before fitting:

  1. State the unit and time structure of the business question.
  2. State which persistent and time-varying confounding paths remain plausible.
  3. Check whether the proposed identifying variation exists after media transformation.
  4. Choose the estimator contract and priors before inspecting the preferred result.

After fitting, inspect the estimator-specific estimability evidence, MCMC diagnostics, posterior predictive checks, prior sensitivity, and any predeclared holdout evidence supported by that estimator. A passed screen means that AMMM3 did not detect the specified defect. It is not proof of causal or global identification.

Run the bundled recipes

From the repository root:

python3 runme.py --demo timeseries
python3 runme.py --demo geo_fe
python3 runme.py --demo geo_cre

The demo sampling settings are evidence-oriented and may take time. Command-line overrides can reduce the budget for an installation or workflow check. Do not interpret a reduced run as final statistical evidence.