MMMM Studio
  1. 01 Map
  2. 02 Check
  3. 03 Expect
  4. 04 Fit
  5. 05 Test
  6. 06 Plan

Step two · before any modelling

Can this data answer the question at all?

A fit takes minutes and hands back confident-looking numbers whether or not the design could ever have identified them. So we ask whether it could first, and it costs a second. Nothing here has been modelled — this is arithmetic on your file.

The verdict

Caution

The model will run and most of your channels will come back with numbers you can use. The ones named below will not, and they carry that mark through every screen after this one.

2 channels cannot be measured from this data at all — Retail Media and Affiliate. The rest are fine, and everything else on this page is about how wide those answers will be.

How this verdict is decided

NO-GOsomething is broken that isn't about one named channel — or every channel is blocked
CAUTIONone or two named channels are blocked, and the rest are fine
GOnothing blocked — cautions on named channels travel with those channels instead

There is no score to improve and no percentage to argue with. A caution about one channel never demotes the whole dataset, because it has somewhere better to live: that channel’s own row, and its trust grade after the fit.

Set my expectations →

Takes about two minutes, and it is the step that catches impossible assumptions before they become results.

Five questions we ask of every dataset

History
Is there enough data to work out this many things at once?

156 rows · 4.9× headroom

32 things to estimate

Separability
Can the channels be told apart from each other, and from ordinary demand?

2 channels flagged

Two channels move closely together and Retail Media

Variation
Does each channel's spend move enough for its effect to be visible?

3 channels flagged

Affiliate, TV — Broadcast and Retail Media

Demand control
Is there a column for the demand that prompted the spend? Whether it is a good one can't be established from this data — only that it is there.

Present

a demand control is mapped

Sales series
Is the sales line itself clean enough to model?

No extreme weeks

nothing the outlier check flagged

Five things to know, each with what to do about it

BlockingSevere variance inflation34 measured · 10 threshold

Retail Media has VIF 34.0 after transformation; it is nearly a linear combination of the other regressors.

What to do: Usually the same cause as near-duplicate channels: this one is reconstructable from the others. Combine it with whichever channel it shadows, or drop a control that is standing in for it. A channel that launched partway through the window hits this too, because the baseline absorbs the period it was dark.

BlockingAffiliate spend barely varies0.012 measured · 0.05 threshold

Coefficient of variation 0.012. Without variation there is nothing for the model to correlate with the KPI; its ROI will be driven entirely by the prior.

What to do: Nothing can be recovered from a flat budget — the model needs the spend to move to see what moves with it. Either vary the budget deliberately for a quarter, or accept that this channel’s number is your assumption reflected back.

Worth watchingTwo channels move closely together0.817 measured · 0.80 threshold

Paid Social and Paid Search correlate at r=0.82; their individual ROIs will trade off.

What to do: Vary their budgets independently for a quarter if you can. Until then, trust the pair’s combined return more than either individual number.

Worth watchingTV — Broadcast is off air most weeks0.596 measured · 0.50 threshold

It runs in 40% of weeks, in bursts rather than at the start or end of the window. The effect is identified from the handful of on/off transitions rather than from the whole period, so its interval comes back wide even when the fit itself is sound.

What to do: Nothing to fix in the data — this is a media plan, not a defect. Expect a wide range on this channel and weight it accordingly; a lift test on a single burst would pin it faster than more history would.

Worth watchingRetail Media ran for only part of the window0.372 measured · 0.50 threshold

It was live across 37% of the period covered by this upload. Its return is estimated from that stretch alone, so it rests on far less evidence than the share of spend suggests.

What to do: Nothing to fix in the data — this is what the buy looked like. Treat the channel's return as provisional until it has a full year, and be especially wary of scaling its budget on this fit.

What we will do about it

Findings change the model, not your numbers. We never impute, winsorise or drop a row — every entry here alters how the fit is estimated, and states what that costs you.

  • Some channels held at their current budget

    Will applytriggered by vif
    Retail MediaAffiliate

    These channels' spend does not vary enough, did not run for enough of the window, or moves too closely with the rest of the model for the data to say what they returned. Their numbers come mostly from the starting assumption. They stay in the model, so they do not distort the others, but the budget planner will not move them.

    What it costs you

    You will get no recommendation for these channels — deliberately. A plan that reallocated budget on the strength of an assumption would look exactly like one built on evidence.

How much each channel's spend moves about

Ups and downs are what let the model see what a channel does. Spend the same amount every week and there is nothing to learn from — the return comes back as whatever we assumed going in, however large the budget.

ChannelSpend shareVariationOverlap costWeeks with nothing spent
TV — Broadcast33.3%1.381.160% of weeks had no spend
Paid Social23.0%0.343.8spent every week
Paid Search19.8%0.446.8spent every week
Programmatic Display12.8%0.323.2spent every week
Affiliate6.9%0.012.4spent every week
Retail Media4.3%1.4434.063% of weeks had no spend

How closely your channels move together

Read a cell as: when this channel went up, did that one go up too? 1.00 means always, 0.00 means never. Anything above 0.80 and your data cannot tell the two apart. Measured after allowing for advertising that keeps working once it stops running and for the tenth million doing less than the first — checking raw spend instead is the usual reason a tool declares your data fine and then fails to separate anything.

TV — Broadcast1.000.180.210.13-0.08-0.09
Paid Social0.181.000.820.700.15-0.02
Paid Search0.210.821.000.710.160.03
Programmatic Display0.130.700.711.000.36-0.11
Affiliate-0.080.150.160.361.000.11
Retail Media-0.09-0.020.03-0.110.111.00
TV — BroadcastPaid SocialPaid SearchProgrammatic DisplayAffiliateRetail Media
How do I read this?