ScanmarQED Blog

MMM Model Comparison: How Robyn, Meridian, PyMC and OLS-Based Engines Differ

Written by Phil Spencer | Oct 29, 2026, 12:51:29 PM

Robyn, Meridian, PyMC-Marketing and least-squares models all estimate how much each marketing driver contributes to sales, and they get there by different statistical routes. The broadest dividing line is statistical philosophy: PyMC and Meridian are Bayesian, the least-squares engines are frequentist, and Robyn combines ridge regression with an evolutionary search. That split tends to shape how fast a model runs, how business beliefs enter the model, and whether uncertainty is reported as a full posterior distribution, as standard errors or as an ensemble of candidate models. The engines also differ in how they set carryover and saturation, model trend and seasonality, and apply constraints, and each of these is covered below.

This guide compares the six estimation engines available in MMM Labs, ScanmarQED's multi-engine Marketing Mix Modeling platform. Because all six read the same model specification (the same variables, expected signs, transformations and priors), the differences between their results are methodological rather than the product of different inputs. That makes a fair comparison possible.

A Marketing Mix Modeling (MMM) engine is the estimation method that turns a model specification into fitted coefficients, channel contributions and ROI. Choosing an engine is choosing a set of statistical assumptions, so it pays to know what each one assumes.

What are the six MMM engines in MMM Labs?

MMM Labs runs three engines built by ScanmarQED and three open-source engines, all from a single model configuration.

How do MMM engines set adstock and saturation?

An important difference between MMM engines is how they set transformation parameters: the adstock decay rates, saturation points and curve slopes that describe how media works over time. Every parameter in an MMM Labs configuration carries a plausible range. Each engine does something different with that range:

  • Fixed (OLS, Constrained OLS): parameters are set at the center of the configured range. No search, no tuning.
  • Optimized (Adaptive MMM): parameters are tuned together with the coefficients by a gradient-based optimizer, within the configured ranges.
  • Searched (Robyn): an evolutionary optimizer generates and scores thousands of candidate models and keeps the best trade-offs.
  • Estimated (PyMC, Meridian): parameters receive full posterior distributions through Bayesian sampling.

In practice, OLS and Constrained OLS answer the question "given these transformation settings, what are the best coefficients?" Adaptive MMM, PyMC, Meridian and Robyn also answer "what should the transformation settings be?" Your configured ranges act as the guardrails in every case.

How do OLS, Constrained OLS and Adaptive MMM work?

The three ScanmarQED engines are least-squares methods. They share fast runtimes and familiar regression diagnostics, and differ in how much structure they impose.

OLS is a diagnostic first look. Nothing is constrained and no business beliefs are applied, so the fit shows what the data says about a specification before anyone imposes assumptions on it. A wrong-signed coefficient stays visible as evidence about the data instead of being pushed back into range. That makes OLS useful as a reference point. It does not make it the most trustworthy model: on collinear media data, an unconstrained fit is usually less reliable than one that imposes structure.

Constrained OLS keeps the fixed-transformation design and builds your beliefs into estimation. A positive sign expectation becomes a hard floor at zero, and prior ranges become hard bounds. ROI or contribution-share beliefs enter as soft penalties, weighted by how confident you are and scaled to the data's own error, so a business prior bends the solution rather than overwhelming it.

Adaptive MMM treats carryover and saturation settings as unknowns. It tunes them jointly with the coefficients inside your configured ranges, which makes it the closest thing in the platform to "let the data choose the adstock and the curve." A small ridge penalty keeps correlated media channels from trading large offsetting coefficients, and the optimizer runs from multiple starting points to avoid settling on a poor local solution. A contribution guardrail stops any single variable from absorbing the entire baseline. It remains a least-squares method with standard diagnostics.

How does PyMC-Marketing work for MMM?

PyMC-Marketing is a fully Bayesian MMM package. Every configured prior, on coefficients and on transformation parameters, becomes a genuine Bayesian prior, and every reported quantity comes with a posterior distribution. Uncertainty intervals on contributions, ROI and response curves are first-class outputs rather than approximations.

PyMC stands out in three areas:

  • Multi-market modeling: true hierarchical partial pooling, where each market's media effect is drawn from a shared distribution and markets that do differ keep their differences.
  • Experiment calibration: lift-test results enter the model directly as evidence (supported for national models).
  • Seasonality: built-in yearly seasonality using Fourier terms. PyMC has no time-varying trend mechanism, so long-run drift needs an engineered trend variable.

How does Google Meridian differ from other MMM engines?

Meridian is Google's open-source Bayesian MMM, built for geo-level modeling. In MMM Labs it consumes the same configuration as every other engine, with several genuine methodological differences:

  • Saturation before carryover. Meridian applies the saturation curve first and adstock second, the reverse of the other five engines.
  • Its own priors for transformation parameters. Adstock decay, half-saturation and slope use Meridian's native prior families.
  • ROI or contribution priors, one type for all paid media. Paid-media effects are parameterized through business-meaningful priors rather than raw coefficients, but all paid channels must use the same prior type.
  • A time-varying baseline. Instead of fixed trend and seasonality variables, Meridian estimates a smooth baseline through time that absorbs both. Its "base" is therefore not directly comparable to the base of an engine with explicit seasonal terms.
  • Geo hierarchy by design. In multi-market models, every effect is market-specific and shrunk toward a population-level estimate, which lets sparse markets borrow strength from the rest.

How does Meta Robyn work?

Robyn is Meta's open-source MMM framework. It combines ridge regression with a large-scale evolutionary search over adstock and saturation settings. Rather than returning one model, Robyn evaluates thousands of candidates and returns a Pareto front: the set of models where no alternative is better on both prediction error and decomposition plausibility (how closely each channel's contribution share tracks its spend share). Adding lift-test calibration introduces a third objective.

Three practical points shape how Robyn behaves:

  • Sign constraints, not numeric bounds. A variable can be restricted to positive, negative or unconstrained, but a coefficient cannot be held inside a specific interval.
  • Prophet trend and seasonality. Meta's Prophet decomposes the sales series first, and the trend and yearly-season components enter the regression as variables.
  • National models only. Robyn is built for national-level data and does not support panel or market-level modeling. Use PyMC or Meridian for those. MMM Labs surfaces the auto-selected candidate, keeps the full Pareto front, and refits the chosen model over the full modeling window so Robyn's results cover the same period as every other engine.

How do the six MMM engines compare side by side?

 

Why do MMM engines give different results on the same data?

MMM engines give different results on identical data because they make different methodological choices, not because one of them is broken. The main sources of divergence are:

  • How transformation settings are chosen: fixed, optimized, searched or estimated.
  • How constraints are honored: hard bounds, priors, sign restrictions, or not at all.
  • How carryover is scaled: the Bayesian engines redistribute a period's effect over time without changing its total, while the least-squares engines and Robyn let carryover accumulate and the coefficient absorbs the difference.
  • How the baseline is built: engineered variables, Fourier terms, a time-varying spline or Prophet components.
  • Pipeline order: Meridian saturates before adstock; the other five do the reverse.

Contributions and ROI stay directly comparable across engines, because each engine applies its own conventions consistently. Baselines need more care, especially when comparing Meridian with engines that use explicit seasonal terms.

All six engines also follow the same validation discipline. Each fits once on a training window to produce honest out-of-sample error on a holdout period, then refits on the full window to produce the reported coefficients. The holdout tells you how well the specification generalizes; the full-window fit gives the most precise estimates.

This is where comparing engines earns its keep. When independent methods converge on the same channel ROI, you have evidence rather than output. When they diverge, the disagreement points to the specific assumption worth testing before the result reaches a budget decision.

Which MMM engine should you use?

The right engine depends on the question you need answered and the data you have.

  • Use OLS when you want a fast, unconstrained read of what the data says before any beliefs are applied.
  • Use Constrained OLS when you hold firm sign expectations or ROI beliefs and need results in seconds.
  • Use Adaptive MMM when you are unsure of the right adstock and saturation settings but want least-squares speed, hard bounds and familiar diagnostics.
  • Use PyMC when you need uncertainty intervals on every output, hierarchical multi-market models, or lift-test calibration.
  • Use Meridian when you model at geo level and want ROI priors as the native language of the model.
  • Use Robyn when you work with national data and want an ensemble of candidate models to choose from.

No engine is the right choice for every brand or every question. That is why MMM Labs does not ask you to commit to one upfront: you can specify the model once, run it through several engines, and let the data guide the methodology decision.