前言

为了对比不同策略的效果,如新策略点击率的提升是否显著,常需要进行A/B测试。但测试是有成本的,样本量小时不能判断出差异是否是由抽样误差引起,样本量太大时如果效果不好则会造成难以挽回的损失。如何科学地选择样本量呢?需要了解A/B测试的统计学原理

一、 A/B测试的统计学原理

(一)大数定律和中心极限定理

A/B 测试样本量的选取基于大数定律和中心极限定理。通俗地讲:

1. 大数定律:当试验条件不变时,随机试验重复多次以后,随机事件的频率近似等于随机事件的概率。

2. 中心极限定理:对独立同分布且有相同期望和方差的n个随机变量,当样本量很大时,随机变量

近似服从标准正态分布N(0,1)。

根据大数定律和中心极限定理,当样本量较大(大于30)时,可以通过Z检验来检验测试组和对照组两个样本均值差异的显著性。

注:样本量小于30时,可进行t检验。

(二)假设检验

在进行假设检验时,我们有两个假设:原假设H0(两个样本没有显著性差异)和备择假设H1(两个样本有显著性差异)。相应地,我们可能会犯两类错误:

第I类错误:H0为真,H1为假时,拒绝H0,犯第I类错误(即错误地拒绝H0)的概率记为alpha。

第II类错误:H0为假,H1为真时,接受H0,犯第II类错误(即错误地接受H0)的概率记为beta。

1. 犯第I类错误的概率alpha与置信水平1-alpha

通常,将犯第I类错误的概览alpha(0.05)称为显著性,把没有1-alpha(0.95)称为置信水平,即有1-alpha的概率正确接受了H0。

一般,alpha取值为0.05或更小的数值,即容忍犯第I类错误的概率最大为alpha。

2. 犯第II类错误的概率beta与统计功效power=1-beta

通常,将犯第II类错误的概率称为beta;将1-beta称为统计功效,即正确拒绝H0的概率。

一般,beta取10%~20%,则统计功效的取值为80%~90%。

犯第一类错误的概览alpha与犯第二类错误的概览beta之间的关系如下图:

3. 统计显著性p-value

当p-value

根据统计学原理计算样本量,需要根据显著性水平查正态分布表,工作中用到的比较少,这里省略。

工作中可用python中的已有的包和函数计算。

二、样本量计算的python实现

Python统计包statsmodels.stats.power中,有一个NormalIndPower工具,可以用其中的solve_power函数实现。

Solve_power函数中的参数如下:

(1)参数effect_size :两个样本均值之差/(原来样本值*(1-原来样本值))的开方

(2)nobs1:样本1的样本量,样本2的样本量=样本1的样本量*ratio

(3)alpha:显著性水平,一般取0.05

(4)power:统计功效,一般去0.8

(5)ratio: 样本2的样本量/样本1的样本量,一般取1

(6)alternative:字符串str类型,默认为‘two-sided’,也可以为单边检验:’larger’ 或’small’

例:目前的点击率CTR是0.3,我们要想提升10%,将点击率提升到0.33,测试组和对照组的样本量相同。

计算如下:

fromstatsmodels.stats.power import NormalIndPower

import math

effect_size= 0.03/math.sqrt(0.3*(1-0.3))

ztest=NormalIndPower()

num=ztest.solve_power(

effect_size=effect_size,

nobs1=None,

alpha= 0.05,

power= 0.8,

ratio=1,

alternative= 'two-sided')

print (num)

3662.8015711721328

检测效果变化值越小,需要的样本量越大;检测效果变化值越大,需要的样本量越小。因为,变化效果越小,越有可能是抽样误差引起的;为了避免抽样误差的影响,需要增大样本量。

https://abtestguide.com/abtestsize/

python统计图原理_AB测试原理及样本量计算的Python实现相关推荐

  1. 测试原理_OTDR测试原理及注意事项

    1.OTDR测试原理 OTDR 是 Optical Time Domain Reflectometer 的英文缩写 ,即光时域反射仪.它应用于各种光通信网络的测试 ,包括测试光纤传输系统中的接头损耗. ...

  2. python 假设检验 样本量太大_【Python】统计科学系列之最小样本量计算

    首页 专栏 python 文章详情 0 统计科学系列之最小样本量计算 张俊红发布于 35 分钟前 这一篇我们讲讲统计中的最小样本量计算.大家先想想为什么叫最小样本量,而不是最大或者直接叫样本量计算呢? ...

  3. python划分训练集和测试集_杨涛的Python机器学习3:单特征与多特征、训练集与测试集,杨桃...

    本人CSDN博客专栏:https://blog.csdn.net/yty_7 Github地址:https://github.com/yot777/ 单特征与多特征 在上一节标签和特征的示例中,我们使 ...

  4. python实现var模型_copula函数及其Var计算的Python实现

    Copula函数思想 Copula函数能够把随机变量之间的相关关系与变量的边际分布分开进行研究,这种思想方法在多元统计分析中非常重要.直观来看,可以将任意维的联合分布H(x1,...,xn)=P(X1 ...

  5. python 拼音相似度_多种相似度计算的python实现

    前言 在机器学习中有很多地方要计算相似度,比如聚类分析和协同过滤.计算相似度的有许多方法,其中有欧几里德距离(欧式距离).曼哈顿距离.Jaccard系数和皮尔逊相关度等等.我们这里把一些常用的相似度计 ...

  6. 机器学习 特征选择篇——python实现MIC(最大信息系数)计算

    机器学习 特征选择篇--python实现MIC(最大信息系数)计算 摘要 python实现代码 计算实例 摘要 MIC(最大信息系数) 可以检测变量之间的非线性相关性,常用于特征工程中的特征选择,即通 ...

  7. python gdbt+fm_GBDT回归的原理及Python实现

    提到GBDT回归相信大家应该都不会觉得陌生(不陌生你点进来干嘛[捂脸]),本文就GBDT回归的基本原理进行讲解,并手把手.肩并肩地带您实现这一算法. 完整实现代码请参考本人的p...哦不是...git ...

  8. 2019测试指南-测试测试原理

    2019独角兽企业重金招聘Python工程师标准>>> 什么是测试? 在Web应用程序的开发生命周期中,需要测试许多东西,但测试实际上意味着什么?Merriam-Webster Di ...

  9. python +appium实现原理_python_appium使用原理

    一. appium介绍 Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序测试. 它使用WebDriver协议驱动iOS,Android和Windows应用程序. 多平台支持: ...

最新文章

  1. WebApi2官网学习记录---异常处理
  2. 通da信TCP长连接数据算法分析
  3. 为了把mysql的索引底层原理讲清楚,我把计算机翻了个底朝天
  4. 网站设计流程图(来源于网络)
  5. oracle11g安装成功
  6. 七个你没用过的炫酷开发工具推荐
  7. c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
  8. Apollo进阶课程㉟丨Apollo ROS原理—4
  9. 14008.xilinx-EMIO 扩展I2C问题
  10. 向服务器上传本地大文件的方法xshell
  11. Golang Hash MD4
  12. 【每日算法Day 96】腾讯面试题:合并两个有序数组
  13. spss需要计算机代码,SPSS编程操作入门
  14. 滴滴DSRC抢楼大赛,十一快车券飞起来
  15. 期货反向对冲核心思维跟单策略
  16. 推荐系统 --- 工程
  17. linux bind日志级别,Bind日志配置。
  18. Kalman滤波器参数分析
  19. 关于Git及GitLab的简单易懂的使用方法(将本地仓库的项目提交到master分支或者自定义的分支上)
  20. iOS运行时Runtime浅析

热门文章

  1. html游戏代码_JS实现连连看小游戏,代码很简单,思路很清晰!
  2. docker WARNING: IPv4 forwarding is disabled. 解决方法
  3. jenkins ssh发布配置
  4. 微信小程序开发教程(基础篇)8-数据绑定下
  5. IE内置的WebBrowser控件之--WEB打印
  6. 用备份进行Active Directory的灾难重建:Active Directory系列之三
  7. [Automation] 自动化测试工具和测试框架大集合
  8. 使用p3p跨域设置Cookie
  9. Got a packet bigger than 'max_allowed_packet' bytes
  10. 关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍