多重比较示例:Bonferroni校正法和Benjamini & Hochberg法

简介: 多重比较示例:Bonferroni校正法和Benjamini & Hochberg法

原文链接:http://tecdat.cn/?p=21825


假设检验的基本原理是小概率原理,即我们认为小概率事件在一次试验中实际上不可能发生。


多重比较的问题

当同一研究问题下进行多次假设检验时,不再符合小概率原理所说的“一次试验”。如果在该研究问题下只要有检验是阳性的,就对该问题下阳性结论的话,对该问题的检验的犯一类错误的概率就会增大。如果同一问题下进行n次检验,每次的检验水准为α(每次假阳性概率为α),则n次检验至少出现一次假阳性的概率会比α大。假设每次检验独立的条件下该概率可增加至

image.png

常见的多重比较情景包括:

  • 多组间比较
  • 多个主要指标
  • 临床试验中期中分析
  • 亚组分析


控制多重比较谬误(Familywise error rate):Bonferroni矫正

Bonferroni法得到的矫正P值=P×n

Bonferroni法非常简单,它的缺点在于非常保守(大概是各种方法中最保守的了),尤其当n很大时,经过Bonferroni法矫正后总的一类错误可能会远远小于既定α。

控制错误发现率:Benjamini & Hochberg法

简称BH法。首先将各P值从小到大排序,生成顺序数排第k的矫正P值=P×n/k

另外要保证矫正后的各检验的P值大小顺序不发生变化。

怎么做检验

R内置了一些方法来调整一系列p值,以控制多重比较谬误(Familywise error rate)或控制错误发现率。

Holm、Hochberg、Hommel和Bonferroni方法控制了多重比较谬误(Familywise error rate)。这些方法试图限制错误发现的概率(I型错误,在没有实际效果时错误地拒绝无效假设),因此都是相对较保守的。

方法BH(Benjamini-Hochberg,与R中的FDR相同)和BY(Benjamini & Yekutieli)控制错误发现率,这些方法试图控制错误发现的期望比例。

请注意,这些方法只需要调整p值和要比较的p值的数量。这与Tukey或Dunnett等方法不同,Tukey和Dunnett也需要基础数据的变异性。Tukey和Dunnett被认为是多重比较谬误(Familywise error rate)方法。

要了解这些不同调整的保守程度,请参阅本文下面的两个图。

关于使用哪种p值调整度量没有明确的建议。一般来说,你应该选择一种你的研究领域熟悉的方法。此外,可能有一些逻辑允许你选择如何平衡犯I型错误和犯II型错误的概率。例如,在一项初步研究中,你可能希望保留尽可能多的显著值,来避免在未来的研究中排除潜在的显著因素。另一方面,在危及生命并且治疗费用昂贵的医学研究中,得出一种治疗方法优于另一种治疗方法的结论之前,你应该有很高的把握。


具有25个p值的多重比较示例

### --------------------------------------------------------------
### 多重比较示例
### --------------------------------------------------------------
Data = read.table(Input,header=TRUE)


按p值排序数据

Data = Data[order(Data$Raw.p),]


检查数据是否按预期的方式排序

image.png


执行p值调整并添加到数据框

Data$Bonferroni =
      p.adjust(Data$Raw.p,
               method = "bonferroni")
Data$BH =
      p.adjust(Data$Raw.p,
               method = "BH")
Data$Holm =
      p.adjust(Data$ Raw.p,
               method = "holm")
Data$Hochberg =
      p.adjust(Data$ Raw.p,
               method = "hochberg")
Data$Hommel =
      p.adjust(Data$ Raw.p,
               method = "hommel")
Data$BY =
      p.adjust(Data$ Raw.p,
               method = "BY")
Data


image.png

绘制图表

plot(X, Y,
        xlab="原始的p值",
        ylab="矫正后的P值"
        lty=1,
        lwd=2


image.png

调整后的p值与原始的p值的图为一系列的25个p值。虚线表示一对一的线。


5个p值的多重比较示例

### --------------------------------------------------------------
### 多重比较示例,假设示例
### --------------------------------------------------------------
Data = read.table(Input,header=TRUE)


执行p值调整并添加到数据帧

Data$Bonferroni =
      p.adjust(Data$Raw.p,
               method = "bonferroni")
Data$BH =
      signif(p.adjust(Data$Raw.p,
               method = "BH"),
             4)
Data$Holm =
      p.adjust(Data$ Raw.p,
               method = "holm")
Data$Hochberg =
      p.adjust(Data$ Raw.p,
               method = "hochberg")
Data$Hommel =
      p.adjust(Data$ Raw.p,
               method = "hommel")
Data$BY =
      signif(p.adjust(Data$ Raw.p,
               method = "BY"),
             4)
Data


image.png

绘制(图表)

plot(X, Y,
        type="l",


image.png

调整后的p值与原始p值在0到0.1之间的一系列5个p值的绘图。请注意,Holm和Hochberg的值与Hommel相同,因此被Hommel隐藏。虚线表示一对一的线。

相关文章
|
移动开发 文字识别 算法
论文推荐|[PR 2019]SegLink++:基于实例感知与组件组合的任意形状密集场景文本检测方法
本文简要介绍Pattern Recognition 2019论文“SegLink++: Detecting Dense and Arbitrary-shaped Scene Text by Instance-aware Component Grouping”的主要工作。该论文提出一种对文字实例敏感的自下而上的文字检测方法,解决了自然场景中密集文本和不规则文本的检测问题。
1949 0
论文推荐|[PR 2019]SegLink++:基于实例感知与组件组合的任意形状密集场景文本检测方法
|
机器学习/深度学习
深度学习数据增强方法-内含(亮度增强,对比度增强,旋转图图像,翻转图像,仿射变化扩充图像,错切变化扩充图像,HSV数据增强)七种方式进行增强-每种扩充一张实现7倍扩)+ 图像缩放代码-批量
深度学习数据增强方法-内含(亮度增强,对比度增强,旋转图图像,翻转图像,仿射变化扩充图像,错切变化扩充图像,HSV数据增强)七种方式进行增强-每种扩充一张实现7倍扩)+ 图像缩放代码-批量
|
25天前
|
机器学习/深度学习 Serverless 定位技术
深入理解多重共线性:基本原理、影响、检验与修正策略
本文将深入探讨多重共线性的本质,阐述其重要性,并提供有效处理多重共线性的方法,同时避免数据科学家常犯的陷阱。
31 3
|
2月前
|
数据可视化
如何使用四分位距方法来识别数据中的异常值?
如何使用四分位距方法来识别数据中的异常值?
|
6月前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到"result.txt"以供MATLAB显示图像分割效果。
|
6月前
R语言多重比较示例:Bonferroni校正法和Benjamini & Hochberg法
R语言多重比较示例:Bonferroni校正法和Benjamini & Hochberg法
|
6月前
|
监控
画图解释FHSS、DSSS扩频原理以及计算规则
画图解释FHSS、DSSS扩频原理以及计算规则
355 0
|
算法
基于自动亮度对比度增强功能的可逆数据隐藏(Matlab代码实现)
基于自动亮度对比度增强功能的可逆数据隐藏(Matlab代码实现)
118 0
|
测试技术 Python
为什么以及如何在多重假设检验中调整 P 值
为什么以及如何在多重假设检验中调整 P 值
318 0
|
资源调度 算法 关系型数据库
概率图推断之变量消除算法
事实证明,推理是一项颇具挑战的任务。对于很多我们感兴趣的概率,要准确回答这些问题都是NP难题。至关重要的是,推理是否容易处理取决于描述概率的图的结构。尽管有些问题很难解决,我们仍然可以通过近似推理方法获得有用的答案。
263 0
概率图推断之变量消除算法