Hypothesis-Testing
Stouffer 的 Z 分數方法:如果我們求和會怎樣𝑧2z2z^2代替𝑧zz?
我在表演具有相同零假設的獨立統計檢驗,並希望將結果合併為一個-價值。似乎有兩種“公認”的方法:Fisher 方法和 Stouffer 方法。
我的問題是關於 Stouffer 的方法。對於每個單獨的測試,我都會獲得一個 z 分數. 在零假設下,它們中的每一個都服從標準正態分佈,所以總和遵循具有方差的正態分佈. 因此 Stouffer 的方法建議計算,它應該與單位方差呈正態分佈,然後將其用作聯合 z 分數。
這是合理的,但這是我想出的另一種方法,對我來說聽起來也很合理。作為每個來自標準正態分佈,平方和應該來自卡方分佈自由程度。所以可以計算並將其轉換為- 使用累積卡方分佈函數的值自由程度 (, 在哪裡是 CDF)。
但是,我什至在任何地方都找不到這種方法。它曾經使用過嗎?它有名字嗎?與 Stouffer 的方法相比,有哪些優點/缺點?還是我的推理有問題?
跳出的一個缺陷是 Stouffer 的方法可以檢測到,這是當一個備選方案始終正確時人們通常期望發生的情況,而卡方方法似乎沒有這樣做的能力。快速模擬表明情況確實如此。卡方方法在檢測單邊替代方案方面的威力較小。以下是兩種方法(紅色=斯托弗,藍色=卡方)的 p 值直方圖獨立迭代以及各種單方面的標準化效應從無() 通過標清 ()。
更好的程序將有更多接近零的面積。對於所有正值如圖所示,該過程是 Stouffer 過程。
R代碼
這包括用於比較的 Fisher 方法(已註釋掉)。
n <- 10 n.iter <- 10^5 z <- matrix(rnorm(n*n.iter), ncol=n) sim <- function(mu) { stouffer.sim <- apply(z + mu, 1, function(y) {q <- pnorm(sum(y)/sqrt(length(y))); 2*min(q, 1-q)}) chisq.sim <- apply(z + mu, 1, function(y) 1 - pchisq(sum(y^2), length(y))) #fisher.sim <- apply(z + mu, 1, # function(y) {q <- pnorm(y); # 1 - pchisq(-2 * sum(log(2*pmin(q, 1-q))), 2*length(y))}) return(list(stouffer=stouffer.sim, chisq=chisq.sim, fisher=fisher.sim)) } par(mfrow=c(2, 3)) breaks=seq(0, 1, .05) tmp <- sapply(c(0, .1, .2, .3, .4, .6), function(mu) { x <- sim(mu); hist(x[[1]], breaks=breaks, xlab="p", col="#ff606060", main=paste("Mu =", mu)); hist(x[[2]], breaks=breaks, xlab="p", col="#6060ff60", add=TRUE) #hist(x[[3]], breaks=breaks, xlab="p", col="#60ff6060", add=TRUE) })