假设检验(hypothesis testing)及P值(p-value)

2024-04-18 01:32

本文主要是介绍假设检验(hypothesis testing)及P值(p-value),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前一篇t检验的文末提到了P值的概念,P值实际上是医学统计中很常用的一个概念,那么这篇文章继续讲解什么是P值。说到P值,就得先从假设检验说起。

首先声明,此篇的内容是来自"马同学高等数学"微信公众号的内容。

 

目录

1、什么是假设检验

2、P值

2.1     为什么要把更极端的情况加起来?

3、显著水平

4、与置信区间的关系

参考文献:


1、什么是假设检验

抛硬币是概率统计学中很经典的一种实验方法,也是我们生活中一种常见的决策手段。通常意义下抛硬币和抽签是一样的,都是公平的。所谓的硬币是公平的,也就是“花”和“字”出现的概率是差不多的。然后,你想和我打赌,作为一个资深的理智赌徒,我怎能听信你的一面之词,我提出要检查下你的硬币到底是不是公平的,万一是两面“花”怎么办?电影里面不是经常出现这样的桥段?

                             

你神色紧张,死活不让我检查,后来我们提出了折衷的方案,抛几次硬币,看看结果是不是公平的。总共扔了两次,都是“花”朝上,虽然几率是 0.5 \times 0.5 = 0.25 ,但是也正常,继续扔。总共扔了四次,也都是“花”朝上,几率是  0.5^{4} = 0.0625,感觉有点不正常,但是万一是运气呢?继续扔。总共扔了十次,也都是“花”朝上,那我就认为很可能你这枚硬币不是公平的。

这就是假设检验

  • 你提出假设:说你的硬币是公平的

  • 我提出要检验你的假设:扔十次,看实验的结果是不是和你的假设相符

2、P值

为了完成假设检验,需要先定义一个概念:P值。我们这里就来解释什么是P值?

根据上面的描述,这里假设检验的思路就是:

  • 假设:硬币是公平的

  • 检验:认为假设是成立的,然后扔十次,看结果与假设是否相符

反复扔硬币应该符合二项分布(这就不解释了),也就是:    X \sim B(n,\mu),其中n代表抛掷硬币次数,\mu代表“花”朝上的概率

在我们认为硬币是公平的前提下,扔10次硬币应该符合分布:X \sim B(10,0.5),下图表示的就是,假如硬币是公平的情况下的分布图:

                              

我扔了十次之后得到的结果是,有八次正面:

                               

这个时候有个数学大佬就出来定义了一个称为 P值(p-value)的概念:

                                                           

罗纳德·艾尔默·费希尔爵士(1890-1962)。

把八次正面的概率,与更极端的九次正面、十次正面的概率加起来:

                           

得到的就是(单侧P值):         

其实,出现两次正面、一次正面、零次正面的概率也是很极端的:

                        

所以(双侧P值):     

2.1     为什么要把更极端的情况加起来?

根据扔硬币这个例子,可能你会觉得,我知道八次正面出现不正常就行了,干嘛要把九次、十次加起来?我觉得有这么一个现实原因,比如我要扔1000次硬币来测试假设是否正确。扔1000次硬币用二项分布来计算很麻烦,根据中心极限定理,我们知道,可以用正态分布来近似:

                                     

比如,我扔了1000次,得到了530次正面,用正态分布来计算就比较简单。但是,对于正态分布,我没有办法算单点的概率(连续分布单点概率为0),我只能取一个区间来算极限,所以就取530、以及更极端的点组成的区间:

                                      

我上面只取了单侧P值,说明下:

  • 取单侧还是双侧,取决于你的应用

  • 什么叫做更极端的点,也取决于你的应用

3、显著水平

总共扔10次硬币,那么是出现7次正面之后,可以认为“硬币是不公平的”,还是9次正面之后我才能确认“硬币是不公平的”,这是一个较为主观的标准。我们一般认为:

                                                                  

就可以认为假设是不正确的。

0.05这个标准就是显著水平,当然选择多少作为显著水平也是主观的。比如,上面的扔硬币的例子,如果取单侧P值,那么根据我们的计算,如果扔10次出现9次正面:

                                           

表示出来如下图所示:

                 

我们可以认为刚开始的假设错的很“显著”,也就是“硬币是不公平的”。如果扔10次出现出现8次正面:

                                                      

呃,这个和我们的显著水平是一样的啊,我们也可以拒绝假设,只是没有那么“显著”了。

4、与置信区间的关系

置信区间,目的是根据样本构造一个区间,然后希望这个区间可以把真值包含进去,但是并不知道这个真值是多少?具体可以参考如何理解 95% 置信区间?而假设检验,则是假设真值是多少,然后检验这个假设是否可能为真。之所以觉得它们有关系,大概是因为它们都提到了0.05。它们之间的关系也简单,如果我们提出来的假设 \mu_{0} 在样本 \bar{x} 的置信区间内,就可以通过测试:

                       

反之,就不能通过:

                            

参考文献:

如何理解假设检验,P值           https://mp.weixin.qq.com/s/tmlaB4nwK0EPxaAmsIVScA

这篇关于假设检验(hypothesis testing)及P值(p-value)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913414

相关文章

Spring 内部类获取不到@Value配置值问题排查(附Spring代理方式)

目录 一、实例问题 1、现象 2、原因 3、解决 二、Spring的代理模式 1、静态代理(Static Proxy) 1)原理 2)优缺点 3)代码实现 2、JDK动态代理(JDK Dynamic Proxy) 1)原理 2)优缺点 3)代码实现 3、cglib 代理(Code Generation Library Proxy) 1)原理 2)优缺点 3)代码实

iOS OC底层面试题(KVO (Key-value observing))

KVO (Key-value observing) KVO是观察者模式的另一实现。 使用了isa混写(isa-swizzling)来实现KVO 使用setter方法改变值KVO会生效,使用setValue:forKey即KVC改变值KVO也会生效,因为KVC会去调用setter方法 - (void)setValue:(id)value{[self willChangeValueForKey

iOS OC底层面试题(KVC(Key-value coding)

KVC(Key-value coding) -(id)valueForKey:(NSString *)key;-(void)setValue:(id)value forKey:(NSString *)key; KVC就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。而不需要调用明确的存取方法。这样就可以在运行时动态地访问和修改对象的属性。而不是在编译时

[leetcode] 515. Find Largest Value in Each Tree Row

Find Largest Value in Each Tree Row 描述 You need to find the largest value in each row of a binary tree. Example: Input: 1/ \3 2/ \ \ 5 3 9 Output: [1, 3, 9] 我的代码 简单的dfs。 要使

SpringBoot配置文件之EL表达式(@Value)

目录 1 配置文件种类 2 application.properties讲解 2.1 修改内嵌容器端口号和访问路径 2.2 自定义属性配置 2.3 配置变量引用 2.4  随机值配置 2.4.1 配置随机值 2.4.2配置随机端口 2.5 @@ 3 yml 配置文件 3.1 yml 配置文件与 properties 文件的区别 3.2 yml 配置文件的语法 3.2.1

Elastic字段映射(_source,doc_value,fileddata,index,store)

Elastic字段映射(_source,doc_value,filed_data,index,store) _source: source 字段用于存储 post 到 ES 的原始 json 文档。为什么要存储原始文档呢?因为 ES 采用倒排索引对文本进行搜索,而倒排索引无法存储原始输入文本。一段文本交给ES后,首先会被分析器(analyzer)打散成单词,为了保证搜索的准确性,在打散的过程中

Redis:WRONGTYPE Operation against a key holding the wrong kind of value

1.错误信息 redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holding the wrong kind of value 2.分析 当前程序中key的操作类型,并不与redis库中存在的key的类型相匹配。举例  第一次保存key,将其设置为key-value

textArea没有value 属性 如何显示

<textarea class="form-control" name ="description" value="${revit.description}" rows="5"></textarea> 这样值是显示不了的  可以解决办法       <textarea class="form-control" name ="description" rows="5">${revit.d

一个实用的注解,用来加载properties文件中的值到controller中 @Value

spring容器中properties文件的注入 <util:properties id="xxx" location="classpath:xxx.properties"></util:properties> 1、properties文件中: username=root Java类中为属性赋值方式:@Value("xxx.username") domain.url.name=https

515. Find Largest Value in Each Tree Row 在每个树行中找最大值

https://leetcode-cn.com/problems/find-largest-value-in-each-tree-row/description/ 思路: 和637. Average of Levels in Binary Tree(https://www.jianshu.com/p/814d871c5f6d)的思路基本相同.即层遍历二叉树,然后在每层中分别找最大的. vec