Back to Hanya

Guide May 2026 8 min read

How marketing mix modelling really works

Marketing mix modelling gets talked about like a black box. It isn't one. Here's the whole method, worked through one deliberately small example, until you can see exactly how a model separates what your marketing drove from what would have happened anyway.

Part One · Why one number lies
Step 01

Start with the simplest version of ROI

You spent £3 on marketing. You made £6. So your ROI is 2x. That's the number that ends up in the board deck, and it's the way nearly everyone does it: one spend, one sales figure, one moment in time. Hold onto that £3 / £6 week. We'll come back to it and show you what it really earned.

Week 4 · Naive ROI
2x
Return on investment

Two numbers and the ratio between them. A snapshot, nothing more.

Step 02

Now add time

That snapshot was a single week. Real campaigns run for months, and spend isn't the same from week to week. Neither are sales. Plot ten weeks side by side and you get two lines moving together. Our £3 / £6 week is now just one point among them.

Weekly spend & sales · 10 weeks
Spend Sales
Weekly marketing spend and sales across ten weeks Two lines over ten weeks. Spend moves between £2 and £10 a week; sales between £6 and £12. The two rise and fall together. Higher-spend weeks have higher sales. Week 4, highlighted, is the £3 spend, £6 sales week. £15 £10 £5 £0 W4 · £3 → £6 W1 W5 W10

Every week has its own ROI. One week looks like a triumph at 3x, the next barely scrapes 1.1x. So which one is "the truth"?

Step 03

The instinct: take the average

Each week gives a different ROI: 3x, then 1.5x, 1.8x, our 2x from week 4, down to a thin 1.1x. So you do the obvious thing and average them. Ten weeks, 1.69x. It feels more rigorous than one number. It isn't. It's just wrong with more decimal places.

Weekly ROI · ten observations
Return on investment for each of the ten weeks Ten bars, one per week, showing weekly ROI from a low of about 1.1x up to 3x. A dashed line marks the ten-week average of 1.69x. Week 4 is the 2x bar. 3x 2x 1x 0 avg 1.69x W1W2 W3 W4 W5W6 W7W8 W9W10 our 2x week

The dashed line is the average across all ten weeks. Looks like the answer. It isn't.

Step 04

The line of best fit tells a different story

Now plot every week as a dot: spend across, sales up. They scatter; no week sits perfectly on a line. Draw the line that fits the cloud best and two things fall out. It crosses the y-axis at £3. Its slope is 1. That intercept is the bit almost everyone misses: the baseline, the sales you'd have made spending nothing.

Spend vs sales · ten weeks · scatter
Weekly observation Line of best fit Baseline (£3)
Spend versus sales, with the line of best fit Each week is a dot, spend on the horizontal axis, sales on the vertical. The dots scatter around a straight best-fit line that crosses the vertical axis at £3 (the baseline) and rises with a slope of one. A fainter line drawn from zero, the 1.69x average-ROI line, ignores that baseline. Week 4, the £3 to £6 week, is highlighted. £15 £12 £9 £6 £3 £0 £0 £3 £6 £9 £12 Spend per week Sales per week BASELINE £3 Average-ROI line · 1.69x drawn from zero, assumes no baseline Week 4 · £3 → £6 slope = 1 each extra £1 → £1 of sales

The solid line is the real relationship. Where it meets the y-axis is the baseline: sales the marketing did not cause. That faint line from zero is the assumption buried inside "average ROI": that the baseline is nothing.

Step 05

Back to our £3 / £6 week

Here's the payoff I promised you. Take that famous week, £3 in and £6 out, and split the £6 with the line. £3 of it is baseline: it was coming with or without the ad. The other £3 came from the spend, at a slope of 1. So the real return that week wasn't 2x. It was £3 back on £3 spent: 1x. The marketing washed its face. It didn't double anything.

The £6, decomposed
2x  →  1x
Naive read · true incremental return

Same week. Same £6. Half of it was never the marketing's to claim.

Now run that across all ten weeks. £88 of sales. £30 of it baseline: £3 a week, ten weeks. Strip that out and the marketing drove £58, on £58 of spend. The real return isn't 1.69x. It's 1x. Break-even. Same campaign, same data, a completely different story depending on where you draw the baseline.

What averaging the weeks says
1.69x
Mean of the weekly ratios. Looks like growth.
What the model says
1.0x
£30 was baseline. Credit the marketing only with the £58 it added.

"We get 1.7x on social" and "social barely breaks even once you strip the baseline" describe the exact same campaign. They lead to completely different growth decisions.

Part Two
What the model builds underneath
Step 06

Why variance in spend is what makes this possible

That line we drew through the dots only worked because the dots were spread out. Spend the same £5 every week and you only ever get one point on the chart. You can't fit a line to a single dot. Because real spend jumps around (£2, £4, £8, £10), the model gets to watch sales respond at every level. That movement is the raw material; it's what lets the model learn the shape of the relationship instead of one flat ratio.

Spend held constant
Sales when spend is held constant All observations sit at one spend level of £5, scattered only vertically. No relationship line can be drawn through a single spend value. £5 every week No line possible.
Spend varies
Sales when spend varies Observations spread across spend levels from £2 to £10, rising together, so a clear upward line can be fitted. Spend ranges £2 – £10

Variance is the raw material. No variance, no model.

Step 07

Saturation: the line is really a curve

The straight line in Step 4 was a teaching simplification. Push spend wider and it bends. The tenth pound never works as hard as the first; every channel has a ceiling and you want to know where yours sits. Give the model enough weeks across enough spend levels and it fits the curve. That curve is what tells you when a channel is tapped out, and where you've still got room to push.

Saturation curve · diminishing returns
Saturation curve: diminishing returns on spend Sales rise steeply with the first pounds of spend then flatten as spend increases, curving below the straight-line approximation. The first pound works hard; the tenth barely lifts sales. £15 £12 £9 £6 £3 £0 £3 £6 £9 £12 Spend per week the straight-line approximation First £1 works hard Tenth £1 barely lifts sales

This curve is the whole reason you can reallocate with any confidence. Flattening near the top? That's your signal to move budget somewhere it'll still work.

Step 08

Adstock: spend now, sales later

Run an ad this week and it keeps working next week, and the week after. The time series shows it plainly: a spend pulse in week 3 is still lifting sales in weeks 4 and 5, fading as people forget. One ROI number can't see any of that. A model across ten weeks can.

Adstock · lagged effect of one spend pulse
Spend Sales lift
Adstock: the lagged effect of a single spend pulse One spend pulse in week 3. Sales lift in week 3 and keep lifting in weeks 4 through 7, each week's lift smaller than the last as the effect decays. W1W2 W3W4 W5W6 W7W8 Spend Effect decays over weeks

Time-series variance gives you two things at once: the shape of the response (saturation) and the timing of the response (adstock).

Step 09

Now add the other channels

In the real world social isn't running on its own. TV, out of home, YouTube, podcast: each has its own weekly spend line, and they're all pushing the same sales line at once. The model fits them together and works out how much of that line each one can honestly claim.

Five spend lines · one sales line
Sales Social TV OOH Podcast YouTube
One sales line against five channel spend lines A thick sales line over ten weeks sits above five thinner, differently dashed spend lines for Social, TV, OOH, Podcast and YouTube. Each channel has its own weekly pattern; the model attributes the single sales line across them. The figures here are illustrative. Sales Social TV OOH Podcast YouTube W1 W10
Series shown in the chart above (values illustrative)
SeriesRoleLine style
SalesThe single outcome line the model explainsThick solid
SocialChannel spendSolid
TVChannel spendLong dash
OOHChannel spendShort dash
PodcastChannel spendDash-dot
YouTubeChannel spendDotted

One sales line. A dozen plausible stories about what caused it. The model finds the combination that fits the history best.

Step 10

Baseline and external factors

Some sales happen with no marketing at all; that's the baseline again. Sales also move on price, promotions, distribution, weather, the time of year, what competitors are up to. Leave those out and the model quietly credits their effect to whatever channel happened to be moving at the same time. So they go in too.

Drivers of sales · what's in the model
Baseline plus marketing plus external factors equals sales A diagram: a Baseline box, plus a Marketing box covering all channels with curves and lag, plus an External box covering price, weather and seasonality, sum to observed Sales. BASELINE would happen anyway MARKETING all channels, with curves & lag EXTERNAL price, weather, seasonality = SALES observed + + Leave anything out and the rest absorbs the missing variance.

Marketing only gets credit for what it really moved. The rest goes where it belongs.

Step 11

The final picture

Put it together and you get your sales, week by week, split into baseline plus every channel plus the outside stuff. For each channel, two things: how it responds as you spend more, and how long each burst keeps working. That's the deliverable, and it's the thing a single ROI number or an attribution dashboard simply can't give you.

Decomposition · sales explained
Observed sales decomposed into baseline and each channel A stacked-area chart over ten weeks. From the bottom: baseline, then TV, Social, OOH, Podcast and seasonality stacked on top, together adding up to the observed sales line on top. Each band is that driver's modelled contribution. Heights are illustrative. W1 W10 Baseline TV Social OOH Podcast Season Sales
How the sales line is decomposed, bottom to top (heights illustrative)
LayerWhat it represents
BaselineSales that would happen with no marketing
TVTV's modelled contribution
SocialSocial's modelled contribution
OOHOut-of-home's modelled contribution
PodcastPodcast's modelled contribution
SeasonalityExternal factors: price, weather, season
TotalThe six layers sum to the observed sales line

Every pound of sales is accounted for, every channel credited for what it really did. That's what you get.