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.

196 lines
14 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 01 | 统计基础(上):系统掌握指标的统计属性
你好,我是博伟。
在学习、解决技术问题的时候我们都知道有这么一句话“知其然知其所以然”。那么A/B测试的“所以然”是什么呢在我看来就是A/B测试背后的计算原理知道A/B测试为什么要这么设计最佳实践中为什么要选择这样的指标、那样的检验方法。
那说到A/B测试背后的计算原理我们首先得知道A/B测试的理论基础是假设检验Hypothesis Testing。可以说假设检验贯穿了A/B测试从实验设计到分析测试结果的整个流程。
如果要一句话解释“假设检验”的话就是选取一种合适的检验方法去验证在A/B测试中我们提出的假设是否正确。现在你只要知道“假设检验”中最重要也最核心的是“检验”就可以了因为选取哪种检验方法取决于指标的统计属性。
也就是说理解指标的统计属性是我们掌握假设检验和A/B测试的前提也是“知其所以然”的第一步。
而至于深入理解并用好“假设检验”的任务,我们就留着下一讲去完成吧。
## 指标的统计属性,指的是什么?
在实际业务中,我们常用的指标其实就是两类:
* **均值类的指标**,比如用户的平均使用时长、平均购买金额、平均购买频率,等等。
* **概率类的指标**,比如用户点击的概率(点击率)、转化的概率(转化率)、购买的概率(购买率),等等。
很明显这些指标都是用来表征用户行为的。而用户的行为是非常随机的这也就意味着这些指标是由一系列随机事件组成的变量也就是统计学中的随机变量Random Variable
“随机”就代表着可以取不同的数值。比如一款社交App每天的使用时间对轻度用户来说可能不到1小时而对重度用户来说可能是4、5小时以上。那么问题来了在统计学中怎么表征呢
没错,我们可以用**概率分布Probability Distribution**来表征随机变量取不同值的概率和范围。所以A/B测试指标的统计属性其实就是要看这些指标到底服从什么概率分布。
在这里,我可以先告诉你结论:**在数量足够大时,均值类指标服从正态分布;概率类指标本质上服从二项分布,但当数量足够大时,也服从正态分布。**
看到这两个结论你可能会有很多问题:
* 什么是正态分布?什么是二项分布?
* “数量足够大”具体是需要多大的数量?
* 概率类指标,为什么可以既服从二项分布又服从正态分布?
不要着急,我这就来一一为你解答。
## 正态分布Normal Distribution
正态分布是A/B测试的指标中最主要的分布是计算样本量大小和分析测试结果的前提。
在统计上如果一个随机变量x的概率密度函数Probability Density Function
$$
f(x)=\\frac{1}{\\sigma \\sqrt{2 \\pi}} e^{-\\frac{1}{2}\\left(\\frac{x-\\mu}{\\sigma}\\right)^{2}}
$$
$$
\\begin{aligned}
\\mu &=\\frac{x\_{1}+x\_{2}+\\cdots+x\_{n}}{n} \\\\\\
\\sigma &=\\sqrt{\\frac{\\sum\_{i}^{n}\\left(x\_{i}-\\mu\\right)^{2}}{n}}
\\end{aligned}
$$
那么x就服从正态分布。
其中 μ为x的平均值Meanσ为x的**标准差**Standard Deviationn为随机变量x的个数xi为第i个x的值。
随机变量x服从正态分布时的直方图Histogram如下
![](https://static001.geekbang.org/resource/image/6e/20/6e074f64708841dcf94dd81bf95d7520.png)
直方图是表征随机变量分布的图表其中横轴为x可能的取值纵轴为每个值出现的概率。通过直方图你可以看到**距离平均值μ越近的值出现的概率越高。**
除了平均值μ,你还能在直方图和概率密度函数中看到另一个非常重要的参数:**标准差σ**。σ通过计算每个随机变量的值和平均值μ的差值,来表征随机变量的离散程度(偏离平均值的程度)。
接下来,我们就来看看标准差σ是怎么影响随机变量的分布的。
为了方便理解我们用Python做一个简单的模拟选取服从正态分布的随机变量x其平均值μ=0分别把x的标准差σ设置为1.0、2.0、3.0、4.0 然后分别做出直方图。对应的Python代码和直方图如下
```
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
## 构建图表
fig, ax = plt.subplots()
x = np.linspace(-10,10,100)
sigma = [1.0, 2.0, 3.0, 4.0]
for s in sigma:
ax.plot(x, norm.pdf(x,scale=s), label='σ=%.1f' % s)
## 加图例
ax.set_xlabel('x')
ax.set_ylabel('Density')
ax.set_title('Normal Distribution')
ax.legend(loc='best', frameon=True)
ax.set_ylim(0,0.45)
ax.grid(True)
```
![](https://static001.geekbang.org/resource/image/90/39/9096e03d08e2f6c249f74676b69fc439.jpeg)
通过这个直方图去看标准差σ对随机变量分布的影响是不是就更直观了σ越大x偏离平均值μ的程度越大x的取值范围越广波动性越大直方图越向两边分散。
咱们再举个生活中的例子来理解标准差。在一次期末考试中有A和B两个班的平均分都是85分。其中A班的成绩范围在70~100分通过计算得到成绩的标准差是5分B的成绩范围在50~100分计算得到的成绩标准差是10分。你看A班的成绩分布范围比较小集中在85分左右所以标准差也就更小。
说到标准差,你应该还会想到另一个用来表征随机变量离散程度的概念,就是**方差**Variance。其实方差就是标准差的平方。所以标准差σ和方差在表征离散程度上其实是可以互换的。
有了方差和标准差我们就可以描述业务指标的离散程度了但要计算出业务指标的波动范围我会在第4讲展开具体的计算方法我们还差一步。这一步就是z分数。
要解释z分数就要引出一种特殊的正态分布也就是标准正态分布Standard Normal Distribution其实就是平均值μ=0、标准差σ=1的正态分布。
标准正态分布的直方图如下所示:
![](https://static001.geekbang.org/resource/image/12/63/1226ea7777e38098a5yye506cb196d63.jpg)
这里的横轴就是z分数Z Score也叫做标准分数Standard Score
$$
\\mathrm{z} \\text { score }=\\frac{x-\\mu}{\\sigma}
$$
事实上任何一个正态分布都可以通过标准化Standardization变成标准正态分布。而标准化的过程就是按照上面这个公式把随机变量x变为z分数。不同z分数的值代表x的不同取值偏离平均值μ多少个标准差σ。比如当z分数等于1时说明该值偏离平均值1个标准差σ
我们再用一个社交App业务指标的例子来强化下对正态分布的理解。
现在有一个社交App我们想要了解用户日均使用时间t的概率分布。根据现有的数据1万个用户在一个月内每天使用App的时间我们做出了一个直方图
![](https://static001.geekbang.org/resource/image/2c/c5/2c53064d4f4306a2383b8b5e1ba180c5.png)
可以看出这1万个用户的日均使用时间t大约在3-5小时这个范围而且是近似正态分布的钟形曲线说明t的分布也可以近似为正态分布。
### 中心极限定理Central Limit Theorem
这其实是均值类变量的特性:当样本量足够大时,均值类变量会趋近于正态分布。这背后的理论基础,就是中心极限定理。
[中心极限定理](https://en.wikipedia.org/wiki/Central_limit_theorem)的数学证明和推理过程十分复杂,但不用害怕,我们只要能理解它的大致原理就可以了:**不管随机变量的概率分布是什么,只要取样时的样本量足够大,那么这些样本的平均值的分布就会趋近于正态分布。**
那么,这个足够大的样本量到底是多大呢?
统计上约定俗成的是样本量大于30就属于足够大了。在现在的大数据时代我们的样本量一般都能轻松超过30这个阈值所以均值类指标可以近似为正态分布。
到这里,“数量足够大”具体是需要多大的数量,以及什么是正态分布,这两个问题我们就都明白了。接下来,我们再学习下什么是二项分布,之后我们就可以理解为什么概率类指标可以既服从二项分布又服从正态分布了。
## 二项分布Binomial Distribution
业务中的概率类指标,具体到用户行为时,结果只有两种:要么发生,要么不发生。比如点击率,就是用来表征用户在线上点击特定内容的概率,一个用户要么点击,要么不点击,不会有第三种结果发生。
这种只有两种结果的事件叫做二元事件Binary Event。二元事件在生活中很常见比如掷硬币时只会出现正面或者反面这两种结果所以统计学中有专门有一个描述二元事件概率分布的术语也就是**二项分布**Binomial Distribution
这里我们还是结合着社交App的例子来学习下二元分布。
这款社交App在网上投放了广告来吸引人们点击广告从而下载App。现在我们想通过数据看看App下载率的分布情况
下载率 = 通过广告下载App的用户数量 / 看到广告的用户数量。
因为单个二元事件的结果只能是发生或者不发生发生的概率要么是100%要么是0%,所以我们要分析下载率就必须把数据进行一定程度的聚合。这里,我们就以分钟为单位来举例,先计算每分钟的下载率,再看它们的概率分布。
我们有一个月的用户及下载数据一个月一共有43200分钟60\*24\*30因为我们关注的是每分钟的下载率所以一共有43200个数据点。通过数据分析发现每分钟平均有10个人会看到广告下载率集中分布在0-30%之间。
下图是每分钟下载率的概率分布:
![](https://static001.geekbang.org/resource/image/81/20/8119d8c26b655c9ba806f68fc63e5e20.png)
你可能会说概率在某种程度上也是平均值可以把这里的下载率理解为“看到广告的用户的平均下载量”那我们已经有43200个数据点了样本量远远大于30但为什么下载率的分布没有像中心极限定理说的那样趋近于正态分布呢
这是因为在二项分布中中心极限定理说的样本量指的是计算概率的样本量。在社交App的例子中概率的样本量是10因为平均每分钟有10人看到广告还没有达到中心极限定理中说的30这个阈值。所以我们现在要提高这个样本量才能使下载率的分布趋近正态分布。
提高样本量的方法也很简单可以计算每小时的下载率。因为每小时平均有600人看到广告这样我们的样本量就从10提高到了600。下图是每小时下载率的概率分布
![](https://static001.geekbang.org/resource/image/2c/37/2c1f1e08aacc5dec5eb9e55e8a55fd37.png)
现在再看这张直方图每小时下载率的分布是不是就趋近于正态分布了图中下载率的平均值大约为10%。
在二项分布中有一个从实践中总结出的经验公式min(np,n(1-p)) >= 5。其中n为样本大小p为概率的平均值。
这个公式的意思是说np或者n(1-p)中相对较小的一方大于等于5只有二项分布符合这个公式时才可以近似于正态分布。这是中心极限定理在二项分布中的变体。
在我们的例子中计算每分钟下载率的概率分布时np=10\*10%=1小于5所以不能近似成正态分布计算每小时下载率的概率分布时np=600\*10%=60大于等于5所以可以近似成正态分布。
我们可以利用这个公式来快速判断概率类指标是不是可以近似成正态分布。不过你也可以想象在实践中的A/B测试由于样本量比较大一般都会符合以上公式的。
## 小结
今天这节课我们主要学习了A/B测试和假设检验的前提也就是指标的统计属性。我给你总结成了一个定理、两个分布和三个概念
1. 一个定理:中心极限定理。
2. 两个分布:正态分布和二项分布。
3. 三个概念方差标准差和z分数。
生活中随机变量的分布有很多种,今天我重点给你介绍了正态分布和二项分布,它们分别对应的是最普遍的两类业务指标:均值类和概率类。
而且你要知道有了中心极限定理我们就可以把业务中的大部分指标都近似成正态分布了。这一点非常重要因为A/B测试中的很多重要步骤比如计算样本量大小和分析测试结果都是以指标为正态分布为前提的。
同时你还可以用通过方差和标准差来了解业务指标的离散程度再结合z分数就可以计算出业务指标的波动范围了。只有理解了指标的波动范围才能够帮助我们得到更加准确的测试结果。
在下节课中我们继续学习A/B测试的统计基础也就是假设检验及其相关的统计概念。
## 思考题
我在刚开始接触概率类指标的二项分布时对于其如何能近似成正态分布很迷惑大家可以在这里聊一聊在学习A/B测试的统计过程中有什么难理解的地方以及是如何解决的
欢迎在留言区写下你的思考和想法,我们可以一起交流讨论。如果你觉得有所收获,欢迎你把课程分享给你的同事或朋友,一起共同进步!