Rev 75151 | Rev 82618 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/stats/man/p.adjust.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2018 R Core Team% Distributed under GPL 2 or later\name{p.adjust}\alias{p.adjust}\alias{p.adjust.methods}\title{Adjust P-values for Multiple Comparisons}\description{Given a set of p-values, returns p-values adjusted usingone of several methods.}\usage{p.adjust(p, method = p.adjust.methods, n = length(p))p.adjust.methods# c("holm", "hochberg", "hommel", "bonferroni", "BH", "BY",# "fdr", "none")}\arguments{\item{p}{numeric vector of p-values (possibly with\code{\link{NA}}s). Any other \R object is coerced by\code{\link{as.numeric}}.}\item{method}{correction method, a \code{\link{character}} string.Can be abbreviated.}\item{n}{number of comparisons, must be at least \code{length(p)};only set this (to non-default) when you know what you are doing!}}\details{The adjustment methods include the Bonferroni correction(\code{"bonferroni"}) in which the p-values are multiplied by thenumber of comparisons. Less conservative corrections are alsoincluded by Holm (1979) (\code{"holm"}), Hochberg (1988)(\code{"hochberg"}), Hommel (1988) (\code{"hommel"}), Benjamini &Hochberg (1995) (\code{"BH"} or its alias \code{"fdr"}), and Benjamini &Yekutieli (2001) (\code{"BY"}), respectively.A pass-through option (\code{"none"}) is also included.The set of methods are contained in the \code{p.adjust.methods} vectorfor the benefit of methods that need to have the method as an optionand pass it on to \code{p.adjust}.The first four methods are designed to give strong control of thefamily-wise error rate. There seems no reason to use the unmodifiedBonferroni correction because it is dominated by Holm's method, whichis also valid under arbitrary assumptions.Hochberg's and Hommel's methods are valid when the hypothesis testsare independent or when they are non-negatively associated (Sarkar,1998; Sarkar and Chang, 1997). Hommel's method is more powerful thanHochberg's, but the difference is usually small and the Hochbergp-values are faster to compute.The \code{"BH"} (aka \code{"fdr"}) and \code{"BY"} methods ofBenjamini, Hochberg, and Yekutieli control the false discovery rate,the expected proportion of false discoveries amongst the rejectedhypotheses. The false discovery rate is a less stringent conditionthan the family-wise error rate, so these methods are more powerfulthan the others.Note that you can set \code{n} larger than \code{length(p)} whichmeans the unobserved p-values are assumed to be greater than all theobserved p for \code{"bonferroni"} and \code{"holm"} methods and equalto 1 for the other methods.}\value{A numeric vector of corrected p-values (of the same length as\code{p}, with names copied from \code{p}).}\references{Benjamini, Y., and Hochberg, Y. (1995).Controlling the false discovery rate: a practical and powerfulapproach to multiple testing.\emph{Journal of the Royal Statistical Society Series B}, \bold{57},289--300.\url{http://www.jstor.org/stable/2346101}.Benjamini, Y., and Yekutieli, D. (2001).The control of the false discovery rate in multiple testing underdependency.\emph{Annals of Statistics}, \bold{29}, 1165--1188.\doi{10.1214/aos/1013699998}.Holm, S. (1979).A simple sequentially rejective multiple test procedure.\emph{Scandinavian Journal of Statistics}, \bold{6}, 65--70.\url{http://www.jstor.org/stable/4615733}.Hommel, G. (1988).A stagewise rejective multiple test procedure based on a modifiedBonferroni test.\emph{Biometrika}, \bold{75}, 383--386.\doi{10.2307/2336190}.Hochberg, Y. (1988).A sharper Bonferroni procedure for multiple tests of significance.\emph{Biometrika}, \bold{75}, 800--803.\doi{10.2307/2336325}.Shaffer, J. P. (1995).Multiple hypothesis testing.\emph{Annual Review of Psychology}, \bold{46}, 561--584.\doi{10.1146/annurev.ps.46.020195.003021}.(An excellent review of the area.)Sarkar, S. (1998).Some probability inequalities for ordered MTP2 random variables: aproof of Simes conjecture.\emph{Annals of Statistics}, \bold{26}, 494--504.\doi{10.1214/aos/1028144846}.Sarkar, S., and Chang, C. K. (1997).The Simes method for multiple hypothesis testing with positivelydependent test statistics.\emph{Journal of the American Statistical Association}, \bold{92},1601--1608.\doi{10.2307/2965431}.Wright, S. P. (1992).Adjusted P-values for simultaneous inference.\emph{Biometrics}, \bold{48}, 1005--1013.\doi{10.2307/2532694}.(Explains the adjusted P-value approach.)}\seealso{\code{pairwise.*} functions such as \code{\link{pairwise.t.test}}.}\examples{require(graphics)set.seed(123)x <- rnorm(50, mean = c(rep(0, 25), rep(3, 25)))p <- 2*pnorm(sort(-abs(x)))round(p, 3)round(p.adjust(p), 3)round(p.adjust(p, "BH"), 3)## or all of them at once (dropping the "fdr" alias):p.adjust.M <- p.adjust.methods[p.adjust.methods != "fdr"]p.adj <- sapply(p.adjust.M, function(meth) p.adjust(p, meth))p.adj.60 <- sapply(p.adjust.M, function(meth) p.adjust(p, meth, n = 60))stopifnot(identical(p.adj[,"none"], p), p.adj <= p.adj.60)round(p.adj, 3)## or a bit nicer:noquote(apply(p.adj, 2, format.pval, digits = 3))## and a graphic:matplot(p, p.adj, ylab="p.adjust(p, meth)", type = "l", asp = 1, lty = 1:6,main = "P-value adjustments")legend(0.7, 0.6, p.adjust.M, col = 1:6, lty = 1:6)## Can work with NA's:pN <- p; iN <- c(46, 47); pN[iN] <- NApN.a <- sapply(p.adjust.M, function(meth) p.adjust(pN, meth))## The smallest 20 P-values all affected by the NA's :round((pN.a / p.adj)[1:20, ] , 4)}\keyword{htest}