讲概率、论统计,肯定要从抛硬币说起啊,这才是正确打开姿势嘛。

1 什么是假设检验?

你说你的硬币是公平的,也就是“花”和“字”出现的概率是差不多的。

然后,你想和我打赌,作为一个资深的理智赌徒,我怎能听信你的一面之词,我提出要检查下你的硬币到底是不是公平的,万一是两面“花”怎么办?电影里面不是经常出现这样的桥段?

python curvefit 置信区间_二项分布

 

你神色紧张,死活不让我检查,后来我们提出了折衷的方案,抛几次硬币,看看结果是不是公平的。

总共扔了两次,都是“花”朝上,虽然几率是 

python curvefit 置信区间_假设检验_02

 ,但是也正常,继续扔。总共扔了四次,也都是“花”朝上,几率是 

python curvefit 置信区间_正态分布_03

 ,感觉有点不正常,但是万一是运气呢?继续扔。

总共扔了十次,也都是“花”朝上,那我就认为很可能你这枚硬币不是公平的。

这就是假设检验:

  • 你提出假设:说你的硬币是公平的
  • 我提出要检验你的假设:扔十次,看实验的结果是不是和你的假设相符

2 P值

为了完成假设检验,需要先定义一个概念:P值。我们这里就来解释什么是P值?

根据上面的描述,这里假设检验的思路就是:

  • 假设:硬币是公平的
  • 检验:认为假设是成立的,然后扔十次,看结果与假设是否相符

反复扔硬币应该符合二项分布(这就不解释了),也就是:

python curvefit 置信区间_正态分布_04

其中, 

python curvefit 置信区间_假设检验_05

 代表扔硬币的次数, 

python curvefit 置信区间_假设检验_06

 代表“花”朝上的概率。

在我们认为硬币是公平的前提下,扔10次硬币应该符合以下分布:

python curvefit 置信区间_二项分布_07

下图表示的就是,假如硬币是公平的情况下的分布图:

python curvefit 置信区间_二项分布_08

我扔了十次之后得到的结果是,有八次正面:

python curvefit 置信区间_二项分布_09

这个时候有个数学大佬出来定义了一个称为 

python curvefit 置信区间_二项分布_10

 值(p-value)的概念:

python curvefit 置信区间_二项分布_11

罗纳德·艾尔默·费希尔爵士(1890-1962)

把八次正面的概率,与更极端的九次正面、十次正面的概率加起来:

python curvefit 置信区间_正态分布_12

得到的就是(单侧P值):

python curvefit 置信区间_正态分布_13

其实,出现两次正面、一次正面、零次正面的概率也是很极端的:

python curvefit 置信区间_假设检验_14

所以(双侧P值):

python curvefit 置信区间_正态分布_15

2.1 为什么要把更极端的情况加起来?

根据扔硬币这个例子,可能你会觉得,我知道八次正面出现不正常就行了,干嘛要把九次、十次加起来?

我觉得有这么一个现实原因,比如我要扔1000次硬币来测试假设是否正确。

扔1000次硬币用二项分布来计算很麻烦,根据中心极限定理,我们知道,可以用正态分布来近似:

python curvefit 置信区间_二项分布_16

比如,我扔了1000次,得到了530次正面,用正态分布来计算就比较简单。

但是,对于正态分布,我没有办法算单点的概率(连续分布单点概率为0),我只能取一个区间来算极限,所以就取530、以及更极端的点组成的区间:

python curvefit 置信区间_假设检验_17

我上面只取了单侧P值,说明下:

  • 取单侧还是双侧,取决于你的应用
  • 什么叫做更极端的点,也取决于你的应用

3 显著水平

总共扔10次硬币,那么是出现7次正面之后,可以认为“硬币是不公平的”,还是9次正面之后我才能确认“硬币是不公平的”,这是一个较为主观的标准。

我们一般认为

python curvefit 置信区间_二项分布_18

就可以认为假设是不正确的。

0.05这个标准就是显著水平,当然选择多少作为显著水平也是主观的。

比如,上面的扔硬币的例子,如果取单侧P值,那么根据我们的计算,如果扔10次出现9次正面:

python curvefit 置信区间_正态分布_19

表示出来如下图所示:

python curvefit 置信区间_正态分布_20

我们可以认为刚开始的假设错的很“显著”,也就是“硬币是不公平的”。

如果扔10次出现出现8次正面:

python curvefit 置信区间_假设检验_21

呃,这个和我们的显著水平是一样的啊,我们也可以拒绝假设,只是没有那么“显著”了。

4 与置信区间的关系

知识要联系起来看,理解更深刻。

置信区间,目的是根据样本构造一个区间,然后希望这个区间可以把真值包含进去,但是并不知道这个真值是多少?具体可以参考 如何理解 95% 置信区间?

而假设检验,则是假设真值是多少,然后检验这个假设是否可能为真。

之所以觉得它们有关系,大概是因为它们都提到了0.05。

它们之间的关系也简单,如果我们提出来的假设 

python curvefit 置信区间_二项分布_22

 在样本 

python curvefit 置信区间_二项分布_23

 的置信区间内,就可以通过测试:

python curvefit 置信区间_正态分布_24

反之,就不能通过:

python curvefit 置信区间_假设检验_25