All I know about A/B Test (1) : 均值型指标与比值(率)型指标的计算区别
因为最近在找实习,所以打算把自己之前学过的关数据分析的知识总结(复习)一下。在总结A/B test时,我发现中文互联网中关于A/B test的总结已经很多了,但是对于均值型指标和比值(率)型指标在设计实验、计算统计量时的区别却没有一个很明确的总结。甚至有的文章给出的计算公式语焉不详、前后矛盾,计算样本数量给的是均值型指标的计算公式,计算Z值时又给出了比值(率)型指标的计算公式。
均值型指标和比值(率)型指标
在互联网数据分析中,有许多指标是数据分析师所关心的,对于不同的数据分析任务需要选取合适的指标。对A/B test而言,这些指标可以分为两类
- 比值(率)型,如点击率、转化率等
- 均值型,如人观看时长等
需要注意的是,在统计学中,这两类指标的假设检验是不同的。这种不同主要体现在三个方面:效应量(Effect size)的计算、所需样本量的计算以及Z检验统计量的计算。
所需样本量
在给出计算样本量之前,首先介绍一下样本量的四个影响因素,分别是:
- 显著性水平(α):显著性水平越低,对实验结果的要求也就越高,越需要更大的样本量来确保精度
- 统计功效(1 – β):统计功效意味着避免犯二类错误的概率,这个值越大,需要的样本量也越大
- 均值差异(\(\mu_1, \mu_2\)):如果两个版本的均值差别巨大,也不太需要多少样本,就能达到统计显著
- 标准差(σ):标准差越小,代表两组差异的趋势越稳定。越容易观测到显著的统计结果
一个A/B test需要的样本量就由四个指标进行计算:
比值(率)型指标
\[N = \frac{(z_{1-\alpha/2}\sqrt{2\frac{p_1 +p_2}{2}(1-\frac{p_1 +p_2}{2})} +z_{1-\beta}\sqrt{p_1(1-p_1)+ p_2(1-p_2)} )^2}{(p_1-p_2)^2}
\]其中\(p_1,p_2\)分别表示两组样本的比值型指标。上述方法为R和G*power中使用公式,其他工具略有不同,更多比值类样本量计算方法,参考[2]。
均值型指标
\]
\]
其中\(N_1,N_2\) 分别表示两组样本数量;\(z_{1-\alpha/2},z_{1-\beta}\) 通过\(z\)分布计算;\(\mu_1,\mu_2\) 分别为当前均值指标和预估改进后均值指标(或者期望检测到的指标变化)。重点是标准差\(\sigma\) ,实验前很难知道其大小,一般可以根据经验值预估。
效应量(Effect size)
效应量又称效应值,提供了对效应大小的具体测量,也就是说反映了具体效果的大小。
- 比值(率)型指标
\]
- 均值型指标
\[es = \frac{\mu_1 - \mu_2}{\sigma_{pooled}} = \frac{\mu_1 - \mu_2}{\sqrt{\frac{(n_1-1)s_1^2+(n_2-1)s_2^2}{n_1+n_2-2}}}
\]其中\(s_1, s_2\) 分别表示两组样本的标准差.
Z检验统计量
比值(率)型指标
商务与经济统计[1]中给出的方法
\[z = \frac{\overline{p}_1 - \overline{p}_2}{\sqrt{\overline{p}(1-\overline{p})(\frac{1}{n_1}+\frac{1}{n_2})}}
\]\[\overline{p} = \frac{n_1\overline{p}_1 + n_1\overline{p}_1}{n_1 + n_2}
\]网络中给出的方法:
\[z = \frac{(p_1 - p_2) - (\mu_1-\mu_2)}{\sqrt{\frac{p_1(1-p_1)}{n_1} + \frac{p_2(1-p_2)}{n_2}}}
\]找了好久没有找到推导,个人看法是把比值型指标看做伯努利分布,则根据中心极限定理,\(B(1,p)\sim N(p,p(1-p))\),然后从均值型指标公式推导过来。
均值型指标
\[z = \frac{(\overline{x}_1 - \overline{x}_2) - (\mu_1-\mu_2)}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}
\]
以上就是我总结的关于均值型指标和比值(率)型指标在A/B test中的区别,如有遗漏和错误,望大家多多指正。
参考文献
[1]. 商务与经济统计
[3]. A/B测试(A/B试验)的概述、原理、公式推导、Python实现和应用
All I know about A/B Test (1) : 均值型指标与比值(率)型指标的计算区别的更多相关文章
- In-Memory:内存数据库
在逝去的2016后半年,由于项目需要支持数据的快速更新和多用户的高并发负载,我试水SQL Server 2016的In-Memory OLTP,创建内存数据库实现项目的负载需求,现在项目接近尾声,系统 ...
- 关于DOM的操作以及性能优化问题-重绘重排
写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...
- H5实现摇一摇技术总结
摇一摇遇到的问题 一.如何对摇晃效果进行反馈 刚开始的处理方式是,摇晃过程中不做任何处理,但后来反馈说这种效果不好,好像就没有摇动一样,如果声音也不响的话,就真的和什么都没发生一样. 后来想了想,加入 ...
- 【AR实验室】mulberryAR : ORBSLAM2+VVSION
本文转载请注明出处 —— polobymulberry-博客园 0x00 - 前言 mulberryAR是我业余时间弄的一个AR引擎,目前主要支持单目视觉SLAM+3D渲染,并且支持iOS端,但是该引 ...
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- Unity3d学习 相机的跟随
最近在写关于相机跟随的逻辑,其实最早接触相机跟随是在Unity官网的一个叫Roll-a-ball tutorial上,其中简单的涉及了关于相机如何跟随物体的移动而移动,如下代码: using Unit ...
- Tomcat一个BUG造成CLOSE_WAIT
之前应该提过,我们线上架构整体重新架设了,应用层面使用的是Spring Boot,前段日子因为一些第三方的原因,略有些匆忙的提前开始线上的内测了.然后运维发现了个问题,服务器的HTTPS端口有大量的C ...
- 你必须知道的EF知识和经验
注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- C语言 · 高精度加法
问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...
随机推荐
- js 深入原理讲解系列-Promise
js 深入原理讲解系列-Promise 能看懂这一题你就掌握了 js Promise 的核心原理 不要专业的术语,说人话,讲明白! Q: 输出下面 console.log 的正确的顺序? const ...
- 使用 js 实现一个简易版的 async 库
使用 js 实现一个简易版的 async 库 具有挑战性的前端面试题 series & parallel 串行,并行 refs https://www.infoq.cn/article/0NU ...
- jest ignore
jest ignore modulePathIgnorePatterns https://jestjs.io/docs/en/configuration modulePathIgnorePattern ...
- CSS Learning Paths
CSS Learning Paths CSS Expert refs https://developer.mozilla.org/en-US/docs/Web/CSS https://css-tric ...
- 大小厂必问Java后端面试题(含答案)
你好,我是yes. 这个系列的文章不会是背诵版,不是那种贴上标准答案,到时候照着答就行的面试题汇总. 我会用大白话尽量用解释性.理解性的语言来回答,但是肯定没有比平时通过一篇文章来讲解清晰,不过我尽量 ...
- Angular性能优化实践——巧用第三方组件和懒加载技术
应该有很多人都抱怨过 Angular 应用的性能问题.其实,在搭建Angular项目时,通过使用打包.懒加载.变化检测策略和缓存技术,再辅助第三方组件,便可有效提升项目性能. 为了帮助开发者深入理解和 ...
- C++算法代码——纪念品分组[NOIP2007 普及组]
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1099 https://www.luogu.com.cn/problem/P1094 ...
- Mybatis-05 注解开发
Mybatis-05 注解开发 注解开发 注解的核心是反射机制 面向接口编程的根本原因:解耦,可拓展,提高复用,分层开发中.上层不用管具体的实现,大家都遵守共同的标准,使得开发变得容易,规范性好. 1 ...
- 08_MySQL数据库的字段约束
数据库的字段约束 实战: CREATE TABLE t_teacher ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) N ...
- 防抖和节流及对应的React Hooks封装
Debounce debounce 原意消除抖动,对于事件触发频繁的场景,只有最后由程序控制的事件是有效的. 防抖函数,我们需要做的是在一件事触发的时候设置一个定时器使事件延迟发生,在定时器期间事件再 ...