多重假設檢驗與Bonferroni校正、FDR校正

總結起來就三句話:
(1)當同一個數據集有n次(n>=2)假設檢驗時,要做多重假設檢驗校正
(2)對於Bonferroni校正,是將p-value的cutoff除以n做校正,這樣差異基因篩選的p-value cutoff就更小了,從而使得結果更加嚴謹
(3)FDR校正是對每個p-value做校正,轉換爲q-value。q=p*n/rank,其中rank是指p-value從小到大排序後的次序。
舉一個具體的實例:
我們測量了M個基因在A,B,C,D,E一共5個時間點的表達量,求其中的差異基因,具體做法:
(1)首先做ANOVA,確定這M個基因中有哪些基因至少出現過差異
(2)5個時間點之間兩兩比較,一共比較5*4/2=10次,則多重假設檢驗的n=10
(3)每個基因做完10次假設檢驗後都有10個p-value,做多重假設檢驗校正(n=10),得到q-value

(4)根據q-value判斷在哪兩組之間存在差異


通過T檢驗等統計學方法對每個蛋白進行P值的計算。T檢驗是差異蛋白表達檢測中常用的統計學方法,通過合併樣本間可變的數據,來評價某一個蛋白在兩個樣本中是否有差異表達。
但是由於通常樣本量較少,從而對總體方差的估計不很準確,所以T檢驗的檢驗效能會降低,並且如果多次使用T檢驗會顯著增加假陽性的次數。
例如,當某個蛋白的p值小於0.05(5%)時,我們通常認爲這個蛋白在兩個樣本中的表達是有差異的。但是仍舊有5%的概率,這個蛋白並不是差異蛋白。那麼我們就錯誤地否認了原假設(在兩個樣本中沒有差異表達),導致了假陽性的產生(犯錯的概率爲5%)。
如果檢驗一次,犯錯的概率是5%;檢測10000次,犯錯的次數就是500次,即額外多出了500次差異的結論(即使實際沒有差異)。爲了控制假陽性的次數,於是我們需要對p值進行多重檢驗校正,提高閾值。

方法一.Bonferroni
“最簡單嚴厲的方法”
例如,如果檢驗1000次,我們就將閾值設定爲5%/ 1000 = 0.00005;即使檢驗1000次,犯錯誤的概率還是保持在N×1000 = 5%。最終使得預期犯錯誤的次數不到1次,抹殺了一切假陽性的概率。
該方法雖然簡單,但是檢驗過於嚴格,導致最後找不到顯著表達的蛋白(假陰性)。
方法二.FalseDiscovery Rate
“比較溫和的方法校正P值”
FDR(假陽性率)錯誤控制法是Benjamini於1995年提出的一種方法,基本原理是通過控制FDR值來決定P值的值域。相對Bonferroni來說,FDR用比較溫和的方法對p值進行了校正。其試圖在假陽性和假陰性間達到平衡,將假/真陽性比例控制到一定範圍之內。例如,如果檢驗1000次,我們設定的閾值爲0.05(5%),那麼無論我們得到多少個差異蛋白,這些差異蛋白出現假陽性的概率保持在5%之內,這就叫FDR<5%。
那麼我們怎麼從p value 來估算FDR呢,人們設計了幾種不同的估算模型。其中使用最多的是Benjamini and Hochberg方法,簡稱BH法。雖然這個估算公式並不夠完美,但是也能解決大部分的問題,主要還是簡單好用!
FDR的計算方法
除了可以使用excel的BH計算方法外,對於較大的數據,我們推薦使用R命令p.adjust。


1.我們將一系列p值、校正方法(BH)以及所有p值的個數(length(p))輸入到p.adjust函數中。
2.將一系列的p值按照從大到小排序,然後利用下述公式計算每個p值所對應的FDR值。
公式:p * (n/i), p是這一次檢驗的pvalue,n是檢驗的次數,i是排序後的位置ID(如最大的P值的i值肯定爲n,第二大則是n-1,依次至最小爲1)。
3.將計算出來的FDR值賦予給排序後的p值,如果某一個p值所對應的FDR值大於前一位p值(排序的前一位)所對應的FDR值,則放棄公式計算出來的FDR值,選用與它前一位相同的值。因此會產生連續相同FDR值的現象;反之則保留計算的FDR值。
4. 將FDR值按照最初始的p值的順序進行重新排序,返回結果。
最後我們就可以使用校正後的P值進行後續的分析了。

發佈了21 篇原創文章 · 獲贊 36 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章