Section 6: p-value adjustment for multiple comparisons


For studies with multiple outcomes, p-values can be adjusted to account for the multiple comparisons issue. The 'p.adjust( )' command in R calculates adjusted p-values from a set of un-adjusted p-values, using a number of adjustment procedures.

Adjustment procedures that give strong control of the family-wise error rate are the Bonferroni, Holm, Hochberg, and Hommel procedures.

Adjustments that control for the false discovery rate, which is the expected proportion of false discoveries among the rejected hypotheses, are the Benjamini and Hochberg, and Benjamini, Hochberg, and Yekutieli procedures.

To calculate adjusted p-values, first save a vector of un-adjusted p-values. The following example is from a study comparing two groups on 10 outcomes through t-tests and chi-square tests, where 3 of the outcomes gave un-adjusted p-values below the conventional 0.05 level. The following calculates adjusted p-values using the Bonferroni, Hochberg, and Benjamini and Hochberg (BH) methods:

> pvalues <- c(.002, .005, .015, .113, .222, .227, .454, .552, .663, .751)

> p.adjust(pvalues,method="bonferroni")

[1] 0.02 0.05 0.15 1.00 1.00 1.00 1.00 1.00 1.00 1.00

> p.adjust(pvalues,method="hochberg")

[1] 0.020 0.045 0.120 0.751 0.751 0.751 0.751 0.751 0.751 0.751

> p.adjust(pvalues,method="BH")

[1] 0.0200000 0.0250000 0.0500000 0.2825000 0.3783333 0.3783333 0.6485714

[8] 0.6900000 0.7366667 0.7510000

Other adjustments can be requested using "holm", "hommel", and "BY" (for the Benjamini, Hochber, and Yekutieli procedure).