当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R p.adjust 调整多重比较的 P 值


R语言 p.adjust 位于 stats 包(package)。

说明

给定一组 p 值,返回使用多种方法之一调整的 p 值。

用法

p.adjust(p, method = p.adjust.methods, n = length(p))

p.adjust.methods
# c("holm", "hochberg", "hommel", "bonferroni", "BH", "BY",
#   "fdr", "none")

参数

p

p 值的数值向量(可能带有NAs)。任何其他R对象被强制as.numeric.

method

校正方法,character 字符串。可以缩写。

n

比较次数,必须至少为 length(p) ;仅当您知道自己在做什么时才设置此选项(为非默认值)!

细节

调整方法包括 Bonferroni 校正 ("bonferroni" ),其中 p 值乘以比较次数。 Holm (1979) ( "holm" )、Hochberg (1988) ( "hochberg" )、Hommel (1988) ( "hommel" )、Benjamini & Hochberg (1995) ( "BH" 或其别名) 也包含了不太保守的修正分别是 "fdr" ) 和 Benjamini & Yekutieli (2001) ( "BY" )。还包括 pass-through 选项 ("none")。这组方法包含在 p.adjust.methods 向量中,以便需要将该方法作为选项并将其传递给 p.adjust 的方法。

前四种方法旨在对 family-wise 错误率进行强有力的控制。似乎没有理由使用未经修改的 Bonferroni 校正,因为它以 Holm 方法为主,该方法在任意假设下也有效。

当假设检验独立或非负相关时,Hochberg 和 Hommel 的方法是有效的(Sarkar,1998;Sarkar 和 Chang,1997)。 Hommel 的方法比 Hochberg 的方法更强大,但差异通常很小,并且 Hochberg p 值的计算速度更快。

Benjamini、Hochberg 和 Yekutieli 的 "BH" (又名 "fdr" )和 "BY" 方法控制错误发现率,即被拒绝的假设中错误发现的预期比例。错误发现率的条件不如 family-wise 错误率严格,因此这些方法比其他方法更强大。

请注意,您可以将 n 设置为大于 length(p),这意味着对于 "bonferroni""holm" 方法,假定未观察到的 p 值大于所有观察到的 p 值,而对于其他方法,则假定等于 1。

修正 p 值的数值向量(与 p 长度相同,名称从 p 复制)。

例子

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] <- NA
pN.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)

参考

Benjamini, Y., and Hochberg, Y. (1995). Controlling the false discovery rate: a practical and powerful approach to multiple testing. Journal of the Royal Statistical Society Series B, 57, 289-300. doi:10.1111/j.2517-6161.1995.tb02031.x.

Benjamini, Y., and Yekutieli, D. (2001). The control of the false discovery rate in multiple testing under dependency. Annals of Statistics, 29, 1165-1188. doi:10.1214/aos/1013699998.

Holm, S. (1979). A simple sequentially rejective multiple test procedure. Scandinavian Journal of Statistics, 6, 65-70. https://www.jstor.org/stable/4615733.

Hommel, G. (1988). A stagewise rejective multiple test procedure based on a modified Bonferroni test. Biometrika, 75, 383-386. doi:10.2307/2336190.

Hochberg, Y. (1988). A sharper Bonferroni procedure for multiple tests of significance. Biometrika, 75, 800-803. doi:10.2307/2336325.

Shaffer, J. P. (1995). Multiple hypothesis testing. Annual Review of Psychology, 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: a proof of Simes conjecture. Annals of Statistics, 26, 494-504. doi:10.1214/aos/1028144846.

Sarkar, S., and Chang, C. K. (1997). The Simes method for multiple hypothesis testing with positively dependent test statistics. Journal of the American Statistical Association, 92, 1601-1608. doi:10.2307/2965431.

Wright, S. P. (1992). Adjusted P-values for simultaneous inference. Biometrics, 48, 1005-1013. doi:10.2307/2532694. (Explains the adjusted P-value approach.)

也可以看看

pairwise.* 函数,例如 pairwise.t.test

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Adjust P-values for Multiple Comparisons。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。