1. 程式人生 > >多重檢驗中的FDR錯誤控制方法與p-value的校正及Bonferroni

多重檢驗中的FDR錯誤控制方法與p-value的校正及Bonferroni

    資料分析中常碰見多重檢驗問題 (multiple testing).Benjamini於1995年提出一種方法,通過控制FDR(False Discovery Rate)來決定P值的域值. 假設你挑選了R個差異表達的基因,其中有S個是真正有差異表達的,另外有V個其實是沒有差異表達的,是假陽性的.實踐中希望錯誤比例Q=V/R平均而言不能超過某個預先設定的值(比如0.05),在統計學上,這也就等價於控制FDR不能超過5%.
根據Benjamini在他的文章中所證明的定理,控制fdr的步驟實際上非常簡單。
設總共有m個候選基因,每個基因對應的p值從小到大排列分別是p(1),p(2),...,p(m),則若想控制fdr不能超過q,則只需找到最大的正整數 i,使得 p(i)<= (i*q)/m.然後,挑選對應p(1),p(2),...,p(i)的基因做為差異表達基因,這樣就能從統計學上保證fdr不超過q。

The False Discovery Rate (FDR) of a set of predictions is the expected percent of false predictions in the set of predictions. For example if the algorithm returns 100 genes with a false discovery rate of .3 then we should expect 70 of them to be correct.

The FDR is very different from a p-value, and as such a much higher FDR can be tolerated than with a p-value. In the example above a set of 100 predictions of which 70 are correct might be very useful, especially if there are thousands of genes on the array most of which are not differentially expressed. In contrast p-value of .3 is generally unacceptabe in any circumstance. Meanwhile an FDR of as high as .5 or even higher might be quite meaningful.

計算方法 請參考:

> p<-c(0.0003,0.0001,0.02)
>  p
[1] 3e-04 1e-04 2e-02
>
> p.adjust(p,method="fdr",length(p))
[1] 0.00045 0.00030 0.02000
>
> p*length(p)/rank(p)
[1] 0.00045 0.00030 0.02000
> length(p)
[1] 3
> rank(p)
[1] 2 1 3
 sort(p)
[1] 1e-04 3e-04 2e-02

1) P-value 是 (在H0 = true的情況下)得到和試驗資料一樣極端(或更極端)的統計量的概率. 它不是H1發生的概率. 假定吃蘋果的一組和不吃蘋果的一組的差異為D, P-value=0.2的意思是, pure randomly (即H0=true)的情況下, 觀察到和D一樣或比D更大的差異的概率是20%.

2) p-value 的本質是控制PFR (false positive rate), hypothesis test 的目的是make decision. 傳統上把小概率事件的概率定義為0.05或0.01, 但不總是這樣. 主要根據研究目的. 在一次試驗中(注意:是一次試驗, 即single test), 0.05 或0.01的cutoff足夠嚴格了(想象一下, 一個口袋有100個球, 95個白的, 5個紅的, 只讓你摸一次, 你能摸到紅的可能性是多大?). 我剛才強調的是single test, 在multiple test中, 通常不用p-value, 而採用更加嚴格的q-value. 與p-value 不同, q-value 控制的是FDR (false discovery rate).

3)舉個例子.假如有一種診斷艾滋病的試劑, 試驗驗證其準確性為99%(每100次診斷就有一次false positive). 對於一個被檢測的人(single test) 來說, 這種準確性夠了. 但對於醫院 (multiple test) 來說, 這種準確性遠遠不夠, 因為每診斷10 000個個體, 就會有100個人被誤診為艾滋病.

4)總之, 如果你很care false positive, p-value cutoff 就要很低. 如果你很care false negative (就是"寧可錯殺一千, 也不能漏掉一個" 情況), p-value 可以適當放鬆到 0.1, 0.2 都是可以的.
*******************

Multiple testing的問題最近越來越火了:)

其實我一直有一個問題,從Benjamini開始,現在FDR的控制方法不下10種,為什麼Storey的是最流行的?實際應用起來除了Benjamini的方法,其它所有的方法基本上都是一樣的。q-value究竟是如何脫穎而出的呢?

q-value 是隨著multipel test 而產生的. 在multiple test (比如10000次), 如果用p-value=0.05去cut. 如果有1000次是顯著的, 那麼在這1000中, 有10000*0.05=500次是 False positive. 這顯然不能接受. 太寬鬆了.

Bonferroni提出FWER, 在上面的例子中, 就是把cutoff 設為: 0.05/10000 = 0.000005, 這雖然能控制False Positive, 但這隻在極少數情況下有用. 因為太嚴格了, 大量的true alternatives 被miss掉了

q-vlaue 實際上是上述兩種方法的折衷. 既能控制FP, 有不會miss掉太多的true alternatives.

For details see Storey's paper published ON PNAS (2003).

*************************

贊同:)不過我的問題並不是關於FWER,而是關於FDR的控制。Benjamini and Hochberg在1995年第一次提出了FDR的概念,其出發點就是基於Bonferroni的保守性,並給出了控制FDR的方法(這算是FDR控制方 法的祖師爺了)。不過他們的方法也有其保守性。所以隨後人們開始研究更加powerful的方法,現有的方法有Storey的, Broberg的,Dalmasso的,Guan的,Strimmer的等等等等。Benjamini的方法是將FDR控制在一個level以下,而之後 所有的方法都在試圖精確地估計FDR。所以後來的這些方法都要powerful一些。不過他們所付出的代價就是robustness。

現有FDR控制方法最大的弊端在於,他們假設p-value's under the null hypothesis是(1)independent(2)following uniform (0,1) distribution. 這兩點假設從實際觀察到的資料來看經常是不合理的,尤其是第二點。(順便提一句,Storey和Leek在07年的PLOS Genetics發表了一篇文章專門解決第二個假設的合理性問題,很牛,有興趣可以看一下)

我現在的問題是:Storey的方法沒有比後來出現的其它方法更精確,在robustness方面也沒有體現其優越性。它究竟是怎麼獲勝的?為什麼它是最流行的FDR control procedure?

From: http://cos.name/cn/topic/13846

Bonferroni校正   
如果在同一資料集上同時檢驗n個獨立的假設,那麼用於每一假設的統計顯著水平,應為僅檢驗一個 假設時的顯著水平的1/n。舉個例子:如要在同一資料集上檢驗兩個獨立的假設,顯著水平設為常見的0.05。此時用於檢驗該兩個假設應使用更嚴格的 0.025。即0.05* (1/2)。該方法是由Carlo Emilio Bonferroni發展的,因此稱Bonferroni校正。   這樣做的理由是基於這樣一個事實:在同一資料集上進行多個假設的檢驗,每20個假設中就有一個可能純粹由於概率,而達到0.05的顯著水平。   
維基百科原文:   
Bonferroni correction   Bonferroni correction states that if an experimenter is testing n independent hypotheses on a set of data, then the statistical significance level that should be used for each hypothesis separately is 1/n times what it would be if only one hypothesis were tested.   For example, to test two independent hypotheses on the same data at 0.05 significance level, instead of using a p value threshold of 0.05, one would use a stricter threshold of 0.025.   The Bonferroni correction is a safeguard against multiple tests of statistical significance on the same data, where 1 out of every 20 hypothesis-tests will appear to be significant at the α = 0.05 level purely due to chance. It was developed by Carlo Emilio Bonferroni.   A less restrictive criterion is the rough false discovery rate giving (3/4)0.05 = 0.0375 for n = 2 and (21/40)0.05 = 0.02625 for n = 20.   
資料分析中常碰見多重檢驗問題(multiple testing).Benjamini於1995年提出一種方法,通過控制FDR(False Discovery Rate)來決定P值的域值. 假設你挑選了R個差異表達的基因,其中有S個是真正有差異表達的,另外有V個其實是沒有差異表達的,是假陽性的.實踐中希望錯誤比例Q=V/R平均而言不 能超過某個預先設定的值(比如0.05),在統計學上,這也就等價於控制FDR不能超過5%.   根據Benjamini在他的文章中所證明的定理,控制fdr的步驟實際上非常簡單。   設總共有m個候選基因,每個基因對應的p值從小到大排列分別是 p(1),p(2),...,p(m),則若想控制fdr不能超過q,則只需找到最大的正整數i,使得 p(i)<= (i*q)/m.然後,挑選對應p(1),p(2),...,p(i)的基因做為差異表達基因,這樣就能從統計學上保證fdr不超過q。   The False Discovery Rate (FDR) of a set of predictions is the expected percent of false predictions in the set of predictions. For example if the algorithm returns 100 genes with a false discovery rate of .3 then we should expect 70 of them to be correct.   The FDR is very different from a p-value, and as such a much higher FDR can be tolerated than with a p-value. In the example above a set of 100 predictions of which 70 are correct might be very useful, especially if there are thousands of genes on the array most of which are not differentially expressed. In contrast p-value of .3 is generally unacceptabe in any circumstance. Meanwhile an FDR of as high as .5 or even higher might be quite meaningful.   FDR錯誤控制法是Benjamini於1995年提出一種方法,通過控制FDR(False Discovery Rate)來決定P值的域值. 假設你挑選了R個差異表達的基因,其中有S個是真正有差異表達的,另外有V個其實是沒有差異表達的,是假陽性的。實踐中希望錯誤比例Q=V/R平均而言不 能超過某個預先設定的值(比如0.05),在統計學上,這也就等價於控制FDR不能超過5%.   對所有候選基因的p值進行從小到大排序,則若想控制fdr不能超過q,則只需找到最大的正整數 i,使得 p(i)<= (i*q)/m.然後,挑選對應p(1),p(2),...,p(i)的基因做為差異表達基因,這樣就能從統計學上保證fdr不超過q。因此,FDR的計 算公式如下:   q-value(i)=p(i)*length(p)/rank(p)   
參考文獻:   
1.Audic, S. and J. M. Claverie (1997). The significance of digital gene expression profiles. Genome Res 7(10): 986-95.   
2.Benjamini, Y. and D. Yekutieli (2001). The control of the false discovery rate in multiple testing under dependency. The Annals of Statistics. 29: 1165-1188.