程序员的数学基础课
黄申
LinkedIn 资深数据科学家
83374 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 58 讲
导读 (1讲)
基础思想篇 (18讲)
程序员的数学基础课
15
15
1.0x
00:00/00:00
登录|注册

31 | 统计意义(下):如何通过显著性检验,判断你的A/B测试结果是不是巧合?

适用范围
F检验
方差齐性检验
正态性检验
数据准备
安装statsmodels
计算F值
计算SST、SSM和SSE
方差齐性
正态分布性
独立性
随机性
总结
Python代码验证
主要思想
前提假设
检验两组或多组样本的均值是否具备显著性差异
从统计的角度来说,差异的产生有多大的概率、是不是足够可信
概念
思考题
方差分析(ANOVA)
差异显著性检验
统计意义

该思维导图由 AI 生成,仅供参考

你好,我是黄申,今天我们接着来聊显著性检验。
上一节,我介绍了差异显著性检验的概念,它是指从统计的角度来说,差异的产生有多大的概率、是不是足够可信。这点和数值差异的大小是有区别的。既然我们不能通过差异的大小来推断差异是否可信,那么有没有什么方法,可以帮助我们检验不同数据分布之间,是否存在显著差异呢?具体的方法有不少,比如方差分析(F 检验)、t 检验、卡方检验等等。我这里以方差分析为例,来讲这个方法是如何帮助我们解决 AB 测试中的问题。

方差分析

方差分析(Analysis of Variance, ANOVA),也叫 F 检验。这种方法可以检验两组或者多组样本的均值是否具备显著性差异。它有四个前提假设,分别是:
随机性:样本是随机采样的;
独立性:来自不同组的样本是相互独立的;
正态分布性:组内样本都来自一个正态分布;
方差齐性:不同组的方差相等或相近。
根据第三个前提,我们假设数据是正态分布,那么分布就有两个参数,一个是平均数,一个是方差。如果我们仅仅知道两个分组的平均值,但并不知道它们的方差相差多大,那么我们所得出的两个分布是否有显著差异的结论就不可靠了。
为了突出重点,我们先假设咱们的数据都符合上述四个前提,然后我来详细讲解一下方差分析的主要思想。最后,我会通过 Python 语言来验证各个假设和最终的 F 检验结果。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何通过方差分析(ANOVA)来判断A/B测试结果的显著性差异。方差分析是一种用于检验两组或多组样本均值是否具备显著性差异的方法,通过计算SST、SSM和SSE三个统计量,得出F值来衡量显著性。文章以A/B测试案例为例,通过方差分析来检验多种算法所产生的用户转化率是否存在显著性差异。通过计算F值并查找对应的P值,作者得出结论:虽然算法a所导致的平均转化率相对较高,但由于差异没有显著性,这个提升的偶然性很大,并不意味着算法a比算法b更好。文章详细介绍了方差分析的原理和计算过程,并通过Python语言验证各个假设和最终的F检验结果。整体来说,本文通过具体案例和详细计算过程,帮助读者了解了如何通过方差分析来判断A/B测试结果的显著性差异,对于进行A/B测试的数据分析人员具有一定的参考价值。文章还提到了使用Python代码进行验证,包括数据读取、正态性和方差齐性检验以及F检验的两种方法。此外,文章还介绍了方差分析的适用条件和非参数检验的方法,为读者提供了更多的分析思路和工具选择。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《程序员的数学基础课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • 强哥
    我们这面的ab test计算显著性用的是t检验,不知道跟f检验的区别是什么?对于非参数检验的方法可以用bootstraping吧!分析师对这方面比较有研究

    作者回复: t检验可以用pairwise的t检验,一般用于两组对比,而f检验可以进行多组(多个水平)的检验

    2019-03-01
    10
  • 罗耀龙@坐忘
    茶艺师学编程 老师,我是这么理解方差分析的: 对于要考察的数据(符合正态分布),要想得出差异具有显著性,那么SSM/分布自由度要比SSE/误差自由度大上不少才行(分子比分母大不少)。 有意义的数据要比噪音要多,不然事情就是随机漫步或者是偶然(没有为什么)发生的。 不知道我这样子理解有没有问题?

    作者回复: 对,就是这个意思

    2020-04-23
    3
    6
  • 动摇的小指南针
    方差检验的前提是符合正态分布,那么针对用户转化率算法a和b而言,怎么理解这种分布呢,是指在某种用户特征分类的x坐标上,转化效果y坐标符合正态分布吗?

    作者回复: 是的,可以进行采样数据可视化来初版判断

    2019-05-26
    4
  • mickey
    请问,显著性水平α为什么要取0.05?

    作者回复: 这是个好问题,0.05是业界的常见标准,约定俗成。也不一定要取0.05,0.1或者是0.02,0.01,只要不是太大都可以。至于多“大”算“大”,看你愿意接受偶然性的程度,没有明显的界定,当然0.3,0.5这种就肯定太大了。

    2019-02-26
    3
  • 叮当猫
    请问F检验临界值表是怎么计算出来的?

    作者回复: 这个问题比较复杂,简单的来说,基于一些假设我们可以画出在不同的自由度之下,不同的F值曲线。和正态分布类似,根据这个曲线,我们可以确定某个α的值,让F曲线在α值右侧的面积小于0.05或者0.01等等。

    2019-04-15
    2
  • mickey
    算法a所导致的平均转化率要比算法b的相对高出约2% 是怎么计算出来的?

    作者回复: (a均值-b均值) / (b均值),是相对百分比

    2019-02-26
    2
  • yaya
    笔记:两组样本的差异可能是由 1.采样造成的差异 2.数据分布不同造成的差异 如果要判断更多的是由哪种差异造成的,可以计算他们的比值。 采样的差异计算 各个数据到每个分布中心的距离和比如对第j水平来说,就是数据到j水平的距离,所有采样的差异就是所有水平的差异之和 分布造成的差异计算,就是各水平均值到所有均值的差异和 这两个差异我能理解,但是他们对应的量纲应该是不同的,就是他们不是同一基准下的差异但是为什么引入自由度就可以了呢?采样差异的自由度计算为什么要保证各水平均值不变,我没能理解

    作者回复: 量纲在物理学里用得比较多,我的理解是它代表了不同的含义,比如这里代表转化率的单位。假设转化率的定义是#click/#pageview,那么这里的两个水平的量纲都是这种次数的比例,量纲应该是相同的。 对于自由度的计算,如果平均值发生了变化,那么方差就要重新计算了。

    2019-02-25
    2
  • arcsinx
    老师,p>0.05 可以接受原假设吗?我记得一般是反证,使p<0.05之后拒绝原假设?

    作者回复: 对,如果你设置p的阈值为0.05,那么大于0.05就表示接受原假设,否则拒绝原假设。当然,如果要求没那么严苛,可以适当放大p的阈值

    2021-07-26
  • 撒冷之王
    你好, 例子中自变量数目 m = s-1 = 1; 不是太明白为什么 m 是根据 s-1 算出来的呢? 如果是文中的例子,自变量数目不就是“不同的算法” 这一个自变量吗(m = 1 就直接得出了)

    作者回复: 这里“不同的算法”包括a和b,所以不同算法的数量为2,m=s-1=2-1=1

    2021-07-21
  • Geek3340
    1.H0是一定要用均值进行假设,而且一定是假设两组或者多组均值相等,是原假设吗?H1是不相等吗? 2. “虽然算法a所导致的平均转化率要比算法b的相对高出约2%”,如果10天的平均值是0.298对比0.292,哪里来的高出2%呢?3. 如果方差分析,结果表明差异没有显著性,那下一步需要找其他什么分析方法来检验a/b测试哪个好呢? 4. 如何判断两组或多组数据一定是正态分布?如果不是正态分布,那怎么办呢?

    作者回复: 1. 对,H0假设是两者没有区别,来自同一个数据分布。H1表示相反意见。 2. 第二个原文没有说清楚是相对提升,也是0.292/0.298 = 1.02 3. 如果没有显著性,可以使用其他例如t检验、CHI方等等。如果多个结果都显示出没有显著的差异,那么a/b测试的结论就是两者没有统计上的差异

    2021-05-18
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部