理论到实践,A/B测试不得不直面的4个统计学问题
有放回?无放回?
从总体中随机抽取一个容量为n的样本,当样本容量 n足够大(通常要求n ≥30)时,无论总体是否符合正态分布,样本均值都会趋于正态分布。期望和总体相同,方差为总体的1/n。这即是中心极限定理,是A/B测试数据分析的基础。
然而抽样分为有放回和无放回两种。样本均值的方差是总体方差的1/n(n为样本容量),这个结论是针对有放回抽样的。实际试验中,大部分是无放回的,这样流程比较简单。无放回抽样,样本均值方差见下。观察公式可知道,当总体容量比样本容量大很多倍时,样本均值的方差可以近似为总体方差的1/n。

配对样本?独立样本?
当两个样本的获取存在关联时,称为配对样本。例如比较人早晚身高变化,如果早上身高的样本包含了张三,则晚上身高的样本也要包含张三。
某些情况下配对样本比较难实现,比如药物双盲试验,患者不能既服用安慰剂又服用药物。这时只能使用独立样本,随机分配个体进入两个样本,认为2个样本的个体统计上不存在差别。同时患者不知道自己服用的是安慰剂还是药物,消除心理作用的影响。
互联网产品的A/B测试和新药试验类似,理论上说应该让同一组用户同时看到多个版本进行比较,或者是看完一个版本后用时间机器倒回去再看另一个版本。显然无法做到,只能选取试验用户时足够的随机,让两组用户从统计意义上相同,认为偏差都是产品版本造成的。
样本方差?总体方差?
A/B测试计算置信区间的公式:
置信区间计算公式中的方差项,理论上应该使用总体方差。而总体方差没法知道,只能用样本方差来代替了。好在样本方差是总体方差的无偏估计。样本方差和总体方差的比值,符合χ2分布。

时变?时不变?
A/B测试需要假设产品用户的访问习惯不会随着时间的推移而发生变化。很遗憾在某些情况下并不是这样。某些产品存在很明显的季节因素,例如旅游。一般的A/B测试周期会包含休息日和工作日,但很难包含多个季节,在外推测试结论时要十分谨慎。另外强烈的外部事件会对用户产生刺激,要避免在这种情况下进行A/B测试,尽量在平稳时期进行。
本文作者:吆喝科技高级客户成功专家 韩刚
理论到实践,A/B测试不得不直面的4个统计学问题的更多相关文章
- Java 理论与实践: 非阻塞算法简介——看吧,没有锁定!(转载)
简介: Java™ 5.0 第一次让使用 Java 语言开发非阻塞算法成为可能,java.util.concurrent 包充分地利用了这个功能.非阻塞算法属于并发算法,它们可以安全地派生它们的线程, ...
- Java 理论与实践: 用弱引用堵住内存泄漏
弱引用使得表达对象生命周期关系变得容易了 虽然用 Java™ 语言编写的程序在理论上是不会出现“内存泄漏”的,但是有时对象在不再作为程序的逻辑状态的一部分之后仍然不被垃圾收集.本月,负责保障应用程序健 ...
- Java 理论与实践: 流行的原子——新原子类是 java.util.concurrent 的隐藏精华(转载)
简介: 在 JDK 5.0 之前,如果不使用本机代码,就不能用 Java 语言编写无等待.无锁定的算法.在 java.util.concurrent 中添加原子变量类之后,这种情况发生了变化.请跟随并 ...
- DDD(领域驱动设计)理论结合实践
DDD(领域驱动设计)理论结合实践 写在前面 插一句:本人超爱落网-<平凡的世界>这一期,分享给大家. 阅读目录: 关于DDD 前期分析 框架搭建 代码实现 开源-发布 后记 第一次听 ...
- Java 理论与实践: 并发集合类
Java 理论与实践: 并发集合类 DougLea的 util.concurrent 包除了包含许多其他有用的并发构造块之外,还包含了一些主要集合类型 List 和 Map 的高性能的.线程安全的实现 ...
- CAN调度理论与实践分析
CAN调度理论与实践分析 分布式嵌入式系统是当前嵌入式系统的重要发展方向,因为它能提供更强的性能,节约系统的总体成本.但是由于各单个节点必须有通信网络相连才能协调地工作,网络就成了关键部分,没有网络提 ...
- 高翔《视觉SLAM十四讲》从理论到实践
目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...
- 计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践
计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践 2018年06月13日 16:38:11 轻春 阅读数 6004更多 分类专栏: 机器学习 机器学习荐货情报局 版 ...
- Java 理论与实践: 流行的原子
Java 理论与实践: 流行的原子 新原子类是 java.util.concurrent 的隐藏精华 在 JDK 5.0 之前,如果不使用本机代码,就不能用 Java 语言编写无等待.无锁定的算法.在 ...
随机推荐
- 我的c漏洞
传入指针参数 #include<stdio.h> #include<stdlib.h> void READ(int *a) { scanf("%d",a); ...
- 七牛php sdk 生成上传凭证时出现 undefined function Qiniu_SetKeys()
将qiniu/http.php文件改名即可,原因是xampp等集成环境会安装pear存在了http.php
- Magicodes.WeiChat——版本发布历史
购买地址:https://item.taobao.com/item.htm?id=520205558575 您可以在新标签页打开此图,以查看原始图片. Magicodes.WeiChat为湖南心莱信息 ...
- EQueue - 详细谈一下消息持久化以及消息堆积的设计
前言 之前写了一篇文章,总体介绍了EQueue.在看这篇文章之前如果还没看过那篇文章,可能会看不懂这篇文章.所以建议没看过的朋友务必先看一下那篇文章中所提到的各种概念,这样才能更好的理解本文所说的内容 ...
- 【OpenGL(SharpGL)】支持任意相机可平移缩放的轨迹球实现
[OpenGL(SharpGL)]支持任意相机可平移缩放的轨迹球 (本文PDF版在这里.) 在3D程序中,轨迹球(ArcBall)可以让你只用鼠标来控制模型(旋转),便于观察.在这里(http://w ...
- Lucene系列-索引文件
本文介绍下lucene生成的索引有哪些文件组成,每个文件包含了什么信息.基于Lucene 4.10.0. 数据结构 索引(index)包含了存储的文档(document)正排.倒排信息,用于文本搜索. ...
- Qt控制台中文乱码问题
本文主要记录了Qt控制台出现中文乱码的问题,一下列出了集中编码设置的方法.以前用VC6.0写的一个贪吃蛇的游戏,今天把源文件拿出来在Qt上面运行,出现中文乱码的问题.以前也遇到过,没想到小小的乱码,折 ...
- i++ and ++i efficiency
其实这个问题,百度的话,有一大堆的参考资料,但是,在这里,我产生了一些困惑,他们所分析的结果,和我的测试代码不一致,这让我纠结了,所以,再次的写一下这个问题,顺顺思路. 我的测试环境:系统:Windo ...
- node.js小结 2
下载node安装npm什么的就不说了 入门总结 http://www.cnblogs.com/Darren_code/archive/2011/10/31/nodejs.html 进入node_HOM ...
- Java-数组练习4
16.按要求编写Java应用程序.编写一个名为Test的主类,类中只有一个主方法: 在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1, 3,5,…,99}输出这个数组中的所有元 ...