You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
10 KiB
Markdown

2 years ago
# 30 | 统计意义如何通过显著性检验判断你的A/B测试结果是不是巧合
你好,我是黄申,今天我们来聊聊统计意义和显著性检验。
之前我们已经讨论了几种不同的机器学习算法,包括朴素贝叶斯分类、概率语言模型、决策树等等。不同的方法和算法会产生不同的效果。在很多实际应用中,我们希望能够量化这种效果,并依据相关的数据进行决策。
为了使这种量化尽可能准确、客观,现在的互联网公司通常是根据用户的在线行为来评估算法,并比较同类算法的表现,以此来选择相应的算法。在线测试有一个很大的挑战,那就是如何排除非测试因素的干扰。
![](https://static001.geekbang.org/resource/image/a9/8a/a9e5a362fabdaf3d591a7cfb33ff308a.png?wh=1410*864)
从图中可以看出自2016年1月12日开始转化率曲线的趋势发生了明显的变化。假如说这天恰好上线了一个新版的技术方案A那么转化率上涨一定是新方案导致的吗不一定吧很有可能1月12日有个大型的促销使得价格有大幅下降或者有个和大型企业的合作引入了很多优质顾客等原因有非常多。如果我们取消12日上线的技术方案A然后用虚线表示在这种情况下的转化率曲线这个时候得到了另一张图。
![](https://static001.geekbang.org/resource/image/0f/92/0ffe01ec3c4c75764bc94577ff07d492.png?wh=1414*858)
从图中可以发现不用方案A反而获得了更好的转化率表现所以简单地使用在线测试的结果往往会导致错误的结论我们需要一个更健壮的测试方法A/B测试。
A/B测试简单来说就是为同一个目标制定两个或多个方案让一部分用户使用A方案另一部分用户使用B方案记录下每个部分用户的使用情况看哪个方案产生的结果更好。这也意味着通过A/B测试的方式我们可以拿到使用多个不同方法之后所产生的多组结果用于对比。
问题来了假设我们手头上有几组不同的结果每组对应一个方案包含了最近30天以来每天的转化率如何判断哪个方案的效果更好呢你可能会想对每一组的30个数值取平均数看看谁的均值大不就好了但是这真的就够了吗
假设有两组结果需要比较每一组都有5个数据而且这两组都符合正态分布。我用一张图画一下这两个正态分布之间的关系。
![](https://static001.geekbang.org/resource/image/4c/e3/4c50716807e2eb5178bb37052b9c48e3.png?wh=1106*902)
从这张图可以看出左边的正态分布A均值μ1比较小右侧的正态分布B均值μ2比较大。可是如果我们无法观测到A和B这两个分布的全部而只根据这两个分布的采样数据来做判断会发生什么情况我们很有可能会得出错误的结论。
![](https://static001.geekbang.org/resource/image/51/29/511dc74701343b3b546af00004d91929.png?wh=1118*908)
比如说在这张图的采样中红色的点表示B的采样它们都是来自B分布的左侧而蓝色的点表示A的采样它们都是来自A分布的右侧。如果我们仅仅根据这两组采样数据的均值来判断很可能会得出“B分布的均值小于A分布均值”这样的错误结论。
A/B测试面临的就是这样的问题。我们所得到的在线测试结果实际上只是一种采样。所以我们不能简单地根据每个组的平均值来判断哪个组更优。那有没有更科学的办法呢在统计学中有一套成熟的系统和对应的方法今天我们就来讲讲这种方法。
为了让你能够充分理解这个我先介绍几个基本概念显著性差异、统计假设检验和显著性检验、以及P值。
## 显著性差异
从刚刚那两张正态分布图,我们可以分析得出,两组数据之间的差异可能由两个原因引起。
第一两个分布之间的差异。假设A分布的均值小于B分布而两者的方差一致那么A分布随机产生的数据有更高的概率小于B分布随机产生的数据。第二采样引起的差异也就是说采样数据不能完全体现整体的数据分布。我在之前的图中用来自A、B两组的10个数据展示了采样所导致的误差。
如果差异是第一个原因导致的,在统计学中我们就认为这两组“有显著性差异”。如果差异是第二种原因导致的,我们就认为这两组“无显著性差异”。可以看出来,**显著性差异**Significant Difference其实就是研究多组数据之间的差异是由于不同的数据分布导致的呢还是由于采样的误差导致的呢通常我们也把“具有显著性差异”称为“差异具有统计意义”或者“差异具有显著性”。
这里你还需要注意“差异具有显著性”和“具有显著差异”的区别。如前所说“差异具有显著性“表示不同的组很可能来自不同的数据分布也就是说多个组的数据来自同一分布的可能性非常小。而“具有显著差异”是指差异的幅度很大比如相差100倍。
不过差异的显著性和显著差异没有必然联系。举两个例子比如说两个不同的数据分布它们的均值分别是1和1.2这两个均值相差的绝对值很小也就是没有显著差异但是由于它们源自不同的数据分布所以差异是具有显著性的。再比如说来自同一个数据分布的两个采样它们的均值分别是1和100具有显著的差异但是差异没有显著性。
## 统计假设检验和显著性检验
统计假设检验是指事先对随机变量的参数或总体分布作出一个假设,然后利用样本信息来判断这个假设是否合理。在统计学上,我们称这种假设为**虚无假设**Null Hypothesis也叫原假设或零假设通常记作**H0**。而和虚无假设对立的假设,我们称为**对立假设**Alternative Hypothesis通常记作**H1**。也就是说,如果证明虚无假设不成立,那么就可以推出对立假设成立。
统计假设检验的具体步骤是先认为原假设成立计算其会导致什么结果。若在单次实验中产生了小概率的事件则拒绝原假设H0并接受对立假设H1。若不会产生小概率的事件则不能拒绝原假设H0从而接受它。因此统计学中的假设是否成立并不像逻辑数学中的绝对“真”或“假”而是需要从概率的角度出发来看。
那么问题来了多少才算是“小概率”呢按照业界的约定俗成通常我们把概率不超过0.05的事件称为“小概率事件”。当然根据具体的应用偶尔也会取0.1或0.01等。在假设检验中,我们把这个概率记为α,并称它为显著性水平。
显著性检验是统计假设检验的一种,顾名思义,它可以帮助我们判断多组数据之间的差异,是采样导致的“偶然”,还是由于不同的数据分布导致的“必然“。当然,这里的“偶然”和“必然”都是相对的,和显著性水平α有关。显著性检验的假设是,多个数据分布之间没有差异。如果样本发生的概率小于显著性水平α,证明小概率事件发生了,所以拒绝原假设,也就是说认为多个分布之间有差异。否则呢,接受原假设,认为多个分布之间没有差异。换句话说,显著性水平α即为拒绝原假设的标准。
## P值
既然已经定义了显著性检验和显著性水平那么我们如何为多组数据计算它们之间差异的显著性呢我们可以使用P值P-value。P值中的P代表Probability就是当H0假设为真时样本出现的概率或者换句话说其实就是我们所观测到的样本数据符合原假设H0的可能性有多大。
如果P值很小说明观测值与假设H0的期望值有很大的偏离H0发生的概率很小我们有理由拒绝原假设并接受对立假设。P值越小表明结果越显著我们越有信心拒绝原假设。反之说明观测值与假设H0的期望值很接近我们没有理由拒绝H0。
在显著性检验中原假设认为多个分组内的数据来自同一个数据分布如果P值足够小我们就可以拒绝原假设认为多个分组内的数据来自不同的数据分布它们之间存在显著性的差异。所以说只要能计算出P值我们就能把P值和显著性水平α进行比较从而决定是否接受原假设。
## 总结
今天我从互联网公司常见的A/B测试实验入手给你讲解了一个更科学的方法来比较不同算法的效果它就是统计学里的差异显著性检验。这个方法包含了一些你平时可能不太接触的概念你首先需要理解显著性差异、统计假设检验和P值。其中最为重要的就是显著性差异的概念因为这是差异显著性检验区别于简单的平均值方法的关键。
为了便于你的记忆,我这里再用一个形象的比喻来带你复习一遍。
儿子考了90分我问他“你比班上平均分高多少”如果他回答“我不太确定我只看到了周围几个人的分数我猜大概高出了10分吧”那么说明他对“自己分数比平均分高出10分”这个假设信心不足结论有较大的概率是错误的所以即使可能高了10分我也高兴不起来。
如果他回答“老师说了班级平均分是88分我比平均分高出了2分”那我就很开心了因为老师掌握了全局的信息她说的话让儿子对“自己分数比平均分高出2分”的假设是非常有信心的。即使只高出了2分但是结论有很大的概率是正确的。
理解了概念之后我们就要进入实战环节了。其实显著性检验的具体方法有很多例如方差分析F检验、t检验、卡方检验等等。不同的方法计算P值的方法也不同在下一节我会用A/B测试的案例来详细解释。
## 思考题
在对比两组数据的差异时,如果不断增加采样次数,也就是样本的数量,使用平均值和使用显著性检验这两者的结论,会不会逐渐变得一致?
欢迎留言和我分享,也欢迎你在留言区写下今天的学习笔记。你可以点击“请朋友读”,把今天的内容分享给你的好友,和他一起精进。