浅议P值校正

2018-04-08 15:50:41 浏览数 (1)

P值,通常被我们用来判断是否接受一个假设,关于P值的前世今生,可以看数说君的了一篇文章《P值之死》,在微信公众号中回复“P值”查看。本篇不说P值本身的问题,我们来看它在具体判断中可能出现的另一个问题。

本文目录为:

一、背景

二、问题

三、Bonferroni校正

四、FDR校正


一、背景

先来熟悉一下我们问题的背景。我们知道在假设检验中,有两种错误:拒真错误和取伪错误。

我们用分布图来更形象的说明,不要紧张,非常形象非常好懂的。现在有一些样本,我们打算判断这些样本是来自H0还是H1,。那么

  • 原假设: H0:u=0;
  • 备择假设:H1:u>0

两个假设下的总体分布如下图:

好了,那么什么是第一类错误和第二类错误呢?

(看不清楚的话点开查看大图)

对了——通过样本得到的Z-value如果大于Zα,我们一般都拒绝原假设,但是它却有一定概率(概率为α)来自H0的,这就是第一类错误,见红字部分。第二类错误就是β,见绿字部分,下面重点是围绕第一类错误α展开,因为它是个大咖。

这个α,我们又把它叫做——显著性水平!假设检验就那这个作为标准。

为什么呢?

一般在做假设检验的时候都要求这个α尽可能的小,因为在假设检验我们通常认为原假设是不能轻易被否定的。

我们的P值就是跟这个标准做比较,我们通常把α取为0.05,复习一下吧:

  • P<α=0.05,则拒绝H0;
  • P>α=0.05,不能拒绝H0;

这个标准,意味着我们要承担α=5%的错误拒绝的概率。

至于P值是怎么来的,为什么用P值和α相比来判断,可以去看《P值之死》,里面已经进行了详细的梳理。

二、问题

虽然数说君已经在《P值之死》中批判过了这种P与α判断方法的问题,但在这里,我们就认为这种方法是合理的。

对于一个检验问题:

  • 我们有5%概率犯第一类错误;
  • 也就是说,有95%的概率不犯第一类错误(不要打我,这不是废话);

假如现在,我要做20个相互独立的检验呢?

  • 不犯第一类错误的概率为 (1-5%)20 =36%
  • 至少出现一次第一类错误的概率为 1-36%=64%

这么大的概率让人难以接受,如果随着m再增加呢,要做100次?1000次?那么几乎可以肯定的说,必然会有至少1个结果是被错误地拒绝的了。

想象一下,你得意洋洋的看着你的100个检验结果,但是突然告诉你这100个里面必然有一个错了,而且你又不知道具体哪个是错的。。。

你可能会说,自打接触统计学这东西一来,对假设检验是能躲就躲能逃就逃,人生截止目前做过不超过10个检验,每一次做都要翻2个小时的书,现在你要我一次性做100个?没但玩?

有但玩。真的,比如现有下面这组数据,我们想分析X1-X20中,哪一个因素和人们的收入有显著关系:

我们做了20个检验,那么这里面就很可能有一个是碰巧显著。你可不要觉得我吃饱了撑的,因为在生物学中,我们要做更大的全基因组关联分析——全基因组?什么概念?——需要对几十万甚至几百万个SNP(单核苷酸多态性)与某个疾病进行单独检验,找出那个与疾病显著相关的SNP,也就是说,要做几百万个检验?!

怎么办???

我们把这个“至少有1个错误”的概率称为 FWER(Family-Wise Error Rate)

FWER (Family-Wise Error Rate)

= 1- (1- α)m

我们现在就想让这个整体犯第一类错误的概率降低为5%,怎么办?

Bonferroni校正的思想就是基于此而来。

三、Bonferroni校正

Bonferroni校正的思想很简单:

Bonferroni correction

假设我们做m个相互独立的检验,我要的目标是—— FWER = 1- (1- α)m =0.05 由于当α很小时,存在这一的近似关系 (1-α)m ≈ 1-ma,因此 1- (1- α)m = ma = 0.05 即α=0.05/m。 也就是说,每一个检验的显著水平不再是0.05了,而应该是0.05/m。对于每一个检验的P值,有:

  • P<α=0.05/m,我们才能拒绝H0;

这样我们就校正了显著水平,当然我们也可以让α保持不变,去校正P值:

  • P*m<α=0.05,我们才能拒绝H0;

也就是说,每一个检验做出来的P值,我们都要乘以m,叫做校正后的P值,然后去和0.05进行比较。

但是,随着检验次数m的增多,

  • 校正后的P值会越来越大,判定的标准越发的严格;
  • 同时,第一类错误概率是减少了,第二类错误的概率却增加了。

针对这样的问题,Benjaminiand Hochberg(1995) 提出了FDR校正方法。

四、FDR校正

Bonferroni校正关注的是,所有检验中的第一类错误检验(被错误拒绝的检验),而FDR的关注的是,所有拒绝掉的检验中,错误拒绝的检验,如果觉得绕口的话可以看下面的图:

一共有m个检验,其中最终选择接受原假设的有W个,拒绝的有R个,在拒绝的R个中,有V个是错误拒绝的,有S个是正确拒绝的。

FDR(Falsely Discovery Rate)的定义为:

实际上,FDR也就是错误拒绝的检验个数,占所有拒绝的检验个数的比例。它只关注所有拒绝掉的检验中,错误拒绝的比例,FDR的目的就是要将这个比例降低到α。

那么,该如何做到?很简单,参照下面的步骤即可:

FDR correction

首先,对m个p值按从小到大的顺序进行排序

从P(1)开始,到P(2)、P(3) ...,挨个进行比较,直到找到最大的P(i)满足:

找到之后,拒绝之前所有的原假设H(i),i=1,2,3...i。 至此,完成FDR的校正。 或者,保持α不变,将P值校正为mP(i)/i,这个值又称为Q值 Q-value(i) = m × P(i)/i < α

根据Benjaminiand和Hochberg的论文(1995)里的证明, 以上的过程就可以控制FDR在α以内。感兴趣的可以搜索这篇论文”controlling the False Discovery Rate: a Practical and Powerful Approach to Multiple Testing“。

举个例子吧,加入我们做个20个检验,每个检验有一个P值,那么我们分别用Bonferroni校正和FDR校正,得到的结果如下:

可以看出Bonferroni校正的结果要严格很多,FDR则比较中肯。

0 人点赞