當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。