Marketing, Advertising & AdTech// diagnostic

The model hands a channel a negative coefficient nobody believes

In short

A channel with a negative coefficient almost never means the advertising destroyed sales. It usually means the spend history cannot separate that channel from the others: 2 channels correlated at 0.9 inflate each other's standard errors by roughly 2.3 times, and a budget held flat all year gives the model nothing to estimate from.

Key takeaways

  • Run the identification checks before the modelling argument: pairwise correlations, variance inflation, and a spend plot per channel.
  • Correlation of 0.9 between 2 channels inflates each standard error by about 2.3 times; 0.95 inflates it by about 3.2.
  • A channel whose weekly spend varies by under 10% is being asked to extrapolate to zero from a wiggle.
  • If the posterior looks like the prior, the model reported your assumption back to you and no data was involved.
  • Only accept a negative result when identification is sound, the sign survives refits, and an experiment agrees.

The model runs, the contribution chart appears, and one channel has a negative coefficient. Everybody in the room knows the channel is not destroying sales. What has almost certainly happened is that the spend history cannot tell that channel apart from the rest of the plan, and the estimator has resolved the ambiguity in a direction nobody would have chosen.

This is a data-design problem wearing a modelling costume, and it is diagnosable in an afternoon. The question to answer first is not whether the channel works. It is whether this dataset could ever have said so.

The confirming check: what the spend history can and cannot separate

Two artefacts, both produced from the media columns alone, settle most of these arguments before any model is refitted.

  1. Build the pairwise correlation matrix of weekly spend across every channel in the model. Anything above 0.9 is a pair the model is being asked to separate on almost no independent information.
  2. Compute variance inflation per channel by regressing each channel's spend on all the others. The inflation factor is 1 divided by 1 minus that regression's r-squared, and the standard error grows with its square root: an r-squared of 0.81 means an inflation factor of about 5.3 and standard errors about 2.3 times larger than they would be under independent spend.
  3. Compute each channel's coefficient of variation: weekly spend standard deviation over mean spend. Below roughly 10%, the model is extrapolating the effect of switching a channel off from a series that never came close to off.
  4. Plot each channel's weekly spend across the whole modelling period on one page. Co-flighted bursts, budgets that move in lockstep and channels with no dark weeks are visible in seconds and invisible in a summary table.
  5. Plot the residuals against the promotional calendar, price changes and distribution. Structure there means the model is missing a driver, and a media channel is currently absorbing it.

Five reasons the number is wrong before the model is

CauseWhat the check showsWhat to do about it
Channels that always move togetherPairwise correlation above 0.9, inflation factors above 5Model them as 1 group, or deliberately stagger next year's budgets so they can be separated later
Almost no spend variationCoefficient of variation under 10%, no dark weeks, no burstsCreate variation with a planned pulse, or hold the channel out of the model and treat it as a fixed cost
An omitted driverResiduals track promotions, price, distribution or stock-outsAdd the control column. A media channel correlated with promotions will otherwise carry their sign
Priors doing the workThe posterior sits on top of the prior; widening the prior moves the answerReport it as an assumption, not a finding, and go and get evidence to justify the prior
The channel really is not incrementalIdentification is sound, the sign survives refits, an experiment agreesBelieve it and reallocate. This is the one branch that licenses a budget cut
What each check shows, and what it means

Two of these deserve expanding because they are so often mislabelled as modelling faults. The first is branded search, which correlates with everything that creates demand and will happily absorb credit until other channels look weak or negative — the check that separates demand it captured from demand it created is set out in when branded search absorbs credit for everything. The second is the outcome column itself: if the most recent weeks are still filling in, the model sees spend with the sales attached to it missing, which mechanically pushes recent-heavy channels negative. That maturation effect is explained in how conversion lag bends a weekly read, and the fix is to hold back the immature weeks rather than to argue with the coefficient.

Telling a prior from a finding, and proving the model can recover anything

A Bayesian model with tight priors always produces a plausible-looking answer, which is exactly the problem: when the data is uninformative, the posterior is the prior with extra steps. Two tests separate the cases, and both are worth automating so they run on every fit.

  1. Overlay prior and posterior for every media parameter. Substantial overlap means the data moved nothing, and the contribution being reported is an assumption you wrote earlier.
  2. Refit with deliberately wide priors. If the estimate collapses or flips, the earlier result was the prior holding it in place.
  3. Run a recovery test on synthetic data. Take the real spend history, generate sales from a known set of coefficients, add realistic noise, and refit. If the model cannot recover coefficients you planted, it cannot recover the real ones either.
  4. Refit on subsamples: first half, second half, and a leave-one-quarter-out sweep. A stable channel keeps its sign; an unidentified one changes sign between windows.
  5. Backtest on a held-out period. Compare predicted against actual sales for weeks the model never saw, and check that the error is not concentrated in the weeks the suspect channel was heaviest.

The recovery test is the one most teams skip and the one that ends the debate fastest, because it separates a model that cannot see from a channel that does not work using no assumptions about the real world at all. Running that suite on a schedule, with a human reading the output rather than a threshold auto-approving it, is the sort of guarded automation described under AI agents and automation.

A model that never returns an unbelievable number is not well specified. It is constrained until it cannot disagree with you.

What the negative number is already doing to the contribution chart

The coefficient rarely reaches the client deck untouched. Negative contributions are clipped to zero, or the channel is dropped and refitted, or contributions are rescaled so they sum to actual sales. Every one of those steps moves the missing credit somewhere else — usually into the baseline, which then reads as demand that would have arrived anyway.

That matters because the baseline is what budget arguments are made against. A model reporting a 4-point-larger base because one channel was clipped is quietly recommending less media in total, and nobody in the meeting knows the recommendation came from a clipping rule. If clipping is applied, say so on the chart, and keep the unclipped version beside it. Where those refits and grids are expensive to run, precompute and store them rather than recomputing on every view, for the same reason a client dashboard stops opening quickly once every panel runs its own query.

Four endings, and the evidence each one requires

EstablishedEndingWhat it requires
Collinear pair, both channels matter to the planConstrain with external evidenceA prior taken from an experiment, documented, with the contribution reported as a range
Not identified, and the budget at stake justifies a testGo and measure itA geo or audience holdout, powered for the effect size that would change the decision
Not identified, and no test is affordableRe-scope the modelAggregate the collinear channels, or model at a coarser level and say what the model no longer answers
Identification sound, sign stable, experiment agreesAccept the resultA refit history and a recovery test in the appendix, so the finding survives the next analyst
Where the diagnosis lands, and what it costs to get there

The experiment branch is the strongest and the one most often ruled out too early. A holdout does not need a national footprint to constrain a model; it needs matched units, and when there are too few markets to pair there is still a synthetic-control route, worked through in pairing markets for a holdout in a small footprint.

One thing not to do: apply a non-negativity constraint because the sign is embarrassing. Forcing every media coefficient positive guarantees the chart looks sensible and destroys the only signal that the data was inadequate. If a modelling vendor's output never contains an implausible number, ask to see the identification diagnostics rather than admiring the fit — the kind of question worth asking of any technical partner, as set out in choosing an AI development partner. This work sits inside the attribution, incrementality and mix practice we run for marketing and advertising teams.

Frequently asked questions

Short answers to the follow-ups this page tends to raise.

Does a negative coefficient mean the channel is hurting sales?

Almost never. In practice it means the model could not separate that channel's effect from everything else moving at the same time, and the estimate landed on the wrong side of zero with a wide interval around it. Check the spend correlations and each channel's variation first; only when identification is sound, the sign survives refits on subsamples, and an experiment points the same way is the result about the channel.

How do I check for collinearity between marketing channels?

Build the pairwise correlation matrix of weekly spend and compute a variance inflation factor for each channel by regressing it on all the others. An inflation factor of 5 corresponds to an r-squared of 0.8 between that channel and the rest, and inflates its standard error by about 2.3 times; 10 corresponds to 0.9 and roughly triples it. Plotting the spend series together usually shows the cause faster than either number.

Can priors fix an unidentified channel in a Bayesian mix model?

They can stabilise the estimate, but only honestly if the prior comes from evidence outside the dataset, such as a completed incrementality test. A tight prior chosen because it produces a believable chart converts an assumption into an output, and the readout will be quoted as a measurement. Compare prior and posterior on every media parameter, and label any result where they overlap heavily as an assumption.

Should a channel with an implausible coefficient be dropped from the model?

Only after the diagnosis, and rarely as the first move. Dropping a channel does not delete its spend from history; it pushes that channel's effect into whatever it correlates with, usually the baseline or the nearest co-flighted channel. Aggregating collinear channels into a single group is more defensible, because it states plainly which question the model has stopped answering.

  • mix modelling
  • diagnostics
  • measurement
  • statistics
// shipped work

The work behind this page

Builds from our portfolio that this page draws on.

Read next

Working on something in this space?

Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.

Start the conversation