多重假设检验与校正

目录

一、多重假设检验问题

 二、方法

1、Bonferroni校正

2、FalseDiscovery Rate (FDR校正)


参考链接:https://blog.csdn.net/zhu_si_tao/article/details/71077703

一、多重假设检验问题

举一个具体的实例:

我们测量了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值进行多重检验校正,提高阈值。

如果我们考虑一组假设检验同时进行,则产生一次或多次假阳性的概率称为总体第一类错误率如果进行一次比较,则出现假阳性的概率为α;如果进行m次相互独立的比较,则出现至少一次假阳性的概率,即总体第一类错误率是1-(1-α)^m当m取值较大时,即便两种条件下样本之间没有任何显著差异,被检测出一个或多个假阳性的概率还是很大的,并不能保证在显著性水平α下,这就是所谓的多重比较问题

 二、方法

1、Bonferroni校正

“最简单严厉的方法”

例如,如果检验1000次,我们就将阈值设定为5%/ 1000 = 0.00005;即使检验1000次,犯错误的概率还是保持在N×1000 = 5%。最终使得预期犯错误的次数不到1次,抹杀了一切假阳性的概率。

通过Boole不等式可以证明这以结论:

Bonferroni校正通过将显著性水平\alpha降低到\alpha /m的方式,严格控制总体第一类错误率。

Bonferroni校正是对总体第一类错误率的一种强控制。

该方法虽然简单,但是检验过于严格,导致最后找不到显著表达的蛋白(假阴性)。

2、FalseDiscovery Rate (FDR校正)

“比较温和的方法校正P值”(弱控制方法)

FDR校正方法是Benjamini和Hochberg于1995年提出了一种多重比较校正的方法。其实,FDR具体的算法也有多种,如Storey法(由Storey等人提出)、Benjamini-Hochberg法(简称BH法)等。其中BH法目前应用最广,这里主要介绍这种方法的基本原理。

基本原理是通过控制FDR值来决定P值的值域。相对Bonferroni来说,FDR用比较温和的方法对p值进行了校正。其试图在假阳性和假阴性间达到平衡,将假/真阳性比例控制到一定范围之内。例如,如果检验1000次,我们设定的阈值为0.05(5%),那么无论我们得到多少个差异蛋白,这些差异蛋白出现假阳性的概率保持在5%之内,这就叫FDR<5%。

那么我们怎么从p value 来估算FDR呢,人们设计了几种不同的估算模型。其中使用最多的是Benjamini and Hochberg方法,简称BH法。虽然这个估算公式并不够完美,但是也能解决大部分的问题,主要还是简单好用!

基于BH法的FDR校正过程:

第一步:将我们单独统计得到的一系列的p=[p1,p2,…,pn]从大到小进行重新排序,计为P=[P1,P2,…,Pn];

第二步:按照以下公式计算每个P值所对应的校正前的FDR值,这里称之为Q值:Q = Pi* (n/r),Pi表示P中元素值,n是P值个数,r依次为n,n-1,…,1。

第三步:对Q进行校正,得到FDR值。对于计算出来的Q=[Q1,Q2,…,Qn],若某一个Qi值大于前一位Qi-1值,则把Qi的值赋值为Qi-1;反之则保留相应的Q值。最终得到Q值称之为校正后的FDR值。

第四步:按照重排序之前的顺序返回各个p值对应的校正后的FDR值。

例子:假设p=[0.01, 0.005, 0.03, 0.03, 0.02, 0.04, 0.05],计算相应的校正后的FDR值。

笔者按照上述步骤,自行编制相应的Matlab程序,计算过程和结果如下:

按照上述第一步步骤,计算得到P=[0.0500, 0.0400, 0.0300, 0.0300, 0.0200, 0.0100, 0.0050];

按照第二步中的方法,计算得到Q=[0.0500, 0.0467, 0.0420, 0.0525, 0.0467, 0.0350, 0.0350];

按照第三步:得到校正后的FDR值为:FDR=[ 0.0500, 0.0467, 0.0420, 0.0420, 0.0420, 0.0350, 0.0350];

最后,转换成原来的顺序:FDR=[0.0350, 0.0350, 0.0420, 0.0420, 0.0420, 0.0467, 0.0500].

对于本例来说,如果总体的显著性水平设置为0.05,那么从得到的最后的FDR值来说,这几个p值都具有显著性差异。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值