The idea
Most "failed" A/B tests were lost before launch: they never had enough traffic to see the effect they were hunting. Power analysis is the pre-flight check that the experiment, as designed, can actually answer its question.
The vocabulary, in one frame: choose (false positive tolerance, usually 0.05) and target power (probability of detecting a real effect, usually 80%). Then for a true difference between arms:
Setting the detection requirement gives the two master formulas. Sample size per arm to detect :
With the standard conventions, , so:
Inverting gives the minimum detectable effect at a fixed :
For a conversion metric, .
The economics live in the exponents: scales linearly in variance but with the inverse square of the effect size. Halving the MDE quadruples the required traffic — which is why "let's also detect tiny effects" quietly turns a two-week test into a two-quarter one, and why variance reduction techniques (CUPED, binary instead of continuous metrics, winsorizing whales) are worth real engineering effort: cutting by 30% cuts traffic requirements by 30%.
MDE is a business input, not a statistical output: it is the smallest lift that would justify shipping. Deciding it after seeing results is how teams talk themselves into noise.
Worked example
Checkout redesign. Baseline conversion ; the smallest lift worth the engineering cost is one absolute point, . Standard (two-sided), 80% power.
Sanity check with the rule of sixteen using : — same answer to within rounding.
Convert to calendar time: 10,000 eligible users/day, split 50/50 → 5,000 per arm per day → sample complete in ~3 days. Run two full weeks anyway: weekday/weekend mix, weekly seasonality, novelty decay. Sample size is a floor, not a stopping rule.
Now the negotiation table — required per arm at this baseline:
| Target MDE (abs.) | per arm | Days of traffic at 10k/day | Realistic duration |
|---|---|---|---|
| 2.0 points | ~3,800 | under 1 day | 1 full week anyway |
| 1.0 point | ~14,700 | ~3 days | 1-2 weeks |
| 0.5 points | ~58,000 | ~12 days | 2-3 weeks |
| 0.2 points | ~356,000 | ~71 days | a full quarter — renegotiate |
That last row is the conversation that matters: for a 0.2-point MDE you do not just "run longer" — a quarter-long test blocks the roadmap and drifts with seasonality. You change the design: a more sensitive proxy metric, CUPED, or accept a larger MDE.
Cheat sheet
- Sample size per arm (means): ; rule of sixteen: (α = 0.05, 80% power).
- Proportions: replace with ; quick form .
- MDE at fixed : .
- z-values: , , (90% power → multiplier , i.e. ).
- Scaling laws: (linear) and (quadratic) — halve the MDE, pay 4x the traffic.
| Lever | Effect on required |
|---|---|
| MDE ÷ 2 | |
| variance ↓ 30% (CUPED, capping) | ↓ 30% |
| power 80% → 90% | |
| 0.05 → 0.01 | (approx.) |
| one-sided instead of two-sided | (approx.) — justify beforehand |
Design checklist: randomization unit = analysis unit · MDE agreed with product pre-launch · duration ≥ max(sample-size days, 1-2 full weeks) · guardrail metrics chosen · stopping rule fixed (no peeking without a sequential design).
Gotchas:
- Post-hoc power at the observed effect is a restatement of the p-value — report the CI instead.
- for revenue-type metrics is huge → conversion/binary metrics are often 5-10x cheaper in traffic for the same decision.
- Reaching in 3 days does not license stopping in 3 days — weekly cycles and novelty effects bias short tests.
- Multiple variants split traffic: arms need roughly users total, plus a multiple-testing correction that raises further.