【数理统计】神奇的P值
AB Test
工作中经常会通过AB Test帮助做产品决策,简单说就是为产品制作两个(A/B)或多个(A/B/C/...)版本,在同一时间维度,分别让不同组的用户群随机的访问这些版本,收集各群组的用户的数据,最后分析评估出最好版本正式采用。
比如下面的例子,A组看到红色的标题栏,B组看到绿色的标题栏,采集的数据可能每个组有多少比例的用户点击了标题栏。我们希望得到的结果是更多的用户点击,所以B组以37%胜出,最终决定采用绿色的标题栏。
但直接比百分比是不是合理呢?举个简单的例子,A组有10个人看到的界面2个人点击(点击率2/10=20%),B组只有5个人看到2个人点击(点击率2/5=40%),B组就直接以40%胜出吗?显然我们需要更有力的证据说明B的胜出是充分的。这里通常用的方法就是P值。
P值和显著性检验
继续上面的例子:A组(control组):10个人看到2个人点击,点击率0.2;B组(experiment组):5个人看到2个人点击,点击率0.4。
首先我们先假设B组没有任何作用,或者说,用户根本没有注意到颜色的变化,B的数据完全是在原来的基础上随机得到的。这里,“原来的”也就是20%的概率。也就是说,我们先假设在每个人会有20%概率点击的情况下,计算出现5个人中2个人点击的概率,可以通过二项概率公式计算:
Cn,k表示在n个人中选出2个人的组合数。举个例子,5个人:A,B,C,D,E,出现A,B点击且C,D,E不点击的概率为0.2*0.2*0.8*0.8*0.8=0.2^2*0.8^3,同理出现只有A,C点击的概率也为0.2^2*0.8^3。所以,最终出现5个人中2个人点击的概率为所有情况加起来即C5,2*0.2^2*0.8^3:
所以,在B组没有任何效果的假设下,我们有接近0.2的概率得到5个人中2个人点击的情况。这里求得的0.2048就是P值。
通常,我们选P<0.05的时候拒绝原假设,即认为B组有效果。换句话说,如果P值非常非常小,比如0.0001,即“B组没有任何效果”的假设下只有0.0001的概率会出现B的数据。运用小概率原理:小概率事件在一次实验中几乎不可能发生,我们认为原假设是不合理的,即“B组没有任何效果”的假设是不成立的(B组里一定发成了不同寻常的事情!)。
有点晕的地方可能是怎么用0.4(2/5)?即B组的实际点击率。我的理解是B组首先要通过显著性检验,也就是我们上面的P值检验。如果P值很大,结果“不显著”,那么0.4根本没有任何意义,因为这完全可能是统计误差得到的。只有P值很小的情况下,才认为0.4>0.2的比较是有意义的。
理解P值的计算可以在一定程度上帮助我们理解为什么“不显著”,比如(如果试验真的有效果)通常增加试验样本数是有用的,因为样本小的情况下P值通常很大。极端的例子,如果样本只有1个,那么P值只能是0.2或者0.8,任何结果都“不显著”。再比如上面的例子:5个人中2个人点击是不显著的,但是500个人200个人点击就很显著了。因为在原假设20%概率下出现500个人200点击的概率很小很小。
二项概率公式
第一次看到P值的时候,我的点完全集中在了二项概率公式上面。虽然直观的解释很容易理解,但这里隐藏的一个结果就是所有的概率之和为1,即:
验证的了一下,真的为1:
是不是很神奇!好奇宝宝忍不住翻出了当年的数学书:
居然只有一句话带过了,而且自己还留了笔记“用数学归纳法证明”,太“不显然”了!
试着重新证明一遍。所谓归纳法,就是首先n=1的时候是成立,然后假设n的时候成立,尝试证明n+1成立,即:
证明过程如下:
嗯,你可能注意到了,这里有个Cn+1,k的展开:Cn+1,k = Cn,k + Cn,k-1,从排列组合的意义上解释就是,从n+1个人中选k个人的组合数,等于从n个人中选k的组合数(一定不选某个人),加上从n个人中选k-1个人的组合组(一定选了某个人)。如果要证明,也是可以直接推出来的:
看来我的数学还没有完全还给老师!(◍•ᴗ•◍)
参考资料
p-value:https://www.baidu.com/link?url=RQaT38MszwZl3ycAsI-Zfl0DAX6htO9u8QkTwLv4drOv6LElHrXFZlu-1fjGbpyn&wd=&eqid=e0e1eccf000ab515000000025d16faeb
《概率论与数理统计》:https://book.douban.com/subject/2256637/
【数理统计】神奇的P值相关推荐
- Spring Cloud Netflix中文文档翻译笔记
原文地址:http://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/1.2.2.RELEASE/ Spring Cloud Net ...
- 9.29 正睿提高6
目录 2018.9.29 正睿提高6 A B C 考试代码 B C 2018.9.29 正睿提高6 时间:3.5h(实际) 期望得分:100+30+1 实际得分:100+20+0 比赛链接 T3想了一 ...
- Python入门——条件与循环:if、while、for
一. 条件if 条件语句格式: 执行语句-- if 判断条件: 执行语句-- else: 当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于& ...
- 记者调查:天价床垫有奇效?老人排队上床体验
俗话说,一分价钱一分货,最近这天价床垫让消费者们甚是头疼.一个床垫怎么就能买到如此高的价位呢?这个床垫有何神奇?是否值这么多钱?又是什么让这些老人们乐此不疲地上门体验呢? 记者也想一探究竟.来到一家这 ...
- Python股票数据处理的一些代码细节
Python股票数据处理的一些代码细节 Numpy和Pandas相关 Numpy和Pandas比较 numpy.ndarray和多类型数据 Numpy神奇的取值方法 Pandas透视表 如何删除num ...
- Python数学建模 正态分布检验
文章目录 基于Python的数学建模 数据生成 散点图/直方图 QQ图(Quantile-Quantile Plot) JB检验(大样本 n>30) Shapior-wilk检验(小样本 3 基 ...
- 定点数的除法C语言,FPGA定点小数计算(二)——除法运算
0 引言 在四则运算中,除法最为复杂,在时间上和空间上的开销都比较大.因此很多算法都极力避免进行除法运算,或者采用其他的方案来代替除法运算.但是,除法运算作为基本的四则运算之一,在很多情况下依旧是不可 ...
- python验证码识别爆破_python-i春秋验证码识别
python+机器学习+验证码识别+源码 简单介绍 最近在写某网站的自动注册,在注册的过程中遇到一些问题,如js的执行.验证码的识别等等,今天给大家如何用python通过机器学习的方式实现验证码的识别 ...
- 使用 Kotlin 协程创建动态代理
够在运行时实现接口,并决定如何在调用方法时动态执行方法.这对于在装饰器模式中描述的现有实现(尤其是来自第三方库)周围添加附加功能非常有用.然而,Kotlin协程在创建动态代理时引入了一系列新问题.我们 ...
最新文章
- Latex中设置字体颜色
- [JavaScript]只需一行代码,轻松搞定快捷留言-V2升级版
- java xmlsec_找不到net.shibboleth.tool:xmlsectool:2.0.0
- vue引入外部文件_vue文件中引入外部js
- Problem - 4828 Grids
- 无头虚拟化服务器,在 Ubuntu 18.04 LTS 上使用 KVM 配置无头虚拟化服务器
- python求矩阵维度必须一致_python数据分析(二)--Numpy
- EOS Nation更新“flash.sx遭攻击”进展:将建议MSIG根据快照将资金退还
- pptx库ppt演示 python_详解 Python 操作 PPT 的各种骚操作!
- 使用base64:url 来定义背景图片url
- 【渝粤教育】电大中专Office办公软件_1作业 题库
- 在VScode中使用opencv,配置好了以后无法找到opencv2/opencv.hpp的问题
- 好书推荐|《CSS新世界》,前端人员必备宝书!
- H5点击复制到剪贴板
- fingerprint mismatch错误原因分析
- 《如何阅读一本书》读后
- ctab提取dna流程图_CTAB法提取植物DNA原理以及步骤
- 解决uniapp map遮盖遮罩层
- 将linux内核烧进arm板,ARM开发板上uClinux内核移植
- CefSharp的ChromiumWebBrowser截出来的图片是空白