前言
當研究者進行一組假設檢驗,傳統的統計方法將因「多重比較」的問題導致結論不可靠。當研究者進行多次假設檢驗,儘管實際上沒有統計學意義,但總有一兩次能得到有意義的結果。
傳統的假設檢驗是基於一個原假設得到的觀察樣本結果或更極端情況的概率。當進行多重比較時,傳統P值就不能代表基於原假設的真實概率了。
多重比較問題
幾乎所有科學研究都會面臨多重比較問題。常見的是,研究者不僅關注某個處理組與對照組的比較。下面是幾種常見的多重比較情況:多個處理組。假設有n個處理組,將會有n(n-1)/2對可能的比較。
亞組分析。比如,我們會按性別分組進行亞組分析,看看效應在兩組中是否一致。
多次估計。實驗者常對同一個數據集應用多次估計,對於這種設計和分析,有時需要考慮多重比較的影響。
多個結局。研究者對某個幹預對多個不同結局的影響。
在多重比較後綜合一系列的結果,英文中我們稱為「family claim」。比如,某個「family claim」稱,處理組A、B、C、D沒有作用,但處理組E有。再如,處理因素在組1、2、3中沒有作用,但在組4中具有強效應。
多重比較的問題與「fishing」相關,但有很大不同。「fishing」指的是研究者做了大量的檢驗,但僅匯報其中「interesting」的結果。實際上,「fishing」中進行的大量檢驗我們都應該進行多重比較的校正。
Bonferroni校正太苛刻Bonferroni校正因其操作簡單而成為常用的多重比較校正方法。若進行了k次檢驗,檢驗水準應該校正為α/k,或者直接將P值乘以k後跟α進行比較。(註:後者可能出現P值超過1的情況,難以解釋)
比如,研究某個幹預對三個結局的影響,進行三次組間比較得到P值為:0.004、0.020、0.122。採用Bonferroni法進行校正後,α' = 0.05/3 = 0.016,只有第一個檢驗具有統計學意義。當檢驗次數增大時,具有統計學意義的檢驗個數將更少。
Benjamini-Hochberg校正為了克服Bonferroni校正的苛刻性,我們可以選取Benjamini-Hochberg校正方法進行代替。假設有m個P值,該方法先將所有P值從小到大進行排序,可看做Pk,k=1,2,...,m,然後計算每個Pk對應的α' = k ÷ m × α,所以α'依次為0.017、0.033、0.050。
R語言實操
像Benjamini-Hochberg校正這麼「好」的方法,R語言當然可以簡單的實現。
#設定隨機種子為周五的日期
set.seed(20180713)
#模擬產生50個檢驗對應的P值
x <- rnorm(50, mean = c(rep(0, 25), rep(3, 25)))
p <- round(2*pnorm(sort(-abs(x))), 3)
#分別計算bonferroni校正和Benjamini-Hochberg校正的P值
bonferroni <- p.adjust(p, "bonferroni")
BH <- p.adjust(p, "BH")
#計算各個情況下有統計學意義的P值個數
length(which(bonferroni < 0.05))
length(which(BH < 0.05))
length(which(p < 0.05))
結果顯示,具有統計學意義的P值個數分別為5、19、23,可以看出相對於苛刻的Bonferroni校正,Benjamini-Hochberg校正是個不錯的選擇。
相關閱讀
本文摘譯自《10 Things to Know About Multiple Comparisons》,感興趣的朋友可以自行查閱原文:https://egap.org/methods-guides/10-things-you-need-know-about-multiple-comparisons
本公眾號往期相關文章《臨床試驗中的多重性校正》,感興趣的朋友也可自行查閱。
▼歡迎關注《統計諮詢》公眾號▼
▼掃碼讚賞▼