小教程收藏生物信息学习R语言 生信

多重假设检验的三种常见方法计算

2020-05-12  本文已影响0人  生信编程日常

一般来说,当p.value < 0.05时,我们认为犯错误的概率很低,可以否定原假设。但是假如我们做了很多次实验,比如10000次,那么犯错误的次数可能能达到500次,我们要规避这么多的假阳性结果,就需要考虑多重假设检验。

1. Bonferroni法

Bonferroni是最粗暴简单的方法,当 P value ≤ α/N时,拒绝H0。理念是将阈值降低,尽量杜绝假阳性的存在,弊端就是可能会由于阈值太严格而导致阳性结果太少。

比如,有10000次实验时,当 P value为0.05/10000 = 5e-6的时候,才有统计显著性。

2. Holm法

其公式为:



target alpha level一般为0.05,横轴中的rank是从小到大排序之后的序号。

比如:


图中第四列alpha/m是Bonferroni法,第五列就是Holm法。图中的k就是排名,当原始p值 < alpha / (m - k + 1) 的值时,我们认为Holm校正之后仍然显著。即原始p为0.003,0.005,0.012时显著。

在R中调用Holm方法:

p.adjust(c(0.003, 0.005, 0.012, 0.04, 0.058), method = 'holm')

输出:0.015 0.020 0.036 0.080 0.080

R中的结果是由于要直观的与0.05 (alpha) 比较,所以输出的值其实就是 p * (m - k + 1);当出现第一个不显著的p值时(0.080),则后边的结果都是这个值了。

3. BH法

公式为:p * (n/i)。n是总数,i是从小到大排序的名次。

p.adjust(c(0.003, 0.005, 0.012, 0.04, 0.058), method = 'BH')

输出:0.0125 0.0125 0.0200 0.0500 0.0580 ; 前四位显著。

另外有时候会出现相同p值的情况,比如:

p.adjust(c(0.003, 0.005, 0.012, 0.04, 0.058, 0.06), method = 'fdr')

输出: 0.015 0.015 0.024 0.060 0.060 0.060
前两位数和后两位数一样。这是因为最后一位计算出来为0.060, 但是倒数第二位直接计算是0.0696,如果数值比最后一位还要大的话,则赋值为上一位,即0.060。前两位数也是同理 (避免出现原始p值更小但是校正后更大的情况)。

参考:http://www.compbio.dundee.ac.uk/user/mgierlinski/talks/p-values1/p-values8.pdf

上一篇下一篇

猜你喜欢

热点阅读