What is the method comparison?

The method comparison shows the same channels estimated by two different marketing-mix models side by side — contribution and marginal return under each. Both fit the same weekly panel (margin as response, per-channel spend as predictors, adstock and saturation transforms); they differ in estimation machinery, and the comparison exists because agreement between two unlike methods is the cheapest robustness check an MMM can offer.

Formula

one row per channel:  ridge contribution | ridge marginal return
                      PyMC contribution  | PyMC marginal return

Worked example

Search reads €260k contribution under ridge and €240k under PyMC — an 8% gap on different machinery; treat €250k as solid. Display reads €60k under ridge but €15k under PyMC. That disagreement is the finding: display's spend history doesn't identify its effect well, and no budget decision should lean on either display number alone.

How Saldo Metrics computes it

Ridge with saturation (ridge_saturation) is the default: a deterministic least-squares regression over adstocked, Hill-saturated weekly spend with monthly seasonality terms, channel coefficients constrained to be non-negative, and adstock decay picked from a small grid by fit quality. Despite the name, it applies no ridge (L2) penalty unless the org has configured channel priors; when it has, the priors anchor the channel split against multicollinearity. It runs weekly on schedule and is exactly reproducible. Bayesian PyMC fits a simpler structure by MCMC sampling: no seasonality terms, adstock decay fixed at 0.3, and channel priors not used. It samples full posteriors but stores only their means, runs much slower, and is not bit-reproducible. It is not part of the hosted scheduled run — it is an opt-in for local and development runs. v_mmm_method_comparison pivots the latest run of each method into one row per channel, and the app shows the comparison only once a PyMC run exists, so a hosted account normally doesn't see it.

Why it matters

Every MMM answer is a model artifact, and channels with correlated spend histories are where models quietly go wrong. Two methods with different failure modes disagreeing on a channel is the model telling you its answer there is soft — information a single method cannot give you about itself. Where only the default method has run, that check is not available and the single fit's R² is the main guide.

Common mistakes

  • Picking the method whose number you prefer. The comparison is a consistency check; where the methods disagree the honest conclusion is uncertainty, not a choice.
  • Reading a stale PyMC column against a fresh ridge run. The view serves each method's latest run; if their fit windows differ, part of any gap is just data vintage.
  • Expecting decimal agreement. Different estimators on noisy data agreeing within 10–20% is agreement.

Where you see this in the app

Marketing → MMM, in the ridge-vs-PyMC comparison table — shown only when a PyMC run exists for the organization.