Why Genomic Analyses Need a Step-Up Rule
A genomic analysis may test thousands of hypotheses, such as whether each gene is associated with a measured phenotype. Even when every individual test is conducted correctly, examining many p-values creates a multiple-testing problem. The Benjamini-Hochberg (BH) procedure is a rule for selecting discoveries while targeting a specified false discovery rate, rather than controlling the probability of making any false rejection.
The false discovery proportion is the number of false rejections divided by the total number of rejections, with the proportion defined as zero when there are no rejections. The false discovery rate is the expected value of that proportion. The BH algorithm takes a family of p-values and a target level \(q\), then determines which hypotheses to reject. It is important to distinguish this algorithmic decision rule from its guarantee: the usual BH FDR guarantee holds when the null p-values are valid and the tests are independent, and it also holds under certain positive dependence conditions. The procedure can be computed without independence, but its standard guarantee does not automatically extend to arbitrary dependence.
The family must be specified before interpreting the results. Here \(m\) is the number of hypotheses in that family, and all \(m\) p-values—not only the small ones or the subset that looks interesting—are used to set the BH thresholds. A target \(q\) is chosen, with \(0<q<1\). It is the nominal FDR level for the procedure, not a claim that each selected result has probability \(q\) of being false.
The BH Step-Up Algorithm
The thresholds increase with rank: \(t_1=q/m\), \(t_2=2q/m\), and \(t_m=q\). The step-up feature is the crucial part of the rule. After identifying the largest passing rank, the procedure rejects every hypothesis ranked up to that point. It does not require every one of those p-values to pass its own rank-specific comparison.
When p-values are sorted for calculation, their original hypothesis labels should be retained. The ordered list identifies the cutoff, but a final scientific report needs to name the genes, variants, or other hypotheses associated with the rejected p-values. Sorting does not change which p-value belongs to which hypothesis.
Worked Example: Finding the Largest Passing Rank
Suppose a hypothetical analysis tests \(m=5\) genomic hypotheses at target level \(q=0.10\). The ordered p-values are \(0.006, 0.021, 0.038, 0.047,\) and \(0.40\). Compute each threshold and apply BH.
The thresholds are \(t_i=iq/m=i(0.10)/5=0.02i\). Thus, for ranks 1 through 5, they are \(0.020, 0.040, 0.060, 0.080,\) and \(0.100\).
The comparisons are \(0.006\le0.020\), \(0.021\le0.040\), \(0.038\le0.060\), \(0.047\le0.080\), and \(0.40>0.100\). Ranks 1 through 4 pass, while rank 5 fails. Therefore the largest passing rank is \(k=4\), and BH rejects the four hypotheses corresponding to \(0.006, 0.021, 0.038,\) and \(0.047\). The p-values have no measurement units.
Why the Largest Passing Rank Determines the Set
The rank-specific comparisons are used to locate the cutoff. Once \(k\) is found, the rejection set is defined by rank, not by repeating a separate acceptance rule for every smaller rank. This distinction matters because \(t_i\) increases with \(i\): a p-value can be too large for its own early threshold but still be included among the first \(k\) when a later rank passes.
The following short justification makes the selection logic explicit. Since the p-values are ordered, \(p_{(i)}\le p_{(k)}\) for every \(i\le k\). Since \(k\) passes, \(p_{(k)}\le kq/m\). It follows that every p-value among the first \(k\) is at most \(kq/m\). This does not show that \(p_{(i)}\le iq/m\) for every \(i\le k\), because \(iq/m\) can be smaller than \(kq/m\). The procedure's definition is to reject the entire prefix of ranks up to the largest passing rank.
Worked Example: A Smaller Rank Can Fail and Still Be Rejected
Consider five hypothetical tests with ordered p-values \(0.025, 0.035, 0.070, 0.20,\) and \(0.80\), using \(q=0.10\). The rank thresholds are \(0.020, 0.040, 0.060, 0.080,\) and \(0.100\).
At rank 1, \(0.025>0.020\), so that comparison fails. At rank 2, \(0.035\le0.040\), so rank 2 passes. Rank 3 fails because \(0.070>0.060\); rank 4 fails because \(0.20>0.080\); and rank 5 fails because \(0.80>0.100\). The largest passing rank is therefore \(k=2\).
BH rejects the first two hypotheses, including the one with p-value \(0.025\), even though it did not pass its own rank-1 threshold. Rejecting only the p-values that individually pass their own thresholds would produce a different rule and would not implement the BH step-up procedure.
Mapping the Decisions Back to Genomic Results
In a genomic application, the family might consist of one test per gene for a specified phenotype. For the algorithm to apply as stated, each test must produce a p-value for its corresponding null hypothesis, and the same family size \(m\) must be used throughout the threshold calculation. The example below illustrates how ordering and the final rejection set work when the input is recorded by gene rather than by rank.
Worked Example: Identifying Rejected Genes
Suppose a hypothetical study tests ten genes at \(q=0.05\). In gene order, the p-values are: Gene A, \(0.001\); B, \(0.080\); C, \(0.014\); D, \(0.004\); E, \(0.310\); F, \(0.027\); G, \(0.006\); H, \(0.200\); I, \(0.045\); and J, \(0.009\).
After sorting and retaining labels, the ordered results are \(0.001\) (A), \(0.004\) (D), \(0.006\) (G), \(0.009\) (J), \(0.014\) (C), \(0.027\) (F), \(0.045\) (I), \(0.080\) (B), \(0.200\) (H), and \(0.310\) (E). With \(m=10\), each rank threshold is \(t_i=i(0.05)/10=0.005i\). The thresholds are \(0.005, 0.010, 0.015, 0.020, 0.025, 0.030, 0.035, 0.040, 0.045,\) and \(0.050\).
Ranks 1 through 6 pass: for example, at rank 6, \(0.027\le0.030\). Rank 7 fails because \(0.045>0.035\); ranks 8, 9, and 10 also fail because their p-values exceed their respective thresholds. Thus \(k=6\). The rejection set consists of Genes A, D, G, J, C, and F, corresponding to the first six ordered p-values. This procedure selects hypotheses for rejection; it does not by itself establish a biological mechanism or a causal effect.
Implementation Checks, Alternatives, and Limits
A reliable implementation keeps the hypothesis family, p-values, ranks, thresholds, and labels aligned. Useful checks include confirming that the ordered p-values are nondecreasing, that the thresholds increase from \(q/m\) to \(q\), and that the reported rejection set contains exactly the first \(k\) ordered hypotheses. If no comparison passes, the result is an empty rejection set; do not force a cutoff by choosing the smallest p-value.
A frequent mistake is to compare every p-value only with its own threshold and reject exactly those that pass. That is the wrong reasoning because BH is a step-up rule: first find the largest passing rank, then reject the entire prefix through that rank. The second worked example shows why these answers can differ.
BH is not interchangeable with familywise error procedures such as Bonferroni or Holm. Those procedures target familywise error—the probability of at least one false rejection—whereas BH targets the expected false discovery proportion. A familywise procedure can therefore be more conservative when many discoveries are sought. Conversely, applying BH does not provide the same protection against any false rejection that familywise control provides.
The standard BH FDR guarantee requires appropriate conditions on the p-values, including independence for the basic guarantee. Genomic tests can be dependent because genes may be co-regulated, share biological pathways, or be affected by linkage. The step-up calculations remain well-defined in that setting, but the nominal target alone does not establish that the FDR is controlled under every dependence structure. The procedure also depends on defining the family appropriately: omitting tests after seeing their p-values changes the analysis and can undermine its intended error-rate interpretation.
Check Your Understanding
For each problem, determine the largest passing rank and the resulting rejection set. Solutions are included below.
- For \(m=4\), \(q=0.05\), and ordered p-values \(0.004, 0.018, 0.031, 0.20\), find the BH rejection set.
- For \(m=5\), \(q=0.10\), and ordered p-values \(0.025, 0.035, 0.070, 0.20, 0.80\), explain why the first hypothesis is rejected despite failing its own threshold.
- If none of the ordered p-values is less than or equal to its rank-specific threshold, what does BH reject?
- Why must the threshold calculation use the full prespecified family size rather than only the number of small p-values?
Solutions. (1) The thresholds are \(0.0125, 0.0250, 0.0375,\) and \(0.0500\). The first three ranks pass and rank 4 fails, so \(k=3\) and the first three hypotheses are rejected. (2) The thresholds are \(0.020, 0.040, 0.060, 0.080,\) and \(0.100\). Rank 2 passes and is the largest passing rank, so the first two hypotheses are rejected; the step-up rule rejects the full prefix through rank 2, even though rank 1 fails its own threshold. (3) The rejection set is empty because no passing rank exists. (4) The rank thresholds are defined using \(m\), the number of hypotheses in the family. Replacing \(m\) with a data-selected subset changes those thresholds and no longer applies the stated BH procedure to the prespecified family.