美文网首页
多重检验矫正p值

多重检验矫正p值

作者: 可能性之兽 | 来源:发表于2022-10-29 13:47 被阅读0次

因为P值的阈值是人为规定的,无论是多小的P值,也仅仅能代表结果的低假阳性,而非保证结果为真。如果检验一次,犯错的概率是5%;检测10000次,犯错的次数就是500次,即额外多出了500次差异的结论(即使实际没有差异)。即使P值已经很小(比如0.05),也会被检验的总次数无限放大。比如检验10000次,得到假阳性结果的次数就会达到 5%*10000=500次。

这时候我们就需要引入多重检验来进行校正,从而减低假阳性结果在我们的检验中出现的次数。

R语言

> p.adjust(p, method = p.adjust.methods, n = length(p))
> p.adjust
function (p, method = p.adjust.methods, n = length(p)){
    method <- match.arg(method)
    if (method == "fdr") 
    method <- "BH"
    nm <- names(p)
    p <- as.numeric(p)
    ……
    BH = {
        i <- lp:1L
        o <- order(p, decreasing = TRUE)
        ro <- order(o)
        pmin(1, cummin(n/i * p[o]))[ro]
    }
    ……
        p0
}
  • 我们将一系列p值、校正方法(BH)以及所有p值的个数(length(p))输入到p.adjust函数中。
  • 将一系列的p值按照从大到小排序,然后利用下述公式计算每个p值所对应的FDR值。
    公式:p * (n/i), p是这一次检验的p value,n是检验的次数,i是排序后的位置ID(如最大的P值的i值肯定为1,第二大则是2,依次至最小为n)。
  • 将计算出来的FDR值赋予给排序后的p值,如果某一个p值所对应的FDR值大于前一位p值(排序的前一位)所对应的FDR值,则放弃公式计算出来的FDR值,选用与它前一位相同的值。因此会产生连续相同FDR值的现象;反之则保留计算的FDR值。
  • 将FDR值按照最初始的p值的顺序进行重新排序,返回结果。

python

Signature:
multi.multipletests(
    pvals,
    alpha=0.05,
    method='hs',
    is_sorted=False,
    returnsorted=False,
)
Docstring:
Test results and p-value correction for multiple tests

Parameters
----------
pvals : array_like, 1-d
    uncorrected p-values.   Must be 1-dimensional.
alpha : float
    FWER, family-wise error rate, e.g. 0.1
method : str
    Method used for testing and adjustment of pvalues. Can be either the
    full name or initial letters. Available methods are:

    - `bonferroni` : one-step correction
    - `sidak` : one-step correction
    - `holm-sidak` : step down method using Sidak adjustments
    - `holm` : step-down method using Bonferroni adjustments
    - `simes-hochberg` : step-up method  (independent)
    - `hommel` : closed method based on Simes tests (non-negative)
    - `fdr_bh` : Benjamini/Hochberg  (non-negative)
    - `fdr_by` : Benjamini/Yekutieli (negative)
    - `fdr_tsbh` : two stage fdr correction (non-negative)
    - `fdr_tsbky` : two stage fdr correction (non-negative)

is_sorted : bool
    If False (default), the p_values will be sorted, but the corrected
    pvalues are in the original order. If True, then it assumed that the
    pvalues are already sorted in ascending order.
returnsorted : bool
     not tested, return sorted p-values instead of original sequence

Returns
-------
reject : ndarray, boolean
    true for hypothesis that can be rejected for given alpha
pvals_corrected : ndarray
    p-values corrected for multiple tests
alphacSidak : float
    corrected alpha for Sidak method
alphacBonf : float
    corrected alpha for Bonferroni method
### 如果里面pvalue_array里面有NA值,需要先删掉,但是R语言的好像是内置有处理步骤可以自动删掉NA
import statsmodels.stats.multitest as multi
import numpy as np
multi.multipletests(pvalue_array, alpha=0.05, method="fdr_bh", is_sorted=False)

浅谈多重检验校正FDR | Public Library of Bioinformatics (plob.org)

相关文章

  • 多重检验矫正p值

    因为P值的阈值是人为规定的,无论是多小的P值,也仅仅能代表结果的低假阳性,而非保证结果为真。如果检验一次,犯错的概...

  • 5 局部错误发现率

    经典单case假设检验基于对统计量(p值)尾部的解释。二战后,多重检验继续基于p值,并扩展到大规模假设检验,前面3...

  • 差异性比较

    不符合正态分布,两组选用wilcoxon test秩和检验 三组及以上,K-W检验,需矫正P值。 符合正态分布,两...

  • 多重比较-Bonferroni法和Benjamini & Hoc

    本次笔记主要介绍多重比较下两种常用的矫正P值的方法:Bonferroni法和Benjamini & Hochber...

  • 关于组学分析中的各种P值的一些见解

    说起P值,我们首先需要知道: 一. 什么检验方法能得到P值? 各种检验方法如:方差分析、卡方分布、t检验以及Z检验...

  • 给女朋友写的生统资料_Part14

    之前我们提到了如果做多次的假设检验,就要考虑多重比较矫正的问题了。那有没有只用做一次检验就可以搞定的方法呢。其实是...

  • 有关富集分析中P值矫正计算的疑惑

    p值矫正算法:https://www.sohu.com/a/129836640_655370https://www...

  • Hosmer-Lemeshow检验

    Hosmer-Lemeshow检验(HL检验)为模型拟合指标,其原理在于判断预测值与真实值之间的gap情况,如果p...

  • 怎么理解P值

    在进行假设检验过程中,包括t检验,F检验,非参数检验以及卡方检验等,最后均是通过P值是否大于0.05或0.01进行...

  • t检验相关知识

    统计检验:p值,p值指的碰巧是拒绝零假设机会。P值越大假阳性越低,同时真实结果也可能会剔除。 注: 基因表达分析的...

网友评论

      本文标题:多重检验矫正p值

      本文链接:https://www.haomeiwen.com/subject/tjgqtdtx.html