The previous article showed that a single non-inferiority test on a single guardrail already needs more data than most teams provision. Almost no real experiment stops at one guardrail, though — a typical launch decision watches revenue, latency, and one or two engagement or complaint metrics at the same time. Running several guardrail tests at once introduces a second multiplicity problem, and it isn't the one most teams already know to watch for.
The Familiar Multiplicity Problem, Briefly
An earlier article in this blog covered the well-known version of multiple testing: run 20 independent significance tests and the chance that at least one shows a false positive by pure chance climbs to roughly 64%, even if nothing real is happening anywhere. That's a problem on the side — false positives compounding as you add more tests. The standard fixes (Bonferroni, Benjamini–Hochberg) are built to keep that compounding under control.
Guardrails, run under a non-inferiority framework, compound in a different place entirely.
The Guardrail Decision Rule
The sensible way to use guardrails in a launch decision is conjunctive: ship only if every one of the guardrails individually clears its own non-inferiority test. One failing guardrail is enough to block the launch, or at least trigger a closer look. This "all must pass" rule is standard practice, and for good reason — it's also, reassuringly, not the source of inflated false positives. Requiring every test in the family to reject its own "worse than " null actually keeps the family-wise Type I error at or below each individual test's , no correction needed. The compounding problem here isn't about false positives at all.
Where the Real Cost Shows Up: Power
The conjunctive rule is safe on the false-positive side, but it's expensive on the other side. Suppose the treatment truly is non-inferior on every one of your guardrails, and each individual test is designed with power to correctly detect that. The probability that all independent tests correctly pass — the probability your launch decision doesn't get needlessly blocked by chance — is:
This shrinks fast. A guardrail suite where every individual test is well-powered at 90% still only has a combined chance of sailing through cleanly that falls well below 90% once you're checking more than one or two metrics:
| Guardrails (G) | Per-test power 80% | Per-test power 90% | Per-test power 95% |
|---|---|---|---|
| 1 | 80.0% | 90.0% | 95.0% |
| 2 | 64.0% | 81.0% | 90.3% |
| 3 | 51.2% | 72.9% | 85.7% |
| 4 | 41.0% | 65.6% | 81.5% |
| 5 | 32.8% | 59.0% | 77.4% |
With five guardrails, each individually sized to a respectable 90% power, the family as a whole only has a 59% chance of passing cleanly when the treatment genuinely is safe everywhere. The other 41% of the time, a perfectly good launch gets needlessly stalled because at least one truly-fine guardrail randomly missed its own target — not because anything is actually wrong.
Correcting for It
The fix mirrors Bonferroni, but applied to instead of . If you want the entire launch decision — the goal metric's result plus every one of the guardrails — to hit a target family-wise power of , split the tolerable miss-rate evenly across all components of that decision (the accounts for the goal metric's own result, which has to come through correctly too for the launch to happen as intended):
For a target family-wise power of 80% (), here's what that means for the power each individual test needs to be designed to:
| Guardrails (G) | Family members (G+1) | β per test | Power per test |
|---|---|---|---|
| 1 | 2 | 0.100 | 90.0% |
| 2 | 3 | 0.067 | 93.3% |
| 3 | 4 | 0.050 | 95.0% |
| 4 | 5 | 0.040 | 96.0% |
| 5 | 6 | 0.033 | 96.7% |
Why divide, not just accept the erosion: the split is a simple, conservative first pass — it assumes independence across guardrails, which is rarely exactly true (revenue and average order value, for instance, tend to move together). Just like the correlation caveat raised in the alpha-spending worked example earlier in this series, treating guardrails as independent is a reasonable back-of-envelope approximation, not an exact answer — the exact correction depends on how correlated your specific set of guardrails actually is.
This Compounds With the Margin Problem
The previous article showed that required sample size scales with , and that shrinking the margin already inflates that requirement quadratically. Raising the target power per test compounds it further, because itself grows with power: at 80% power, ; at 95% power, . Holding everything else fixed, moving from 80% to 95% per-test power alone increases the required sample size by about 1.75×. Add three or four correlated guardrails, each with a tight margin, each now needing 95%+ individual power to hold the family together — and the total sample requirement for a "simple" guardrail suite can end up many times larger than the goal metric's own sample size calculation ever accounted for.
What Comes Next
Two open questions remain, and they're the two hardest, most practical parts of this whole series. First: given all of this machinery, what should the margin actually be set to for a real metric like revenue? That's a business decision as much as a statistical one, and it's worth a full worked example on its own. Second: once you have real margins, correlated guardrails, and a corrected power target, what sample size do you actually need to plan for? The next two articles in this series answer both, in that order.