首页 > 其他分享 >废弃P-value,还是学学如何评估统计检验结果?

废弃P-value,还是学学如何评估统计检验结果?

时间:2023-05-02 22:32:54浏览次数:48  
标签:假设 统计 检验 分布 value 学学 废弃 生信


前几天,Nature上一篇comment再度引发关于p-value如何使用和解释的文章:Scientists rise up against statistical significance,800多名科学家联合声明拒绝使用基于p-value置信区间贝叶斯因子等的二分法将研究结果分为统计显著和统计不显著两个部分,而是应该把置信区间改为兼容性区间, 描述区间所有值的实际含义,尤其是其所代表的的效果 (point estimate)或极值在哪。给定了统计假设,任何极值内的值与研究数据都是兼容的。基于此,作者可以更好的强调数据分析带来的期望值和不确定性,不再对结果过于自信或悲观。

不过一来统计界以后会怎么实施未知,二来签名也未发对p-value的正确使用。那么怎么理解P-value的含义?怎么算是正确使用P-value呢?怎么评估算出的P-value是否正常呢? 就是我们下面要说的。基于传统,后面还是会继续使用显著性这一说法。

统计分析检验获取p-value是我们经常要做的一个工作,比如获得差异基因富集分析等。通常计算后会得到数百、数千或数万个p-value。考虑到多重假设检验的问题,你可能会想着先做一个校正。

然而,你最先需要做的却是绘制一个直方图。怎么绘制?简单强大的在线绘图-第3版

在做任何的多重假设检验校正、假阳性率控制或结果解释之前,先绘制这么一个p-value分布直方图,它可以告诉你在所有假设的p值分布,并帮您发现潜在的问题。

p-value分布直方图可能有下面6种可能,我们一一看来。

废弃P-value,还是学学如何评估统计检验结果?_ci

Anti-conservative p-value

废弃P-value,还是学学如何评估统计检验结果?_ci_02

如果p-value分布直方图如上图所示,左侧0值附近有个峰,右侧为近乎均匀分布,那么恭喜你,这是一个很好的分布。

0-1之间均匀分布的p-value代表原假设H0 (null hypothesis)的P值。为什么它们是均匀分布的呢?这是根据p-value的定义来的。在原假设下,p-value有5%的可能低于0.05, 10%的可能低于0.1,以此类推,就是一个均匀分布。

p-value接近于0值的峰代表的是备择假设H1 (alternative hypothesis) (也包含部分假阳性)。如果把原假设和备择假设分开,p-value的分布应该入下图所示:

废弃P-value,还是学学如何评估统计检验结果?_均匀分布_03

首先可以看到在低p-value处也有一些原假设 (H0),因此不可以简单的说所有p-value<0.05的都是显著的,否则就会获得一些假阳性结果。而且一些备择假设 (H1)的p-value也比较高,这些就是不能通过本次统计检验方法获得的阳性结果,也称为假阴性结果。

多重假设检验校正就是确定显著性的合理阈值。

那么怎么判断多少假设是原假设,多少是可以拒绝原假设采用备择假设呢?可以从下面几张图有个直观认识,左侧Peak越高,越多的假设p-value趋近于0, 也就是显著的结果。右侧的柱子越高,更多原假设不能被拒绝。如果想获得定量的评估,可以使用qvalue包。

废弃P-value,还是学学如何评估统计检验结果?_生物统计_04

library(qvalue)
data(hedenfalk)
pvalues <- hedenfalk$p
qobj <- qvalue(p=pvalues)
summary(qobj)

输出不同p-value假设的累计数目

Call:
qvalue(p = pvalues)

pi0:	0.669926	

Cumulative number of significant calls:

          <1e-04 <0.001 <0.01 <0.025 <0.05 <0.1   <1
p-value       15     76   265    424   605  868 3170
q-value        0      0     1     73   162  319 3170
local FDR      0      0     3     30    85  167 2241

估计原假设 (H0 null hypothesis)的整体比例 (π0),q-valuep-value的关系, qvalue即是定义某一个检验统计显著需要承受的最小假阳性率值。lfdr指在给定的p-value条件下,原假设 (H0)为真的后验概率值。

hist(obj)

废弃P-value,还是学学如何评估统计检验结果?_ci_05

均匀分布 Uniform p-value

假如,你的p-value是如下图所示,平平的均匀分布,怎么办呢?

废弃P-value,还是学学如何评估统计检验结果?_数据_06

看上去所有的假设都符合原假设,是不是意味着就没有办法拒绝原假设了?其实也不是:

  • 起码有一小部分的假设是备择假设,可以用过FDR校正方法如Benjamini-Hochber等鉴定出来。
  • 直接应用p-value<0.05是不合适的,假阳性率会很高。

双峰 Bimodal p-values

废弃P-value,还是学学如何评估统计检验结果?_均匀分布_07

如前面所示在p-value=0处有一个峰,但在p-value=1处也有一个?怎么解释。

首先不要对这些p-value应用假阳性率控制。为什么呢?因为一部分FDR控制算法是基于P-value1附近是均匀分布的。如果不符合这个前提,计算出的显著性会很少。

下一步找出为什么p-value会有这个分布,针对性解决:

  • 是否使用的是单端检验 (one-tailed test) (如检验药物处理后基因表达上调)。如果是这样,p-value接近1的正好是相反的变化 (如基因表达下调)。如果您同时关注上下调,则采用双端检验 (two-sided test)。如果您不想包含另一种变化,则在检验前先过滤掉这些。(注:比如富集分析时只关注富集)
  • 是否pvalue接近1的情况都是病态情况,如基因差异表达分析中,一些软件会赋予在所有样品中都不表达的基因检验pvalue1,这样的情况直接过滤掉就好。(注:一般分析时是提前过滤。)

Conservative p-values

废弃P-value,还是学学如何评估统计检验结果?_ci_08

看到这个分布,不要鲁莽的下结论:没有任何统计显著的假设。如果真的没有统计显著性假设,p-value的分布应该是均匀的 Uniform, 这是因为p-value就是这么定义的:原假设下均匀分布。

如果p-value呈现这个分布,说明统计检验使用错了。其原因可能是数据的分布不符合统计检验的假设,比如统计检验适用于连续数据,而提供的是离散数据,或者统计检验适用于正态分布数据,而提供的数据严重不符合等。最好的解决办法是找一个友好的统计学家朋友帮助您。

我们一直强调可视化的是原始p-value的分布,如果使用的工具不小心提供的是校正后的p-value,比如使用Bonferroni correction,那么校正后的p-value可能是这个分布。

稀疏分布 Sparse p-values

废弃P-value,还是学学如何评估统计检验结果?_均匀分布_09

如图所示,获得的p-value的值比较单一,假如做了10,000次统计检验,只获得很少的不同的检验p-value,可以使用下面的代码获取总共有多少不同的p-value

length(unique(mypvalues))

为什么会获得这样的p-value呢?

  • 自展或置换检验 (bootstrap or permutation test)的迭代次数太少。
  • 数据集小的时候运行了非参数检验 (如Wilcoxon rank-sum testSpearman correlation),尝试扩大样本量或数据转换为可以进行参数检验。

不要做假阳性率控制,因为p-value的分布不是连续的。

悟空庙宇P-value (“What the…?!?”)

废弃P-value,还是学学如何评估统计检验结果?_生物信息_10

像不像孙悟空变的一座庙,尾巴做旗杆?中间的P-value有个凸起,在1附近有个峰。

最好的方式是求助于统计学家,当然在这之前,看下数据的分布,了解下所用的统计方法,先有个直观认识。

所以p-value不是算出来就可以用了,观察其分布,可以帮助我们判断数据分布是否合适,选用的统计检验方法是否合适,后期如何进行处理,对结果解释增强可信度。

参考

  1. http://varianceexplained.org/statistics/interpreting-pvalue-histogram/
  2. http://www.bioconductor.org/packages/release/bioc/vignettes/qvalue/inst/doc/qvalue.pdf
  3. https://www.nature.com/articles/d41586-019-00857-9
  4. https://stats.stackexchange.com/questions/10613/why-are-p-values-uniformly-distributed-under-the-null-hypothesis#

教程合集

加拿大生信课程

Illumina测序应用手册

系列教程


标签:假设,统计,检验,分布,value,学学,废弃,生信
From: https://blog.51cto.com/u_16077014/6240321

相关文章

  • 数学学习笔记
    学习了基础的数学,发现我的数学还(fei)算(chang)可(la)以(ji),不多说了,开启美妙的数xiao学之旅吧。进制转换首先是我们熟悉的进制转换,就是n进制转m进制。要把n进制数转化十进制数,再把十进制数转化为m进制数。把n进制数转换为十进制数要先模再除,具体过程就不赘述了,把十进制数转换为m进制数......
  • 为什么 Go for-range 的 value 值地址每次都一样?
    原文链接:为什么Gofor-range的value值地址每次都一样?循环语句是一种常用的控制结构,在Go语言中,除了for关键字以外,还有一个range关键字,可以使用for-range循环迭代数组、切片、字符串、map和channel这些数据类型。但是在使用for-range循环迭代数组和切片的时候,......
  • 于是他迟到的组合数学学习开始了
    加法原理完成一件事,有\(m\)类方法,对于每类方法有\(s_i\)个方案,则此时总方案数就是\(\sum_{i=1}^ms_i\)。乘法原理完成一件事,有\(n\)个步骤,对于每个步骤有\(s_i\)个方案,则此时总方案数就是\(\prod_{i=1}^ns_i\)。排列从\(n\)个数中选出\(m\)个数的一个排列,记......
  • vue3 ts 网易云信 未读数 手动设置已读已废弃
    vue3ts网易云信未读数//未读数清空$uikit.resetSessionUnread(store.sessionId.value);调用接口nim.resetSessionUnread('sessionId')重置会话未读数。将此会话未读数置为0,之后收到消息重新计算未读数。调用接口nim.setCurrSession('sessionId')设置当前会话。将此会......
  • double转为整型intValue()及sha1在线文件获取,文件都有一个唯一的sha1;jQuery事件方法;
    double转为整型intValue()及sha1在线文件获取,文件都有一个唯一的sha1Doubleindust=RankConstant.INIT_RADIO;indust.intValue()double由100.0---->100整型1.intValue()是java.lang.Number类的方法,Number是一个抽象类。Java中所有的数值类都继承它。也就是说,不单是Integer有int......
  • List与HashMap区别,key,value,感谢火龙果,dgqbcht,awusoft帮助
    首先要感谢不想要妮称,dgqbcht,awusoft友情帮助Map是一个映射,是key-value值对.Map在java1.0以后进行了修改,使其能够与普通的集合相融.在Map的内部定义了内部接口Entry,主要就是要讲key和value以集合(Set)的形式来体现.List是集合的一个分支,是一个接口.List中的元素有顺序(输......
  • js 获取对象的key value,放到数组对象中
    letarr=[];if(res.data&&res.data.havePowerComCodes){for(const[key,value]ofObject.entries(res.data.havePowerComCodes)){constobj={......
  • Spring RestTemplate为何必须搭配MultiValueMap?
    微服务之间的大多都是使用HTTP通信,这自然少不了使用HttpClient。在不适用Spring前,一般使用ApacheHttpClient和OkHttpClient等,而一旦引入Spring,就有了更好选择-RestTemplate。 想接受一个Form表单请求,读取表单定义的两个参数para1和para2,然后作为响应返回......
  • oracle 分析函数 FIRST_VALUE、LAST_VALUE
    用SCOTT/TIGER登录。FIRST_VALUE、LAST_VALUE是两个分析函数。返回结果集中排在第一位和最后一位的值。使用FIRST_VALUE:SELECTDEPTNO,JOB,SUM(SAL),FIRST_VALUE(SUM(SAL))OVER(PARTITIONBYDEPTNOORDERBYSUM(SAL))FROMEMPGROUPBYDEPTNO,JOBORDERBYDEPTNO,JOB;......
  • wpf中IValueConverter的两种实现方式(key和静态实例)以及 ValueConversion 特性
    使用值转换器的场景:你得到一个值,你需要根据你的需求转成另一个东西,可以是图片、对象等等都行传入的是object,传出的也是object,使用值转换器需要继承接口:IValueConverter里面有两个方法Convert和 ConvertBackConvert很好理解:你把xaml中某个对象中的某个属性或其他值传递到Value......