在上一章中,我们一起重温了假设检验 的概念,并提出了假设检验的过程 —— 提出原假设,并尝试利用反证法推翻它。
同时也一起回顾了卷积的概念,并基于其运算规律,推导出了两个服从正态分布的变量相加后的和仍然服从正态分布 这一重要结论。
在最后,我们就 A/B Testing 中最常用的检测方法 —— Z 检验 做了初步的介绍,并最终得到了对两份样本均值之差计算 Z 值的公式。
根据以上内容,我们已经可以通过简单而又便捷的方法,将样本的均值与标准差分别代入以下公式,就能较为准确的计算出两份独立样本均值的差异是否显著。
Z = ∣ X 1 ‾ − X 2 ‾ ∣ σ 1 2 n 1 + σ 2 2 n 2 Z=\frac{\lvert\overline{X_1} - \overline{X_2}\rvert}{\sqrt{\frac{\sigma_1^2}{n_1}+\frac{\sigma_2^2}{n_2}}} Z = n 1 σ 1 2 + n 2 σ 2 2 ∣ X 1 − X 2 ∣
基于 A/B Testing 大样本的特性及业内习惯,通常我们都会选择将置信度设置为 95%,此时通过查询 Z 分数表可知,Z 值的边界值为 1.96。
根据以上设定,当需要针对样本差异性做 Z 检验时,按照以下步骤即可:首先先建立原假设——两组样本间没有 显著性差异。与此相对,备择假设即为两组样本间存在显著性差异。计算两组样本的算数平均值、标准差,代入上述公式。如果计算出 Z 值的结果比 1.96 大,则说明计算出的 Z 值落在了拒绝域的区域,根据标准正态分布的特性,说明我们的原假设不成立,此时便可采纳备择假设的结论,认为出现了统计学意义上的显著性差异。相反,如果计算得到的 Z 值小于或等于 1.96,则不能推翻原假设。
根据第一类错误与第二类错误的概念指导,我们很清楚的知道,如果不能推翻原假设,并不意味着我们要接受原假设,因为这很有可能让我们陷入取伪错误;但如果我们成功的推翻了原假设,从而接受备择假设,我们会有很大几率获得正确的结论。这是因为弃真错误的概率已经被我们人为的控制在 5% 的程度了。
在以上概念的指导下,在进行 A/B 测试时,我们可以只凭借样本的均值与方差,然后将它们代入公式,就可以快速而又准确的判断出自己的迭代是否具有业务价值。但是,有一点小小的疑问可能会让大家疑虑 —— 我们只凭部分样本计算得出的样本方差,到底能不能代表整体?
方差 是一个非常常见的数据指标,它代表着集合中数据的偏差度,在高中学习阶段就会接触到它的概念,其公式如下。
σ 2 = ∑ i = 1 N ( X i − μ ) 2 N \sigma^2=\frac{\sum_{i=1}^{N}(X_i-\mu)^2}{N} σ 2 = N ∑ i = 1 N ( X i − μ ) 2
其中,μ \mu μ 表示集合的算数平均值,N N N 为集合的元素数目。当我们有一组样本时,只需要将每一个值 与整体的算数平均值相减,并计算其平方和,最后除以样本数算出的平均数即可得出该组样本的方差。
但是在 A/B 测试场景中,我们人为的将全量整体的用户群体通过一定的手段严格隔离开,并将其分成了两个独立的子集。这样的话,我们计算得出的方差、均值严格来说只能代表子集的表现情况,但此时我们可能更想知道 —— 假定分组分别都是全部流量时 ,两组样本间是否会存在显著性差异?
由于此时我们并没有整体样本的情况,所以自然我们就无法准确得出 σ 2 \sigma^2 σ 2 ,因此,我们使用另一个符号来代表我们可以精确计算出的子集的方差 —— 即样本方差,记作 S 2 S^2 S 2 。
现在我们来尝试找一下 S 2 S^2 S 2 与 σ 2 \sigma^2 σ 2 的数学关系。令 μ \mu μ 为整体算数平均值,X ‾ \overline{X} X 为样本算数平均值,n n n 为样本数,则有如下公式:
S 2 = 1 n ∑ i = 1 n ( X i − X ‾ ) 2 = 1 n ∑ i = 1 n [ ( X i − μ ) − ( X ‾ − μ ) ] 2 = 1 n ∑ i = 1 n [ ( X i − μ ) 2 − 2 ( X i − μ ) ( X ‾ − μ ) + ( X ‾ − μ ) 2 ] = 1 n ∑ i = 1 n ( X i − μ ) 2 − 2 ( X ‾ − μ ) n ∑ i = 1 n ( X i − μ ) + ( X ‾ − μ ) 2 n ∑ i = 1 n 1 = 1 n ∑ i = 1 n ( X i − μ ) 2 − 2 ( X ‾ − μ ) ⋅ 1 n ∑ i = 1 n ( X i − μ ) + ( X ‾ − μ ) 2 \begin{alignat}{2} S^2&=\frac{1}{n}\sum_{i=1}^{n}(X_i-\overline{X})^2 \\ &=\frac{1}{n}\sum_{i=1}^{n}[(X_i-\mu)-(\overline{X}-\mu)]^2 \\ &=\frac{1}{n}\sum_{i=1}^{n}[(X_i-\mu)^2-2(X_i-\mu)(\overline{X}-\mu)+(\overline{X}-\mu)^2] \\ &=\frac{1}{n}\sum_{i=1}^{n}(X_i-\mu)^2-\frac{2(\overline{X}-\mu)}{n}\sum_{i=1}^{n}(X_i-\mu)+\frac{(\overline{X}-\mu)^2}{n}\sum_{i=1}^{n}1 \\ &=\frac{1}{n}\sum_{i=1}^{n}(X_i-\mu)^2-2(\overline{X}-\mu)\cdot{\frac{1}{n}\sum_{i=1}^{n}(X_i-\mu)}+(\overline{X}-\mu)^2 \\ \end{alignat} S 2 = n 1 i = 1 ∑ n ( X i − X ) 2 = n 1 i = 1 ∑ n [( X i − μ ) − ( X − μ ) ] 2 = n 1 i = 1 ∑ n [( X i − μ ) 2 − 2 ( X i − μ ) ( X − μ ) + ( X − μ ) 2 ] = n 1 i = 1 ∑ n ( X i − μ ) 2 − n 2 ( X − μ ) i = 1 ∑ n ( X i − μ ) + n ( X − μ ) 2 i = 1 ∑ n 1 = n 1 i = 1 ∑ n ( X i − μ ) 2 − 2 ( X − μ ) ⋅ n 1 i = 1 ∑ n ( X i − μ ) + ( X − μ ) 2
代入算数平均值的计算公式:
X ‾ − μ = 1 n ∑ i = 1 n X i − μ = 1 n ∑ i = 1 n X i − 1 n ∑ i = 1 n μ = 1 n ∑ i = 1 n ( X i − μ ) \begin{alignat}{2} \overline{X}-\mu&=\frac{1}{n}\sum_{i=1}^{n}X_i-\mu \\ &=\frac{1}{n}\sum_{i=1}^{n}X_i-\frac{1}{n}\sum_{i=1}^{n}\mu \\ &=\frac{1}{n}\sum_{i=1}^{n}(X_i-\mu) \\ \end{alignat} X − μ = n 1 i = 1 ∑ n X i − μ = n 1 i = 1 ∑ n X i − n 1 i = 1 ∑ n μ = n 1 i = 1 ∑ n ( X i − μ )
续前式:
S 2 = 1 n ∑ i = 1 n ( X i − μ ) 2 − 2 ( X ‾ − μ ) ⋅ 1 n ∑ i = 1 n ( X i − μ ) + ( X ‾ − μ ) 2 = 1 n ∑ i = 1 n ( X i − μ ) 2 − 2 ( X ‾ − μ ) ⋅ ( X ‾ − μ ) + ( X ‾ − μ ) 2 = 1 n ∑ i = 1 n ( X i − μ ) 2 − ( X ‾ − μ ) 2 = σ 2 − ( X ‾ − μ ) 2 \begin{alignat}{2} S^2&=\frac{1}{n}\sum_{i=1}^{n}(X_i-\mu)^2-2(\overline{X}-\mu)\cdot{\frac{1}{n}\sum_{i=1}^{n}(X_i-\mu)}+(\overline{X}-\mu)^2 \\ &=\frac{1}{n}\sum_{i=1}^{n}(X_i-\mu)^2-2(\overline{X}-\mu)\cdot{(\overline{X}-\mu)}+(\overline{X}-\mu)^2 \\ &=\frac{1}{n}\sum_{i=1}^{n}(X_i-\mu)^2-(\overline{X}-\mu)^2 \\ &=\sigma^2-(\overline{X}-\mu)^2 \\ \end{alignat} S 2 = n 1 i = 1 ∑ n ( X i − μ ) 2 − 2 ( X − μ ) ⋅ n 1 i = 1 ∑ n ( X i − μ ) + ( X − μ ) 2 = n 1 i = 1 ∑ n ( X i − μ ) 2 − 2 ( X − μ ) ⋅ ( X − μ ) + ( X − μ ) 2 = n 1 i = 1 ∑ n ( X i − μ ) 2 − ( X − μ ) 2 = σ 2 − ( X − μ ) 2
因此有:S 2 ≤ σ 2 S^2\le{\sigma^2} S 2 ≤ σ 2 ,即样本方差的值小于或等于总体方差,仅当样本均值与总体均值相等时,样本方差与总体方差相等。
现在我们已经知道了样本方差的值相对总体方差较低,那么我们基于正态分布做的假设检验就无法得出正确的结论了吗?我们现在再来尝试计算一下样本方差与总体方差的差值。
其实除了总体方差 σ 2 \sigma^2 σ 2 不知其值外,总体均值 μ \mu μ 同样也是无法计算的,但是我们可以很容易推倒出以下公式:
E ( X ‾ ) = E ( 1 n ∑ i = 1 n X i ) = 1 n ∑ i = 1 n E ( X i ) = 1 n ∑ i = 1 n μ = 1 n ⋅ n μ = μ E(\overline{X})=E(\frac{1}{n}\sum_{i=1}^{n}X_i)=\frac{1}{n}\sum_{i=1}^{n}E(X_i)=\frac{1}{n}\sum_{i=1}^{n}\mu=\frac{1}{n}\cdot{n\mu}=\mu E ( X ) = E ( n 1 i = 1 ∑ n X i ) = n 1 i = 1 ∑ n E ( X i ) = n 1 i = 1 ∑ n μ = n 1 ⋅ n μ = μ
因此得出结论:样本均值的数学期望等于总体均值 。现在我们依照前面的公式重新计算样本方差的数学期望。
E ( S 2 ) = E [ σ 2 − ( X ‾ − μ ) 2 ] = σ 2 − E [ ( X ‾ − μ ) 2 ] = σ 2 − E [ ( X ‾ − E ( X ‾ ) ) 2 ] = σ 2 − V a r ( X ‾ ) = σ 2 − V a r ( 1 n ∑ i = 1 n X i ) = σ 2 − ( 1 n ) 2 ⋅ V a r ( ∑ i = 1 n X i ) = σ 2 − ( 1 n ) 2 ⋅ ∑ i = 1 n V a r ( X i ) = σ 2 − ( 1 n ) 2 ⋅ n σ 2 = n − 1 n σ 2 \begin{alignat}{2} E(S^2)&=E[\sigma^2-(\overline{X}-\mu)^2] \\ &=\sigma^2-E[(\overline{X}-\mu)^2] \\ &=\sigma^2-E[(\overline{X}-E(\overline{X}))^2] \\ &=\sigma^2-Var(\overline{X}) \\ &=\sigma^2-Var(\frac{1}{n}\sum_{i=1}^{n}X_i) \\ &=\sigma^2-(\frac{1}{n})^2\cdot{Var(\sum_{i=1}^{n}X_i)} \\ &=\sigma^2-(\frac{1}{n})^2\cdot\sum_{i=1}^{n}{Var(X_i)} \\ &=\sigma^2-(\frac{1}{n})^2\cdot{n\sigma^2} \\ &=\frac{n-1}{n}\sigma^2 \\ \end{alignat} E ( S 2 ) = E [ σ 2 − ( X − μ ) 2 ] = σ 2 − E [( X − μ ) 2 ] = σ 2 − E [( X − E ( X ) ) 2 ] = σ 2 − V a r ( X ) = σ 2 − V a r ( n 1 i = 1 ∑ n X i ) = σ 2 − ( n 1 ) 2 ⋅ V a r ( i = 1 ∑ n X i ) = σ 2 − ( n 1 ) 2 ⋅ i = 1 ∑ n V a r ( X i ) = σ 2 − ( n 1 ) 2 ⋅ n σ 2 = n n − 1 σ 2
现在,我们已经通过计算得到了样本方差比总体方差低估了 1 n σ 2 \frac{1}{n}\sigma^2 n 1 σ 2 的结论,现在让我们来看看有没有办法将样本方差修正成与总体方差一致的程度。
E ( S 2 ) = E [ 1 n ∑ i = 1 n ( X i − X ‾ ) 2 ] = n − 1 n σ 2 n n − 1 E ( S 2 ) = σ 2 E ( n n − 1 S 2 ) = σ 2 E [ n n − 1 ⋅ 1 n ∑ i = 1 n ( X i − X ‾ ) 2 ] = σ 2 E [ 1 n − 1 ∑ i = 1 n ( X i − X ‾ ) 2 ] = σ 2 \begin{alignat}{2} E(S^2)&=E[\frac{1}{n}\sum_{i=1}^{n}(X_i-\overline{X})^2] \\ &=\frac{n-1}{n}\sigma^2 \\ \frac{n}{n-1}E(S^2)&=\sigma^2 \\ E(\frac{n}{n-1}S^2)&=\sigma^2 \\ E[\frac{n}{n-1}\cdot{\frac{1}{n}\sum_{i=1}^{n}(X_i-\overline{X})^2}]&=\sigma^2 \\ E[\frac{1}{n-1}\sum_{i=1}^{n}(X_i-\overline{X})^2]&=\sigma^2 \\ \end{alignat} E ( S 2 ) n − 1 n E ( S 2 ) E ( n − 1 n S 2 ) E [ n − 1 n ⋅ n 1 i = 1 ∑ n ( X i − X ) 2 ] E [ n − 1 1 i = 1 ∑ n ( X i − X ) 2 ] = E [ n 1 i = 1 ∑ n ( X i − X ) 2 ] = n n − 1 σ 2 = σ 2 = σ 2 = σ 2 = σ 2
其实到这里,我们已经得到了根据样本去估计总体方差的公式,而此前我们熟知的那个方差计算公式,到这里也随之变成了两个:
总体方差 :
σ 2 = 1 n ∑ i = 1 n ( X i − μ ) 2 \sigma^2=\frac{1}{n}\sum_{i=1}^{n}(X_i-\mu)^2 σ 2 = n 1 i = 1 ∑ n ( X i − μ ) 2
样本方差 ,同时也可以视为总体方差的无偏估计 ,在一些场合,可以代替总体方差来使用:
S 2 = 1 n − 1 ∑ i = 1 n ( X i − X ‾ ) 2 S^2=\frac{1}{n-1}\sum_{i=1}^{n}(X_i-\overline{X})^2 S 2 = n − 1 1 i = 1 ∑ n ( X i − X ) 2
到这里为止,A/B 测试假设检验算法的最后一块拼图终于补上了。
现在开始,我们可以将之前推导出的 Z 检验公式做一个小小的调整,将 σ 2 \sigma^2 σ 2 更换为 S 2 S^2 S 2 ,使之更科学、更严谨、更规范:
Z = ∣ X 1 ‾ − X 2 ‾ ∣ S 1 2 n 1 + S 2 2 n 2 Z=\frac{\lvert\overline{X_1} - \overline{X_2}\rvert}{\sqrt{\frac{S_1^2}{n_1}+\frac{S_2^2}{n_2}}} Z = n 1 S 1 2 + n 2 S 2 2 ∣ X 1 − X 2 ∣
到此为止,A/B Testing 的核心依据 —— 中心极限定理 、计算基础 —— 正态分布 及其相关公式、结论算法 —— 假设检验 (Z 检验)已经全部介绍为大家介绍完了。基于上述公式,无论是通过传统数据库、大数据数据库、甚至是 Excel,都有内置的方法或函数轻松计算样本集合的样本数 、算数平均值 及 样本方差 ,如 MySQL 的 COUNT()、AVG()、VAR_SAMP() 等。
无论如何,非常感谢读者朋友们能够耐心看完本系列迄今为止的 5 篇分享,未来我还会针对其他的检验方法、以及数据纠偏等给出更多分享内容。尽管公式并非原创(很多公式的推导过程在书本、网络上都有),但文章本身一定是完全原创的,本人公众号及个人博客仅发布原创内容,还请支持我的朋友们可以给予关注、收藏。
再次向读者朋友们表示感谢。