PyMC-Marketing isn't a fixed model the way Robyn and Meridian are — it's a kit you assemble: which decay curve, which saturation curve, which priors, how hard to sample. That flexibility is the point (and the tradeoff): if you don't have a specific reason to want that control, Robyn or Meridian will get you a result with far fewer decisions to make.
Connecting it
Drag a PyMC node off Period (or directly off Variables). The modal has two modes:
- Guided — a form with the fields below. Recompiles into the model spec every time you save, so it's never out of sync with what you see.
- Advanced — a raw JSON editor for the same spec, for when a setting you need isn't exposed as a guided field. meryn validates it before saving, so a malformed spec is rejected with an error rather than accepted and failing later during training.

Adstock (carryover)
| Field | Default | What it controls |
|---|---|---|
| Adstock kind | Geometric | The shape of how a channel's effect decays after spend stops. Geometric is a single-parameter exponential decay — the same family Robyn uses, and a reasonable default. Other options: Delayed (effect peaks after a lag rather than immediately), Weibull (PDF) (a peak-then-decay shape with more parameters to fit), Binomial (a flexible decay), or None (no carryover — same-period effect only). |
| Max lag | 8 (range 1–52) | The longest carryover window considered, in your data's time units. |
Saturation (diminishing returns)
| Field | Default | What it controls |
|---|---|---|
| Saturation kind | Logistic | The shape of how a channel's effect flattens out as spend increases. Other options: Hill / Hill (sigmoid), Michaelis-Menten, Tanh / Tanh (baselined), Inverse scaled logistic, or None. If you're not choosing this for a specific reason, Logistic is the safest default. |
| Multiplicative (log-log) | Off (additive) | Whether channel effects add up (the default) or multiply. Turning it on doesn't restrict what you pick for Saturation — meryn resolves it when compiling the spec, replacing the chosen saturation with the log form the multiplicative model requires. |
Seasonality and time-varying effects
| Field | Default | What it controls |
|---|---|---|
| Yearly seasonality | 2 (0–10 Fourier modes) | How much flexibility the model has to fit a recurring yearly pattern. Set to 0 to disable seasonality entirely. |
| Time-varying intercept | Off | Lets the baseline level drift smoothly over time instead of staying fixed. Meaningfully increases training time. |
| Time-varying media | Off | Lets each channel's coefficient drift over time instead of staying fixed for the whole period. Also increases training time. |
Leave both time-varying options off unless you have a specific reason to believe the effect actually changed shape mid-period (a big pricing change, a channel mix shift) — they're the most expensive knobs in this modal.
Priors
| Option | What it means |
|---|---|
| Informed by spend share (default, recommended) | Sets each channel's starting belief in proportion to its share of total spend — a sensible, data-driven default with no manual input needed. |
| PyMC defaults | PyMC-Marketing's own out-of-the-box priors, with no adjustment for your data. |
There's no custom option in the guided form — to encode specific prior beliefs, edit the spec directly in Advanced mode.
Effort
One selector sets how deeply the sampler runs — there's no custom level and no sampler choice:
| Level | Draws / Tune / Chains | Target accept | When to use it |
|---|---|---|---|
| Low — a first look | 500 / 500 / 2 | 0.90 | Fast iteration while you're still deciding on the model structure — expect noisier convergence diagnostics. |
| Medium (recommended) | 1000 / 1000 / 4 | 0.90 | The default balance of speed and reliability for most models. |
| High — slower, tighter estimates | 4000 / 4000 / 4 | 0.95 | A final run once you're happy with the structure and want the most reliable result. |
Holdout validation
| Field | Default | What it controls |
|---|---|---|
| Hold out the last 20% | Off | Scores the model on the final 20% of the date range, which it didn't train on. It's a checkbox — the fraction is fixed at 20%. The holdout is the last contiguous block of dates, the same approach as Robyn, unlike Meridian's scattered holdout. |
Calibration (optional)
Same lift-test editor as Robyn and Meridian: add a channel, a date range, tested spend, the measured lift, a Confidence (0–1) that sets how much weight the test carries, and a Scope, and meryn validates the row against your actual spend data live. All three engines share the mechanism — what differs is what each does with the rows (Meridian, for instance, turns them into ROI priors). Two things are specific to PyMC: it only calibrates paid channels (organic and contextual columns enter as covariates, not as something with a saturation curve to calibrate), and each lift-test row covers exactly one channel rather than letting you sum several into one test.
Reading convergence
PyMC results include a three-level convergence verdict — converged, partial, or not converged — based on standard Bayesian MCMC diagnostics: r-hat, effective sample size, and divergences. This is the one place across the three engines where meryn applies its own threshold rather than reading a verdict the framework provides directly (Meridian ships its own built-in reviewer; Robyn has its own verdict, derived from the two objectives its optimizer minimizes). Treat anything short of "converged" as a reason to sample more — try High effort — before trusting the model's numbers.
By-market data
PyMC supports by-market projects: with a market dimension mapped, it fits a hierarchical model with partial pooling — each market gets its own parameters, informed by what the others show — and its allocator can move budget between markets, not just between channels. The only engine limited to nationally aggregated data is Robyn.
What connects here
Upstream: Period or Variables. Downstream: Budget allocator or Benchmark.
What you get back
Fit quality, contributions, response curves and ROI on the results page, plus the on-screen Export PPT that all three engines share. There's no downloadable report here the way Robyn and Meridian have one: meryn only exposes report files the framework itself generates, and pymc-marketing doesn't produce an equivalent.