Media Mix Modeling (MMM)

By the end of this article, you should be able to: explain what an MMM does, why adstock and saturation are non-negotiable, why it's usually Bayesian and hierarchical, and how experiments keep it honest.

Step 1: Meet the problem

A game publisher spends across TV, paid social, video, and search, and wants to know: how much of last quarter's sales did each channel actually drive, and where should the next dollar go? Post-privacy-changes, user-level ad tracking is unreliable, so per-click attribution over-credits and can't be trusted.

So you step back to the aggregate: weekly sales and weekly spend per channel, across markets. A media mix model regresses sales on channel spend to estimate each channel's contribution and its return. But two features of advertising make a plain regression wrong, and fixing them is most of the job.

Step 2: Advertising has memory (adstock)

Money spent this week keeps working next week. A TV burst drives sales for several weeks as awareness decays. So raw weekly spend is the wrong input, you need adstock: transform spend into a carried-over version that decays over time.

adstockt=xt+λadstockt1\text{adstock}_t = x_t + \lambda \cdot \text{adstock}_{t-1}

Here xtx_t is this week's spend and λ\lambda (between 0 and 1) is the carryover rate. A λ\lambda of 0.5 means half of last week's effect persists. Use raw spend instead and you'd mis-time the effect and underestimate channels with long tails (like TV).