# Media Mix Modelling

**URL:** <https://discourse.pymc.io/t/media-mix-modelling/17877>\
**Category:** General\
**Created:** [July 18, 2026, 4:58pm UTC](https://discourse.pymc.io/t/media-mix-modelling/17877 "2026-07-18T16:58:39Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![nitasce](https://avatars.discourse-cdn.com/v4/letter/n/a87d85/32.png) [@nitasce](https://discourse.pymc.io/u/nitasce)\
**Post date:** [July 18, 2026, 4:58pm UTC](https://discourse.pymc.io/t/media-mix-modelling/17877/1 "2026-07-18T16:58:39Z")

</div>

Hi folks, i have a few questions about implementing mmm.

1. How do you know which function to choose for saturation curve?

2. How do you know which interaction terms to include in mmm?

---

<div class="post-metadata">

**Author:** ![ricardoV94](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.pymc.io/ricardov94/32/5775_2.png) [@ricardoV94](https://discourse.pymc.io/u/ricardoV94)\
**Post date:** [July 18, 2026, 8:22pm UTC](https://discourse.pymc.io/t/media-mix-modelling/17877/2 "2026-07-18T20:22:21Z")

</div>

Those are very general questions. It may be more helpful if you share what your current thinking into it is.

---

<div class="post-metadata">

**Author:** ![nitasce](https://avatars.discourse-cdn.com/v4/letter/n/a87d85/32.png) [@nitasce](https://discourse.pymc.io/u/nitasce)\
**Post date:** [July 18, 2026, 11:47pm UTC](https://discourse.pymc.io/t/media-mix-modelling/17877/3 "2026-07-18T23:47:47Z")

</div>

So I am starting with a new project of building mmm model. I have following channels - TV, Google, Meta, Bing, Pinterest, Youtube, Email. I want to understand how do I get started with knowing which interaction terms should I include for building model. If I try and test, there will be lot of combinations, so was wondering how to proceed.

---

<div class="post-metadata">

**Author:** ![ricardoV94](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.pymc.io/ricardov94/32/5775_2.png) [@ricardoV94](https://discourse.pymc.io/u/ricardoV94)\
**Post date:** [July 19, 2026, 8:00am UTC](https://discourse.pymc.io/t/media-mix-modelling/17877/4 "2026-07-19T08:00:54Z")

</div>

Reply by Claude

* * *

Since you’re building an MMM, the fastest path is `pymc-marketing`, which has a ready-made MMM class rather than making you wire everything up in raw PyMC. A few docs that answer your questions directly:

- **[MMM Example Notebook](https://www.pymc-marketing.io/en/stable/notebooks/mmm/mmm_example.html)** — end-to-end walkthrough of the whole workflow. Best starting point.
- **[Custom Models with MMM components](https://www.pymc-marketing.io/en/stable/notebooks/mmm/mmm_components.html)** — covers the adstock and saturation transforms and how to swap between them.

On your specific questions:

**Saturation curve** — don’t pick by intuition. Fit a couple of candidates (`LogisticSaturation` is the usual default; `MichaelisMenten` / `HillSaturation` are common alternatives) and compare with posterior predictive checks and LOO/WAIC. Let the data and prior knowledge about diminishing returns decide.

**Interaction terms** — you don’t need the full combinatorial explosion. Standard MMM practice is to start with the additive model (each channel gets its own adstock + saturation, no interactions) and only add an interaction where you have a real business reason to expect one (e.g. TV lifting search response). Testing every combination will overfit and isn’t how MMMs are usually specified.

Start with the example notebook, get a baseline additive model running on your data, then iterate. Happy to help with something more specific once you’ve got that going.
