如果让大家写一个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值的更多相关文章

  1. LOJ #2542. 「PKUWC 2018」随机游走(最值反演 + 树上期望dp + FMT)

    写在这道题前面 : 网上的一些题解都不讲那个系数是怎么推得真的不良心 TAT (不是每个人都有那么厉害啊 , 我好菜啊) 而且 LOJ 过的代码千篇一律 ... 那个系数根本看不出来是什么啊 TAT ...

  2. 关于使用array_rand随机取出数组的值

    代码如下 <?php echo "<meta charset='utf-8'/>";//选择解码方式,防止乱码现象 $a = array("abc&qu ...

  3. loj 2542 随机游走 —— 最值反演+树上期望DP+fmt

    题目:https://loj.ac/problem/2542 因为走到所有点的期望就是所有点期望的最大值,所以先最值反演一下,问题变成从根走到一个点集任意一点就停止的期望值: 设 \( f[x] \) ...

  4. C#怎么从List集合中随机取出其中一个值

    1.首先在该命名空间下创建一个实体,和在Main方法下List集合,为后续做准备: /// <summary> /// 实体 /// </summary> public cla ...

  5. N个数随机相加得出固定值的排列组合

    static double[] iArr = new double[10] { 1,2,3,4,5,6,7,8,9,10 }; static Stack<double> stack = n ...

  6. 【LOJ 2542】【PKUWC2018】 随机游走(最值反演 + 树上期望dp)

    哇我太菜啦555555 不妨钦定我们需要访问的点集为$S$,在$S$已知的情况下,我们令$f(x) $表示从$x$走到点集$S$中任意一点的期望步数. 若$x∈S$,则显然$f(x)=0$,否则$f[ ...

  7. PHP随机获取预设的值

    前面我们讲了php怎么获取随机数,<?php echo rand(1000,2000); ?> 一行代码就能搞定,如果要获取ASP,PHP,JAVASCRIPT,AJAX,CSS,JQUE ...

  8. 给MD5加上salt随机盐值加密算法实现密码安全的php实现

    给MD5加上salt随机盐值加密算法实现密码安全的php实现 如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散列值字典(例如MD5密码破解网站),得到某用户的密码.加上sal ...

  9. 【Java】【5】List随机取值

    //shuffle 打乱顺序 Collections.shuffle(list); //随机抽取1个值 System.out.println(list.get(0)); //随机抽取N个值 Syste ...

随机推荐

  1. 教孩子学编程 python语言版PDF高清完整版免费下载|百度云盘|Python入门

    百度云盘:教孩子学编程 python语言版PDF高清完整版免费下载 提取码:mnma 内容简介 本书属于no starch的经典系列之一,英文版在美国受到读者欢迎.本书全彩印刷,寓教于乐,易于学习:读 ...

  2. 国外的非常好的开发提问回答的网站https://stackoverflow.com/questions

    https://stackoverflow.com/questions 可以进行搜索,在页面顶部,有搜索输入框

  3. form表单两种提交方式的不同

      我们在使用<Form>表单的时候,最常用的提交方式就是Get和Post.我们都知道这两种方式最大的差别就是安全性,除此之外,它们还有哪些其他的区别,你知道吗?   在<Form& ...

  4. ES6 常用语法知识汇总

    ES6模块化如何使用,开发环境如何打包? 1.模块化的基本语法 /* export 语法 */ // 默认导出 export default { a: '我是默认导出的', } // 单独导出 exp ...

  5. Django学习路25_ifequal 和 ifnotequal 判断数值是否相等及加减法 {{数值|add 数值}}

    {% ifequal 数值 数值 %} <body> {# 判断是否相等 #} num 当前的值 {{ num }}<br/> {% ifequal num 5 %} {# 判 ...

  6. JS中Math.random()的使用和扩展

    Math.random()方法返回大于等于 0 小于 1 的一个随机数.对于某些站点来说,这个方法非常实用,因为可以利用它来随机显示一些名人名言和新闻事件. 在连续整数中取得一个随机数 值 = Mat ...

  7. Python os.pipe() 方法

    概述 os.pipe() 方法用于创建一个管道, 返回一对文件描述符(r, w) 分别为读和写.高佣联盟 www.cgewang.com 语法 pipe()方法语法格式如下: os.pipe() 参数 ...

  8. PHP array_diff() 函数

    实例 比较两个数组的值,并返回差集: <?php $a1=array("a"=>"red","b"=>"gree ...

  9. PHP preg_filter() 函数

    preg_filter 函数用于执行一个正则表达式搜索和替换.高佣联盟 www.cgewang.com 语法 mixed preg_filter ( mixed $pattern , mixed $r ...

  10. PHP strncmp() 函数

    实例 比较两个字符串(区分大小写): <?php高佣联盟 www.cgewang.comecho strncmp("Hello world!","Hello ear ...