← Back to the study guide, §7Study guide contents

DS 5030 · Understanding Uncertainty · Go deeper · §7

Many tests at once

Family-wise error, Bonferroni, Holm, false discovery rates, and Benjamini–Hochberg.

The problem in one line

With \(m\) independent true nulls each tested at \(\alpha\), \(P(\text{at least one false rejection}) = 1 - (1 - \alpha)^m\).

Work it by hand · how fast it grows
\(m\)151020100
\(1 - 0.95^m\)0.050.230.400.640.994
expected false rejections \(0.05m\)0.050.250.515

CASI §15.1: "how easy it is to be fooled." Leukemia gene 136 had \(p = 0.0036\), but 400 of 7128 genes beat its t-statistic.

Analogy · lottery tickets

One ticket at 1-in-20 odds rarely wins. Buy twenty and you probably hold a winner. A "significant" result pulled from many tests is a winning ticket from a stack: it says more about the size of the stack than about the ticket.

Family-wise error: Bonferroni and Holm

Formal · AoS Thm 10.24; CASI (15.8)–(15.10)

Bonferroni: reject \(H_{0i}\) if \(p_i < \alpha/m\). FWER \(\le \alpha\) by the union bound, with no independence needed. Holm: sort the p-values; reject \(p_{(1)}, p_{(2)}, \dots\) while \(p_{(i)} \le \alpha/(m - i + 1)\); stop at the first failure. Also FWER \(\le \alpha\), and never rejects fewer than Bonferroni.

Story proof · why Holm still controls FWER

Say \(m_0\) of the nulls are true. Walk down the sorted list until the first true null. Everything before it was a false null, so at most \(m - m_0\) hypotheses came first, and this one is at rank \(i \le m - m_0 + 1\). To be rejected it must pass \(\alpha/(m - i + 1) \le \alpha/m_0\). So a false rejection requires the smallest true-null p-value to be below \(\alpha/m_0\), which by the union bound over the \(m_0\) true nulls has probability at most \(m_0 \cdot \alpha/m_0 = \alpha\). Holm earns its extra power because, once false nulls are cleared away, the later thresholds can afford to be looser.

Work it by hand · five p-values

0.001, 0.012, 0.020, 0.040, 0.300; \(\alpha = 0.05\).

\(i\)\(p_{(i)}\)Bonferroni 0.01Holm \(0.05/(6-i)\)BH \(0.01i\)
10.001✓0.0100 ✓0.01 ✓
20.012✗0.0125 ✓0.02 ✓
30.020✗0.0167 ✗ stop0.03 ✓
40.040✗—0.04 ✓
50.300✗—0.05 ✗

Rejections: Bonferroni 1, Holm 2, BH 4, uncorrected 4.

Work it by hand · Bonferroni thresholds in z units

Two-sided Bonferroni at \(\alpha = 0.05\) requires \(|z| > \Phi^{-1}(1 - 0.025/m)\): \(m = 1 \to 1.96\); \(m = 10 \to 2.81\); \(m = 100 \to 3.48\); \(m = 7128 \to 4.49\). CASI's prostate example uses one-sided 0.05/6033, giving 4.31: four genes pass.

False discovery rate: Benjamini–Hochberg

Formal · AoS (10.8), Thm 10.26; CASI (15.14)–(15.15)

FDP = false rejections / rejections (0 if none); FDR = \(E[\text{FDP}]\). BH: find the largest \(i\) with \(p_{(i)} \le i\alpha/m\) and reject the \(i\) smallest. With independent p-values, FDR \(= \pi_0\alpha \le \alpha\), where \(\pi_0\) is the share of true nulls.

Story proof · why the line \(i\alpha/m\) controls the false-discovery share

Suppose you reject everything with \(p \le t\). True nulls have uniform p-values, so about \(m_0 t \le m t\) of them fall below \(t\): that's the expected number of false discoveries. If \(R\) p-values in total fall below \(t\), the false-discovery share is at most about \(mt/R\). Setting \(mt/R = \alpha\) gives \(t = R\alpha/m\): the BH line. BH picks the largest threshold where the observed count of small p-values justifies it.

Work it by hand · AoS Ex 10.28 (ten p-values)

0.00017, 0.00448, 0.00671, 0.00907, 0.01220, 0.33626, … BH line \(0.005i\): the first five are below (0.005, 0.010, 0.015, 0.020, 0.025); the sixth (0.336 vs 0.030) is not. BH rejects 5; Bonferroni (0.005) rejects 2.

Widget: many tests, three rules

Sorted p-values and three thresholds

\(m\) tests, of which a share are real effects of size \(\delta\) SEs and the rest true nulls. Dots are sorted p-values (red = real effect, gray = true null) on a log scale. Lines: uncorrected \(\alpha\), Bonferroni \(\alpha/m\), and the BH line \(i\alpha/m\).

Widget: apply the rules to your p-values

Bonferroni, Holm, and BH calculator

Questions

Think about itIn the widget with no real effects (share 0), how many tests does each rule reject?

Uncorrected rejects about \(0.05m\) (all false). Bonferroni and BH usually reject none: when every null is true, FDR control and FWER control coincide, since any rejection makes FDP = 1.

Think about itRun "Average over 500 runs" with 10% real effects. Uncorrected testing has the most power. Why not use it?

Look at its FDR: with 90 nulls and 10 real effects, about 4.5 false rejections per run against roughly 9 true ones, so a third of its "discoveries" are false. BH keeps that share near 5% while keeping most of the power; Bonferroni keeps even one false discovery rare, at a large cost in power.

Check your understandingIs BH valid if the tests are correlated?

The basic version is valid for independent and positively dependent p-values. AoS's \(C_m = \sum_{j=1}^m 1/j\) factor (divide \(\alpha\) by it) makes it valid under any dependence, at a cost of about a factor of \(\log m\) in the threshold. Bonferroni never needs independence.

← §06 Hypothesis tests and p-values§08 Inference for regression coefficients →