StatQuest学习笔记11——p值详解

前言

这篇笔记主要是讲p值的,它是StatQuest视频教程的第33节,第34节,第35节,第37节的内容(跳过36是因为36讲的是FDR,专门写一篇笔记)。其中第33节的内容为什么是p值,p值的计算;第34节的内容是单尾检测与双尾检验,第35节的内容是作者直接以视频形式进行的讲解,内容是关于p值的阈值,无课件,略去;第37节的内容是p值挟持(p-hacking)与功效检验(power)。

什么是概率

人们通常认为,p值的意思就是概率(probability),p值与概率确实有关,但是它们并不相同,我们先看一个简单的例子。

我们抛两次硬币,第1次,正面朝上的概率是50%,反面朝上的概率是50%。第2次,正面朝上的概率还是50%,反面朝上的概率还是50%,此时我们提出两个问题;

  1. 连续抛2次硬币,出现2次正面朝上的概率是多少?
  2. 连续抛2次硬币,出现2次正面朝上的这个事件的p值是多少?如下所示:

先看第1个问题,出现2次正面朝上的概率是多少,为了方便讲解,我们用H(head)表示正面,用T表示反面(Tails),抛2次硬币,会出现4个结果,分别为:

结果1:第1次正面,第2次正面;

结果2:第1次正面,第2次反面;

结果3:第1次反面,第2次正面;

结果4:第1次反面,第2次反面,如下所示:

这4结果出现的概率上是相等的,我们的计算过程如下所示:

此时,我们就知道了,出现2次正面朝上的概率是0.25。此时我们再看一下出现2次反面朝上的概率,计算过程如下所示:

此时的结果也是0.25,它与2次正面朝上的概率是一样的。此时我们再计算一下,抛2次硬币,1次正面朝上,一次反面朝上的概率,如下所示:

一面朝上,一面朝下的概率是0.5。在这个案例中,我们并没有考虑正面与反面的顺序,为什么不考虑呢?因为通常来说,我们所说的,抛两次,一面朝上,一面朝下,就包括第1次正面朝上,第2次反面朝上和第1次反面朝上,第2次正面朝上这两种情况,并且它们之间互不影响。例如我们在研究小鼠的体重时,有2只小鼠,先测哪只小鼠的体重都可以,两只小鼠的体重互不影响,如下所示:

一个生物学的案例

我们假设H(红色)是一个等位基因,T(蓝色)是另外一个等位基因。在下面的图片中,分别是一对夫妇的等基因情况,他们是杂合子,其中母亲的等位基因情况是HT,父亲的等位基因也是HT,那么他们后代中基因为HH的概率是0.25,如下所示:

如果母亲是纯合子(homozygote),父亲是杂合子(heterozygote),那么他们后代中出现HH的概率则是0.5,计算过程如下所示:

什么是p值

p值就是生成某数据的随机机率(random chance),或者说是跟这个随机机率相同或者是更小机率的值,原文如下所示:

a p-value is the probability that random chance generated the data, or something else that is equal or rarer。

现在把这段话拆成3个部分,如下所示:

第一部分:a p-value is the probability that random chance generated the data

这句话是讲,p值是你所观察到的,能够随机生成这些数据的概率。在上面的这个案例中,就是0.25,如下所示:

第二部分:or something else that is equal。这句话是讲,跟得到这个结果相同的概率的事件,在上面的这个案例中,就是说TT的概率与HH的概率是相同的,如下所示:

计算一下,这个概率是0.25,如下所示:

第三部分:or rarer,这个意思是说,出现某个更小概率的事件,由于在前面的案例中,没有其它的事件,因此这一部分就是0,如下所示:

综上可知, HH的p值为0.5,如下所示:

现在总结一下这个案例:

HH的概率是0.25,而HH的p值为0.5,这两个值不相同,如下所示:

一个稍微复杂的案例

这里再介绍一个稍微复杂的案例,这个案例还是以硬币为例进行说明,在这个案例中,我们抛5次硬币,求一下每次都是正面朝上的概率,那么它的公式就是如下所示:

我们画出这5次的所有可能结果(话统计学术语叫样本空间),如下所示:

其中连续5个H(就是5次正面朝上)就是我们感兴趣的事件,如下所示:

如果是4次正面朝上,就是下面的这个样子:

如果是3次正面,2次反面,就是这个样子:

如果是3次反面,2次正面,就是这个样子:

其余的就不列出了。最终的事件是32个,那么其中5次都是正面朝上的事件只有1个,它的概率就是1/32,如下所示:

经计算可得1/32=0.03125,如下所示:

此时我们计算一下5次正面朝上的p值,关于p值的定义,我们再回顾一下前面的定义:

a p-value is the probability that random chance generated the data, or something else that is equal or rarer.

而在这个案例中,没有比5次正面朝上更小的事件了,因此我们可以忽略or rarer事件,如下所示:

那么,在这个案例中,p值是随机产生这些事件的概率或者是与同样产生该概率的事件,那么此时出现5次正面朝上的概率就是1/32,再加上同样产生该概率的其它事件,也就是5次反面朝上的概率,也是1/32,那么加起来就是1/32+1/32,如下所示:

最终的结果是,p值为0.0625。

此时我们再计算一种情况,即得到4次正在朝上与1次反面朝上的概率,如下所示:

经计算可得5/32=0.15625,如下所示:

那么我们此时计算一下它的概率(4次正面朝上,1次反面朝上),我们再回顾一下p值的定义:

a p-value is the probability that random chance generated the data, or something else that is equal or rarer.

根据定义,p值是由3部分构成的:

第1部分:随机产生这个事件的概率;

第2部分:产生与该事件相同概率的其他事件;

第3部分:产生比该事件的概率更小的事件。

由于比4次正面朝上,1次反面朝上更小的概率是5次都是正面,或5次都是反面朝上,那么4次正面朝上,1次反面朝上的p值需要加上5次都正面或5次都反面的概率,如下所示:

因此最终的p值计算结果就是下面的这个公式:

计算的结果为0.375,如下所示:

连续型变量的p值

抛硬币数正面与反面的这种数据我们可以称它们为离散型数据(例如结果中只能是1,2,3,4,5,不可能是1.1,3.145),但还有一类数据,例如身高,可以是175.2,174.3,也可以是174.456,它们带有小数点,可以表示连续型的数据(连续型的数据我的理解是可以无限划分,例如身高可以说是176.5,也可以是176.666,但硬币抛5次,你不能说有1次是1.1次正面朝上,3.145次正面朝上),它们是连续型数据变量。对于抛硬币,我们可以列出所有的5次硬币抛后的结果,但是,对于身高这种概率,如何计算呢,先列出来吗?如下所示:

如果是这样的话,那么我们如何处理小数点后面的数字呢,如下所示:

对于这类数据,我们可以用一种“密度”(density)来替代它们,如下所示:

例如,我们下面的这个数据,这批数据是1996年,巴西女性15岁到49岁之间的身高数据:

这个曲线下的面积,也就是说红色部分表示了一个人的身高在这个范围内的概率,如下所示:

其中,142cm到169cm这个范围在曲线下的面积是95%,换句话讲,如果我们每次测量一个人的身高,它们有95%的可能性在142cm到169cm之间,如下所示:

继续看看这个案例,大于169cm的范围与曲线所围成的面积是2.5%,这也就是说,如果我们测量一个巴西的女性,它有2.5%的概率身高高于169cm,如下所示:

同时,小于142cm的范围与曲线围成的面积是2.5%,如下所示:

为了计算p值,我们需要把曲线下的面积加起来,还是按照前面p值的定义,再来回顾一下:

a p-value is the probability that random chance generated the data, or something else that is equal or rarer.

也就是说,p值是得到该事件的概率,以及与出现相同概率事件的概率,以及比该事件的概率还要小的事件的概率的之和,也就是说p值是由3部分构成的(前面已经说过了)。

例如我们要计算某些人身高是142cm的p值,那么它的p值就是低于142cm的概率加上大于169cm的概率,下图就是低于142cm的概率:

再加上身高大于169cm的概率(2.5%),最终的p值就是0.05,如下所示:

再继续看这个案例,我们此时计算一下身高在155.4到156cm之间的人的概率,由于这两个数字之间只差0.04,那么代表这个范围的身高的人的概率,也就是说它们的曲线下面积基本就相当于一条红线了,非常窄,如下所示:

上图显示的红色只是大于155.4,小于156身高的人的概率(注意,这里是概率,是probability,不是p值)。

此时我们再计算一个身高范围是155.4到156之间的人的p值,根据定义,还是如下所示:

a p-value is the probability that random chance generated the data, or something else that is equal or rarer

p值是由3部分构成的(前面已经讲过),分别是①某事件的概率,加上②与该事件相同概率的事件的概率,再加上③比该事件概率更小的事件的概率。我们分两步来计算p值,如下所示(需要注意的是,155.4与156正好位于正态分布曲线均值的两侧,因此小于155.4身高的人的概率与大于156身高的人的概率是相同的):

第一步:计算小于155.4cm身高的人的概率,下图的红色面积就是身高小于155.4cm的人的概率,它的值是48%,如下所示:

第二步:计算身高大于156cm的人的概率,就是下面右侧红色的面积,也是48%,如下所示:

那么,身高位于155.4和156之间的人的概率就是4%,如下所示:

根据p值的定义,那么p值就等于48%+48%+4%=100%,,也就是说p值是1,这是一个非常大的数字,如下所示:

在这个案例中,我们知道了,155.4到156身高之间的人的概率是4%,但它的p值很大,是1。

单尾检验与双尾检验

现在考虑一个场景,你是一名医生,你现在开发了一种新型的癌症治疗方案,你希望你的这种新型治疗方案比标准的治疗方案要好,你做了一个小型临床实验,样本是6个病人,以下是数据:

其中红点表示新型治疗方案,黑点表示标准治疗方案,数轴表示从好到差。我们可以发现新型的治疗方案貌似比标准的治疗方案要好,如下所示:

但是,中间貌似有一个黑点(也就是标准治疗方案)处于中间位置,不知道是好,还是差,如下所示:

然后你进行了统计,选择了单尾检验,p值为0.03,这个p值是小于0.05的,也就是说这种新型治疗方案有统计学意义,如下所示:

但是,当你选择了双尾检验时,发现p值为0.06,它又是大于0.05的,没有统计学差异,此时,你选择使用哪个p值?如下所示:

这里要说一下,单尾检验(one-tailed)的假设是你的新型方案比标准方案要好,而双尾检验的假设是新型方案比标准方案要好,也有可能更差,或者是说没有统计学差异。而单尾检验的p值更小这是因为单尾检验并没有区分“更差”与“没有统计学差异”这两种结果,它的假设是新型方案比标准方案要好。由于我们想知道这个新型方案是否比标准方案更差(因为一个方案出来,你根本不清楚它比原来的是好,还是坏),此时我们就需要使用“双尾检验”,如下所示:

我们再来看一下这个临床试验的数据,由于这个新的方案更加偏向于好的治疗效果,这是不是意味着我们并不需要检验新型方案比标准方案更差?

其实不是的,优良的统计学习惯意味着在我们开始实验之前,我们需要了解我们要使用什么统计学方法,以及如何对p值进行取舍。否则的话,我们就会被p值挟持(p=hacking),这就会增加我们实验报告中假阳性的概率,如下所示:

此时,我们来看一下为什么会增加假阳性,先看一个标准的正态分布,x轴表示我们测量的数据从小到大(从左到右),y轴表示我们获取某个测量值后的概率,如下所示:

大多数情况下,我们测量得到的数据都位于正态分布的中央部分,但是偶尔情况下,我们的测量值确实会很小或很大,也就是说测量值位于正在分布曲线的两侧,如下所示:

例如我从这个分布中得到了一个样本(有3个数值),这就表示,计算机获取的这3个数值有很大的可能性是位于正态分布曲线中央的,但是有时候,它们可能会很小,或很大,位于曲线的两侧,如下所示:

然后我们从同一个分布中再取一个样本(还是3个数据),如下所示:

大多数情况下,如果对这2个样本(分别含有3个数据)进行双尾t检验,那么检验结果中的p值应该是大于0.05的,这是因为多数情况下,这两个样本的数据有重叠部分,如下所示:

但是,有时候我们从同一个分布获取的两个样本,经过t检验,这个p值有可能小于0.05,我们就称这种情况为假阳性(false positive),这种情况可能发生的概率是5%,就像下面的这个样子:

再扩展一下,如果我从同一个分布中,进行了10000次双尾检验,就像下面的这个样子,它的假阳性率为5%的话,那么就有可能出现500次假阳性,如下所示:

下面的这张图表示的就是p值的直方图(针对此处的sample #1sample #2,注意此处的两个样本与后面再次计算的样本是不同的,此处的样本中,sample #1sample #2有重合),其中蓝色的线表示每个条形块含有约500次检验,如下所示:

而蓝色的线之下就是假阳性出现的次数,我们以其中的一个矩形为例,就是红色的部分:

此时,我们再讨论一下单尾检验,如果样本1(sample #1)含有2个或更多个小于样本2(sample #2)的数值,那么我们就可以使用单尾t检验,在下图中我们可以看到,样本1中有2个数字的值都小于样本2中的所有的数字,那么我们就可以使用单尾t检验了,如下所示:

此时我们看一下这个新的p值的直方图(针对此处的sample #1sample #2,注意此处的两个样本与前面计算的样本是不同的,此处的样本中,sample #1中有2个值是小于sample #2中的所有值的,而前面的两个样本则有重合),如下所示:

蓝色线就是500位置,此图中的第1个矩形大概是800,也就是说它接近于8%的假阳性率,再结合前面的案例,我们知道,即使这个检验过程中采用的p值的阈值是0.05,但最终的报告中出现的假阳性的概率是5%到8%,如下所示:

此时,我们再到最初的案例,当我们对癌症进行治疗时,很显然,我们要知道这种治疗是能够改善癌症,还是加重癌症。事实上,对于所有的数据来说,我们可以选择单尾检验,也可以选择双尾检验。但是,在这个案例中,我们必须要弄清楚治疗的两个方面(是加重,还是改善),而不仅仅其中一个方面,因此,当我们在对p值进行取舍时,通常选择双尾检验的p值,如下所示:

p值挟持与统计功效

我们试想这样的一个场景:你累死累活工作到深夜,你做了很多实验,然后对数据进行统计,发现p值是0.051,这就比较尴尬了。如果你还有时间再做几个重复,此时如何选择,如下所示:

在回答这个问题是之前,我们先做一个小小的相思实验,如下所示:

我们来看一个曲线,就是正态分布曲线,我们试想,这个曲线代表了某个实验室中近交系的小鼠的体重,如下所示:

如果我们对这个实验室的小鼠体重时行测量,那么大多数的体重都会落在正态分布曲线的中间部分,接近平均值,如下所示:

不过,也有一小部分落在曲线的两侧,如下所示:

由于这些小鼠的体重来源是来源于一个近交系的小鼠品系,那么两个样本之间的体重差别不会太大,如下所示:

此时,我们先称3只小鼠,把它们的体重命名为样本1(Sample #1),如下所示:

再称3只小鼠的体重,称为样本2(Sample #2),如下所示:

然后对这两个样本进行t检验,如下所示:

从理论上来讲,有95%的可能性,t检验的p值是大于0.05的,则那些p值小于0.05的统计结果则被称为“假阳性”(false positives),如下所示:

换句话讲,大多数情况下,我们所期望的结果就是这两个样本比较接近,并且有部分数据有所重合,如下所示:

不过,在极少的情况下我们会发现这两个样本分布在同一个分布的两侧,此时p值就会小于0.05,我们就会认为这两个样本来源于不同的两个分布,如下所示:

但是,我们想关注的事件只是这两个样本的p值大于0.05,如下所示:

我们从同一个分布中生成1000个数据集,每个数据集含有两个样本(分别为Sample #1Sample #2),分别对其进行t检验,如下所示:

以下是前20个样本的p值,如下所示:

其中,会出现个别p值小于0.05的情况,只要这个事件不的发生率不超过5%(就是p值小于0.05这件事),那么就没有关系,我们的目的就是找到一种方法在95%的情况下都适用,对于大多数的科学来讲,并没有特殊严格的成本效益(cost/benefit),如下所示:

以下是这1000个数据中p值小于0.05的事件,其中以第1列为例,它有53个p值小于0.05的事件,那么53/1000=5.3%,如下所示:

第2列的p值比较接近显示性水平,如果这是来源于真实的实验,那么我们就容易这会想,如果我再做一次重复实验,或许p值就小于0.05了,如下所示:

因此,当我们再向数据集中添加一个随机的值,好么p值就在0.05和0.1之间了,其中会导致30%的t检验的值的p值小于0.05,如下所示:

换句话讲,当全部的模拟数据给出一个“接近“的p值时,再加入更多的模拟数据,就会有30%的可能性导致p值出现显著性(即p值小于0.05),如下所示:

但我们需要注意的是,不要为了得到一个好的p值而增加样本,它会增加你的假阳性率。

反之,在你进行实验之前,需要进行检验效能计算 (power calculation),用于计算你需要多少样本。其次,如果你在实验之前没有进行功效检验,那么此时也可以进行检验效能计算,如下所示:

统计功效

统计功效研究的是,你在实验之前需要多少样本数才能得到一个较小的p值,如下所示:

在我们讲解”功效“(power)的本质以及功效计算(power calculation)之前,我们先从直观上对这一概念理解一下,如下所示:

下面是两个正态分布曲线,假设左图的黑线表示喂食的小鼠体重,右侧的红线表示禁食的小鼠体重,很容易看到这两组小鼠的体重不一样,如下所示:

假如分别从这两组小鼠挑选两个小样本(N=3),那么进行t检验时,有很大的可能性得到一个小的p值,如下所示:

但是,如果禁食的效果不理想,就会发现,这两组曲线有一部分会重叠,如下所示:

如果此时从这两组小鼠体重中取两个小样本,那么我们就不太可能得到一个小的p值,如下所示:

此时,我们就可能定义一下功效(Power),功效指的是一个检验能够得到一个小p值的概率,第1个案例就是拥有高的功效,第2个案例就是低的功效,如下所示:

影响功能的因素

有4个因素影响功效(power),分别为:

第一:效应量(effect size);如下所示:

第二:数据的变异程度,如下所示:

在这个图中,效应量校对小一些,但数据的变异程度也小一些,因此,从这两个分布中得到的样本有很大的概率变异程度也比较小,这就意味着,我们有很大的概率会得到一个小p值,如下所示:

下面的数据就表现出很大程度的变异,由于变异程度大,那么样本的变异程度也有很高,这就意味着,得到一个小p值的概率比较低,如下所示:

第三,样本的数量。

样本数量多会弥补样本效果与数据的变异程度,如下所示:

为了简单地说明样本量对效能的影响,我们先用t检验来说明一下,t检验比较的是均值;均值是从样本中估计出来的。

然后我们再看一下样本量是如何影响均值的估计的,尤其是,样本的量如何影响这些估计值的置信度,如下所示:

如果样本量是1,那么我们只用了1只小鼠的体重来估计全体小鼠的均值,如下所示:

如果我们再衡量另外1只小鼠的体重,那么我们会得到对整体小鼠体重均值的另外一个估计,如下所示:

大多数情况下,我们对均值的估计是位于一个区间内,如下所示:

但有时候,估计值也有可能远离中心区域,如下所示:

为了研究这些估计的变异程度,我们可以绘制出一个正态分布中随机挑选出来的1000个样本的直方图,如下所示:

由于有一部分数据位于直方图的两侧,这些数据对于估计值有很低的置信度,如下所示:

此时我们再看一下,样本数是2个的情况,那么对均值的估计就是这两个数的均值,如下所示:

第2个样本,也是2个小鼠的体重,如下所示:

第3个样本,同样如此:

此时我们绘制一下样本数是2的直方图,并且把它与样本数为1时的直方图做个比较,从中我们可以发现,当样本数为2时,直方图的中央区域㬲中接近于真实的均值,这就间顺着我们有可能高的概率得到一个好的均值,它的置信度也更高,如下所示:

我们再绘制一下样本数为5时候的直方图,并把它与样本数为1和2的直方图进行比较,如下所示:

这就表示,当我们增加样本数时,我们估计的均值就越接近于真实的均值,如下所示:

当效应量(effect size)巨大时,我们并不需要对估计值的精确性做出要求。即使样本量很小也有很大的概率得到一个小p值,如下所示:

但是当效应量比较小时,我们对于估计的均值就要求很高的置信度,从而得到差异,如下所示:

例如,此时当样本数为3时,由于两个样本之间有很大程度的重叠,那么t检验的结果将是一个比较大的p值,如下所示:

此时我们看一下样本数为8的情况,虽然此时两个样本还有部分重叠,但是相对于样本数为3的情况,我们此时(样本量为8)有更大的可能性得到一个小的p值,我们此时可以说,样本数为8(N=8)比样本数为3(N=3)拥有更强的功效(power),如下所示:

如果样本数为101,那么我们就有了更强的功效,也就是说我们有更高的概率得到一个小的p值,如下所示:

最重要的一点就是,分布的变异程度才决定你通过增加样本数来提高检验功效,如下所示:

因为上图中的蓝线的变异程度较小,样本会相对接近于均值,在这个分布中,并不需要太多的样本就能得到一个相对可靠的估计的均值,相比之下,上图的红线的分布变异程度比较大,样本距离均值都较远,此时就需要更多的样本数来对均值进行估计,如下所示:

第四,使用的检验方法。

在所有的检验方法中,A检验方法可能比B检验方法的功效更强,例如t检验就是一种功效比较强的检验方法,如下所示:

如何进行功效计算

此时,我们就知道了什么是功效,那么如何进行功效计算呢?

首选,你需要一些可用的数据,例如一些以前的数据,或者是网上数据库中的数据,或者是你实验中的一些数据。

如果你没有这些数据,也没事,照样能够进行计算,如下所示:

此时,我们假设你已经拥有了一批数据,如下所示:

我们利用这些数据对均值进行估计,如下所示:

也用它们计算标准差,如下所示:

有了均值与标准差,就能画出它们的分布曲线,如下所示:

此时我们可以发现,它们的功效量比较小(因为有一部分重叠了),因此我们需要增加样本量来增加功效,如下所示:

此时,我们再回到前面我们讲的不同样本数目的直方图, 此时,我们再来看一下均值的变异,均值的变异称为标准差(Standard Error),它很容易计算,公式如下所示,其中在标准差公式的分母中的N表示样本量,从中我们可以发现,样本量越大,标准差就越小,也就是说变异程度越小,如下所示:

那么功效计算的本质其实就是研究N值,N如果足够的大的话,那么得到一个小的p值的概率就越高,如下所示:

由于我们没有手动计算过功效,此处也不介绍计算功效的详细过程,但是,我们要介绍一下计算的原理,理解原理的话,就会很方便地学以致用,如下所示:

功效计算的主要思想包括功效量,数据的变异,样本量,如下所示:

如果手中已经有了数据,那么就能估算出功效量与变异,此时也能计算出N值,如下所示:

如果没有数据,那么我们可以假设你有3个重复,然后假设你在寻找2倍的差异(这里貌似研究的是基因表达方面的东西),然后我们就可以看到数据的变异,以及得到一个好的功效。如果变异程度非常小,那么就需要增加样本数或者是增加功效量,如下所示:

例如,我们做了一个RNA-seq,已经计算出了人类的生物学变异以某些近交系模式动物的生物学变异,那么此时我们就杺把这些已知的变异加入到公式中,然后有2个选择,第一:将功效量加入公式来计算样本数目,如下所示:

第二,把样本数目加入公式来计算功效量,如下所示:

计算功效通常是使用软件进行计算,如下所示:

此时我们再回到开头的那个场景,如下所示:

此时,我们需要做就是2件事情:

第一,使用现在的结果进行功效计算;

第二,此时的p值有提示意义,你进行功效计算后,可以为你下一次实验设置多少样本数目提供决策依据,如下所示: