Statistics

Interference Between Variants: When the Arms Talk

Interference: when treatment affects control, your A/B test measures the wrong difference. The leakage channels, the bias they create, how to reduce it.

Flat illustration of two raised garden beds side by side with plant roots visibly crossing from one bed into the other beneath the dividing gap, in deep green tones

Every A/B test silently assumes that treating one user does not change any other user’s outcome. When that assumption breaks, and it breaks whenever both arms compete for something finite, control stops being a clean baseline: it becomes a group the experiment itself has already harmed. The measured difference now adds the treatment’s gain to the control’s loss, and the result can easily come out at double the real effect. This guide covers the three channels interference travels through, a worked example where a plus 22 percent winner is really a plus 10 percent winner, what eBay measured in a real experiment, and what you can do about it without abandoning experimentation. It is part of our complete guide to A/B testing and pairs with guardrail metrics.

The silent assumption interference breaks

The two-proportion test compares arm A’s rate with arm B’s rate and calls the difference the treatment effect. That is only valid if each user’s outcome depends solely on the arm they landed in, and not on what happened to anyone else. The causal inference literature names this condition SUTVA, the stable unit treatment value assumption.

It is reasonable when you change a button colour. It is false whenever something finite sits in the path.

The dangerous part is that interference leaves no statistical fingerprint. A contaminated experiment produces a small p-value, a tight confidence interval and a green bar on the dashboard, exactly like a clean one. There is no p-value correction that fixes it, because the problem is not in the variance, it is in what control represents. Running longer makes things worse, since more sample only narrows the interval around the biased number.

How interference inflates the measured differenceIn the clean experiment, control sits at the baseline and treatment rises, so the measured difference equals the true effect. In the experiment with interference, treatment rises by the same amount but control falls below the baseline because treatment consumed a finite resource. The measured difference now adds the treatment rise to the control fall, coming out larger than the true effect.Under interference the measured gap adds two thingsbaseclean experimentcontroltreatmenttrue effectwith interferencecontrolcannibalisedtreatmentmeasured gaplarger than the true effectTreatment rose by the same amount in both scenarios. What changed was control, which stopped being a neutral baseline.
Schematic. Under interference, part of what treatment gained was taken from control, so the gap between arms counts that displacement twice.

Three channels the leakage travels through

Channel What it looks like Typical signal
Finite resource Inventory, seats, ad supply, budget, support capacity Per user metric moves, aggregate total does not
Shared infrastructure Cache, queue, connection pool, rate limit, a model trained on both arms Unevenly split A/A test fails
Connections between people Invites, messages, feed, referrals, public content visible to both arms Effect grows with the percentage exposed

The first channel is the best known and the easiest to explain to people outside the data team: if there is a fixed amount of something, what treatment takes extra is what control does not get. The second is the sneakiest, because no user interacts with another user at all. The third is the classic social product case, and it is the only one of the three where the leakage can inflate control rather than depress it, when treatment produces content or invites that control then consumes.

The second channel deserves one more paragraph, because it catches teams who are certain they do not run a marketplace. In his paper on unexpected results in SIGKDD Explorations, Kohavi reports a 90 and 10 percent A/A test that failed consistently. The cause was a bounded resource: a least recently used cache in which control and treatment entries were disjoint. Because the experiment ran at 90 against 10, control had significantly more entries in the cache, which produced a higher cache hit ratio, better performance and therefore better metrics. No user spoke to any other user. The infrastructure leaked on its own.

Worked example: the plus 22 percent winner

A store with limited inventory tests a storefront change. It runs 100,000 users per variant, and the period has 5,400 units available, a real ceiling that does not move during the test. Paste the numbers into the calculator:

Statistical significance calculator
Control (A)
Variation (B)
Control (A) · Rate-
Variation (B) · Rate-
Relative lift-
p-value-
95% CI of the difference-

Two-sided two-proportion z-test. "Not significant" almost always means not enough sample, not that the versions are equal.

Without an inventory ceiling, control would convert at its historical 3.000 percent, or 3,000 orders, and the variant would convert at 3.300 percent, or 3,300 orders. But the shelf cannot carry both: the variant pulls 3,300 units, and what is left for control closes at 2,700 orders instead of 3,000. The 300 orders control lost did not vanish from the world, they went to treatment.

That is what the dashboard showed:

Naive comparison Users Orders Rate
A, control 100,000 2,700 2.700 percent
B, variant 100,000 3,300 3.300 percent

The calculator returns plus 0.600 percentage points, plus 22.22 percent relative, z = 7.865, p-value below 0.00001, with a 95 percent interval of plus 0.450 to plus 0.750 percentage points. A crushing winner by any team’s standards.

Now the comparison that matters, between the variant and what control would have done in a world without cannibalisation:

True effect Users Orders Rate
A, control without interference 100,000 3,000 3.000 percent
B, variant 100,000 3,300 3.300 percent

The calculator returns plus 0.300 percentage points, plus 10.00 percent relative, z = 3.841, p-value 0.00012, with an interval of plus 0.147 to plus 0.453 percentage points.

The change is real and worth shipping. The honest number is half of what the dashboard showed. The measured absolute lift, 0.600 percentage points, is exactly double the true one, 0.300, because every displaced order appears twice in the gap between arms: once adding to treatment and once subtracting from control. That doubling is the arithmetic signature of finite resource interference, and it is why a factor of two shows up so often.

The naive comparison against the true effectThe naive between-arm comparison returns plus 22.22 percent relative with a p-value below 0.00001. The comparison against the uncannibalised baseline returns plus 10.00 percent relative with a p-value of 0.00012. Both results are statistically significant, but the first is roughly double the second.Both are significant. Only one is the effect.0%naiveplus 22.22%trueplus 10.00%The gap between the two bars is the displacement of 300 orders, counted once in each arm.
The error is not one of precision, it is one of what the arithmetic is measuring. More sample narrows the interval around the wrong number.

What eBay measured

The example above is arithmetic built to teach the mechanism. The real measurement exists, and it is larger than intuition suggests.

Thomas Blake and Dominic Coey, of eBay Research Labs, published a study of an eBay email marketing campaign at the ACM Conference on Economics and Computation in 2014. Their starting point is the same one: classical statistical inference assumes the treatment affects the test group but not the control group, and that assumption is violated when experimenting in marketplaces because of general equilibrium effects, since changing test demand affects the supply available to the control group.

The result is blunt. In the paper’s words, ignoring test-control interference leads to estimates of the campaign’s effectiveness which are too large by a factor of around two. The user level estimate came to 0.74 percent. Redone at the auction level, with an average of 1.40 test bidders and 1.39 control bidders per auction, the calculation gave roughly 0.35 percent, over a sample of more than 10.4 million auctions. They also record the economics of the bias: it is larger in magnitude where supply is more inelastic, and it is positive if demand is elastic, meaning the naive comparison overstates the treatment’s benefit.

The recommendation closing the paper is the same one that applies to any team today: a better strategy may be to compare units at a higher level of aggregation, such as auctions instead of individuals, across which interference is less pronounced.

How to reduce the bias

There is no statistical correction for a contaminated control. What there is, is choosing a randomization unit that contains the interaction instead of cutting across it.

The cost of these alternatives is always the same: fewer independent units, therefore less power. Randomizing 40 cities instead of 200,000 users collapses the power of the design, and it has to be sized honestly, which usually means running longer. It is a trade of precision for the absence of bias, and it is worth it because a biased estimate does not improve with sample.

How to detect it before it hurts

Common mistakes

Make this automatic with Donnu

Interference is a design problem, so the moment to solve it is before running, which is exactly when nobody is thinking about it.

In Donnu, the randomization unit is an explicit choice at experiment creation rather than a silent default: you can randomize by user, by account or by geographic cluster, and the analysis automatically uses the same unit, avoiding the mismatch that squeezes the confidence interval. Any experiment flagged as sensitive to a finite resource carries the aggregate metric next to the per user metric in the same report, so displacement disguised as growth is visible at decision time. To size the power cost of cluster randomization, the sample size calculator accepts the number of independent units you actually have.

References

Read also: A/A test validation · Sample ratio mismatch · Ratio metrics · Guardrail metrics · Statistical power calculator · Leia em português

Frequently asked questions

What is interference between variants in A/B testing?
Interference is when what happens to a treatment user changes the outcome of a control user. A standard A/B test assumes this does not happen, an assumption the causal inference literature calls SUTVA. When it breaks, control stops being a clean baseline and becomes a group the experiment itself has already affected, so the measured difference between arms is no longer the treatment effect. This is a design problem, not a statistical one: no p-value adjustment repairs a contaminated control.
How large is the error interference causes?
It depends on the channel and it can be very large. Blake and Coey of eBay Research Labs studied an eBay email campaign and concluded, in their paper at the ACM Conference on Economics and Computation in 2014, that ignoring test-control interference leads to estimates of the campaign effectiveness which are too large by a factor of around two. The user level estimate was 0.74 percent, while the auction level analysis pointed to roughly 0.35 percent.
Does interference only happen in marketplaces?
No. Marketplaces are just the most visible case, because supply is obviously finite. The same mechanism appears with limited inventory, shared media budget, shared human support capacity and shared infrastructure. Kohavi reports a 90 and 10 percent A/A test that failed consistently because both arms used a least recently used cache with disjoint entries, so the larger arm ended up with a better hit ratio. No user interacted with another user in that case, and the arms contaminated each other anyway.
How do you reduce interference bias?
By randomizing on a unit that contains the interaction rather than cutting across it. Blake and Coey suggest exactly this, concluding that a better strategy may be to compare units at a higher level of aggregation, such as auctions instead of individuals, across which interference is less pronounced. In practice this becomes randomizing by geographic region, by market, by account or by time window. You trade statistical power for the absence of bias, and that trade is almost always worth making.
Can you detect interference before making the wrong call?
Partly. Three signals help: an unevenly split A/A test that fails, an aggregate metric that does not move while the per user metric moves a lot, and an effect that shrinks as you raise the percentage exposed to treatment. That third signal is the most informative, because under interference the measured effect depends on arm size, and in a clean experiment it should not.