随机陷阱和P值
如果让大家写一个50次的抛硬币实验的可能结果(头像H或字T),多半人在连续三个一样的后,会换一下。因为大家都知道,连续一样的越多,概率越小,越不可能发生。大部分人不会去想,其实HHHTT和HHHHH发生的概率是一样大。
不知道大家有没看过一本书叫<秘密>(1)。此书的基本观点就是心想事成,如果你坚定地认为一件事情会发生,它就会发生。假设我非常的相信这个理论。现在做一个实验,我在与别人抛硬币打赌,我赌H,连续三次赢的胜出。打赌的过程中,我坚信我一次会赢,结果一开始就连续三次的得了H,我赢了。我们可以得出结论,<秘密>的心想事成的理论是对的吗?
我猜有人会说,不不不,T/H概率为0.5的二项分布,是HHH的概率是1/8。1/8概率的事件还是可能发生的,所以不能说就是”心想事成"的理论在起作用。Bingo!这个有力的反驳看起来很容易做到,是吗?但事实上,并不是很多的人都这么想,据调查,某位美国总统竞选人如果胜算只有30%的话,大部人的人会认为是不可能成功的(但事实常常不是这样)。某位正在减重的微胖人士,参加了一个减重活动,一个月后,发现体重确实轻了两公斤,一般他/她会认为这个减重活动很有效果,完全忽略如果什么都不做的话,一个月体重减轻两公斤也是有一定的概率的,而且还不低。用统计学的语言来说,就是大家非常容易低估随机因素的力量,我觉得用通俗的话来说,就是大家容易掉入随机陷阱。我们回到打赌实验来,如果第二次打赌,我又是头三次就都得了H,赢了,那我可以得出心想事成的理论是对的吗?
如果还不能,那第三次还一样呢?
如果还不能,要什么时候能推断出这个理论是成立的呢。
也许你会想出一个办法,我就定义,如果概率是0.01的事件还发生,我就当作是某种力量在起作用。当第二次发生的时候,概率为1/64,不成立。第三次发生,概率为1/512,小于0.01,那就是这个力量在起作用。也就是如果连续三次实验都出现头三次都抛出H,那"心想事成"的理论就是成立的。
其实这就是P值和alpha值的一个极简例子。实际算出来的1/8, 1/64, 1/512就是p值,0.01就是alpha值。P值就是旨在算出一个事件随机也会发生的概率。那为什么统计学的p值理解起来这么拗口呢。

首先,对于一个观察对象,我们不一定知道它的分布。我们这个例子是二项分布,我们知道了分布,就很容易推算出某件事件的发生概率。但如果不知道分布呢,那事情就变得非常的复杂。所以我们必须用复杂的方法来算出这个p值。没有绝对完美的方法,所以算出的p值不是绝对的准确。如果不是准确的p值,那之前的定义(某个事件随机发生的概率)也是不准确的。所以应该修正为,某种模型下的某事件的随机概率。事情变得复杂起来了是不是。如果以下无法follow,只要牢牢的记住,p值的目的就好了(算出一个事件随机发生的概率,排除随机因素对事件的影响)。
当做一个统计学实验的时候,比如说A/B test。实验的通常做法是在B上面做了某个改动。比如说对网页的某个button的位置做了改动,然后观察,改动之后,点击率是否提高。对于点击率的分布,随机因素太多了,无法给出分布。但我们有数据,比如说,
我们现在就要通过这些数据来算出,B当中多了的10是随机造成的,还是B的改动造成的。最经典的做法是,零条件假设实验。就是把A和B的数据并在一起,shuffle,然后随机分成两组,记录下差距值。重复实验n次,就有一组值,然后计算差距在10以上的概率是多少。这个概率就是p。如果这个概率小于某个规定的值(alpha),就说明这个零条件假设失败,得出结论,B实验的点击率提升是由button改动造成的。
上面这个例子也不是很难理解,是不是。问题就是大家并不是遵守同样的做法来计算p值 (并不都是遵循: merge-shuffle-resample,即使遵循了,细节也有很大不同)。有的统计学论文为了证明的自己的研究结果有效,在众多的方法中,就选择了对p值有力的方法。还记得我之前引用过的话吗, if you torture the data long enough, sooner or later it will confess.
所以,在统计学领域甚至禁止用p值来定结论。而且p值据说也在淡出学术界(真的吗?)。
在数据科学领域,P值一般来说不直接作用于模型,而是用来分析某个特征,以此决定要不要引入某个特征。
希望此文帮你破解了拗口的P值。
另,网上有无数的关于p值介绍的文章。我觉得最好的都比不上<Practical Statistics for Data Scientists>书中关于介绍条件假设实验和p值这一章。
<秘密>链接
https://www.goodreads.com/book/show/52529.The_Secret?from_search=true&from_srp=true&qid=YexYV3XWGV&rank=13
阅读作者更多最新文章,关注微信公众号:

随机陷阱和P值的更多相关文章
- LOJ #2542. 「PKUWC 2018」随机游走(最值反演 + 树上期望dp + FMT)
写在这道题前面 : 网上的一些题解都不讲那个系数是怎么推得真的不良心 TAT (不是每个人都有那么厉害啊 , 我好菜啊) 而且 LOJ 过的代码千篇一律 ... 那个系数根本看不出来是什么啊 TAT ...
- 关于使用array_rand随机取出数组的值
代码如下 <?php echo "<meta charset='utf-8'/>";//选择解码方式,防止乱码现象 $a = array("abc&qu ...
- loj 2542 随机游走 —— 最值反演+树上期望DP+fmt
题目:https://loj.ac/problem/2542 因为走到所有点的期望就是所有点期望的最大值,所以先最值反演一下,问题变成从根走到一个点集任意一点就停止的期望值: 设 \( f[x] \) ...
- C#怎么从List集合中随机取出其中一个值
1.首先在该命名空间下创建一个实体,和在Main方法下List集合,为后续做准备: /// <summary> /// 实体 /// </summary> public cla ...
- N个数随机相加得出固定值的排列组合
static double[] iArr = new double[10] { 1,2,3,4,5,6,7,8,9,10 }; static Stack<double> stack = n ...
- 【LOJ 2542】【PKUWC2018】 随机游走(最值反演 + 树上期望dp)
哇我太菜啦555555 不妨钦定我们需要访问的点集为$S$,在$S$已知的情况下,我们令$f(x) $表示从$x$走到点集$S$中任意一点的期望步数. 若$x∈S$,则显然$f(x)=0$,否则$f[ ...
- PHP随机获取预设的值
前面我们讲了php怎么获取随机数,<?php echo rand(1000,2000); ?> 一行代码就能搞定,如果要获取ASP,PHP,JAVASCRIPT,AJAX,CSS,JQUE ...
- 给MD5加上salt随机盐值加密算法实现密码安全的php实现
给MD5加上salt随机盐值加密算法实现密码安全的php实现 如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码.加上sal ...
- 【Java】【5】List随机取值
//shuffle 打乱顺序 Collections.shuffle(list); //随机抽取1个值 System.out.println(list.get(0)); //随机抽取N个值 Syste ...
随机推荐
- Python编程之美:最佳实践指南PDF高清完整版免费下载|百度云盘|Python新手到进阶
百度云盘:Python编程之美:最佳实践指南PDF高清完整版免费下载 提取码:1py6 内容简介 <Python编程之美:最佳实践指南>是Python用户的一本百科式学习指南,由Pytho ...
- 前端学习(十七):JavaScript常用对象
进击のpython ***** 前端学习--JavaScript常用对象 JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等 在JavaScript中,对象是拥有属性和方法的数据 ...
- 如何用redis做缓存
redis缓存 在互联网应用中经常需要用redis来缓存热点数据. redis数据在内存,可以保证数据读取的高效,接近每秒数十万次的吞吐量 减少下层持久层数据库读取压力,像mongodb,每秒近千次读 ...
- GitOps初阶指南:将DevOps扩展至K8S
本文转自Rancher Labs 在过去十年的编程中,出现了一些革命性的转变.其中之一是源于围绕DevOps的实践,它将开发和运维团队整合到一个共享的工作流程中,此外还有持续集成和持续交付(CI/CD ...
- PHP curl_share_setopt函数
(PHP 5 >= 5.5.0) curl_share_setopt — 设置 cURL 共享句柄的一个选项. 说明 bool curl_share_setopt ( resource $sh ...
- CF R630 div2 1332 E Height All the Same
LINK:Height All the Same 比赛的时候 被这道题给打自闭了 还有1个多小时的时候开始想 想了30min 无果 放弃治疗. 心态炸了 F不想看了 应该要把题目全看一遍的 下次不能这 ...
- 剑指 Offer 58 - II. 左旋转字符串
本题 题目链接 题目描述 我的题解 方法一:使用库函数 s.substring() 代码如下 public String reverseLeftWords(String s, int n) { ret ...
- python程序设计PDF高清完整版免费下载|百度云盘
百度云盘:python程序设计PDF高清完整版免费下载 提取码:bvsz Python 程序设计基础难易程度适中.除Python应用开发基础知识之外,还适当介绍了Python标准库以及内置对象的工作原 ...
- Python机器学习及实践_从零开始通往KAGGLE竞赛之路PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:i5nw Python机器学习及实践面向所有对机器学习与数据挖掘的实践及竞赛感兴趣的读者,从零开始,以Python编程语言为基础,在不涉及大量数学模型与复杂编程知识的前提下,逐步带领读 ...
- Python格式化字符串(f,F,format,%)
# 格式化字符串: 在字符串前加上 f 或者 F 使用 {变量名} 的形式来使用变量名的值 year = 2020 event = 'Referendum' value = f'Results of ...