最近用limma作差異分析,接觸p.value和adj.p.value比較多,今天就重點解釋下p.value和FDR吧:
在topTable函數的結果裡,我們都會看到p.value和adj.p.value:不得不提假設檢驗:其實上一篇提到了這一part;
這裡不再贅述,只說下對H0和H1的一個較好的解釋:
p.adjust(p, method = p.adjust.methods, n = length(p))
> head(tT)
logFC AveExpr t P.Value adj.P.Val B
ENSG00000129159.6 5.781884 0.2374425 13.54654 7.193427e-25 6.484393e-21 46.00225
ENSG00000139445.13 6.651408 -1.2961424 13.51254 8.523124e-25 6.484393e-21 45.74851
ENSG00000175175.4 4.901581 1.1389013 13.09707 6.834505e-24 3.466461e-20 43.80622
ENSG00000072832.10 4.746913 4.7398309 12.76099 3.726586e-23 1.098270e-19 42.10851
ENSG00000224621.1 -4.624916 -2.9418765 -12.79910 3.072963e-23 1.098270e-19 41.98058
ENSG00000267746.1 5.580776 -4.9319911 12.73131 4.330718e-23 1.098270e-19 41.74255
> dim(tT)
[1] 15216 6
> head(p.adjust(tT$P.Value,method='BH'))
[1] 6.484393e-21 6.484393e-21 3.466461e-20 1.098270e-19 1.098270e-19 1.098270e-19
> p.adjust(tT$P.Value[1],method='BH')
[1] 7.193427e-25
總計m次檢驗的結果按由小到大進行排序,k為其中一次檢驗結果的P值所對應的排名;
找到符合原始閾值α的最大的k值,滿足P(k)<=α*k/m,認為排名從1到k的所有檢驗存在顯著差異,並計算對應的q值公式為q = p*(m/k),q值即FDR;
若後一個FDR小於前一個FDR,則以前一位的計算結果為FDR,所以會在結果中看到相同的數值;
【參考內容】
1.https://scientistseessquirrel.wordpress.com/2015/02/09/in-defence-of-the-p-value/
2.https://zhuanlan.zhihu.com/p/51546651