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

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

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

多重比较的问题

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

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

  • 多组间比较

  • 多个主要指标

  • 临床试验中期中分析

  • 亚组分析

控制多重比较谬误(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),]

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

执行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

绘制图表

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

调整后的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

绘制(图表)

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

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


(0)

相关推荐

  • 三年级上册数学:吨和千克

    克.千克.吨 1.当我们表示物体有多重时,通常要用到(质量单位). 计量物品轻重的单位有克.千克.吨. 计量较轻的物品有多重,通常用克作单位,克用字母g表示. 计量较重的物品有多重,通常用千克作单位, ...

  • 袁鹰、罗晟教授:So easy!用自主招生打开临床试验的多重性调整…

    临床试验中普遍存在多重性(multiplicity)问题,它是指在一项完整的研究中,需要经过不止一次统计推断(多重检验)对研究结论做出决策的相关问题.例如,多个终点.多组间比较.亚组分析.期中分析.纵 ...

  • 什么是Bonferroni校正?

    对于统计学假设检验来说,多重检验校正是一个非常重要的领域.我们再进行假设检验的时候,通常会设置一个零假设,之后计算出一个p值,即数据分布符合原假设的概率,p值越低,即代表拒绝原假设的概率越大.我们通常 ...

  • 浅析R语言单因素方差分析中的多重比较

    浅析单因素方差分析中的多重比较 本脚本侧重于单因素方差分析中多重比较方法的运用; 就不展示数据正态性及齐次性的运算了(默认都符合,一般理化数据是都符合的); 有的人喜欢用Tukey检验,但会遇到一些不 ...

  • 用R语言做单因素方差分析及多重比较

    SPSS方差分析的应用已经做得非常好了,绝大多数的方差分析问题均可通过SPSS"点菜单"的方式得以解决,R语言在统计和可视化方面有自己的特色, 我们不妨来对比着学习. 选用R语言自 ...

  • R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例

    原文链接:http://tecdat.cn/?p=21545 示例1:使用MCMC的指数分布采样 任何MCMC方案的目标都是从"目标"分布产生样本.在这种情况下,我们将使用平均值为 ...

  • R语言分布滞后非线性模型(DLNM)研究发病率,死亡率和空气污染示例

    原文链接:http://tecdat.cn/?p=21317 本文提供了运行分布滞后非线性模型的示例,同时描述了预测变量和结果之间的非线性和滞后效应,这种相互关系被定义为暴露-滞后-反应关联. 数据 ...

  • R语言组件多重比较

    转自 CSDN 在用R语言做统计分析时,有时会涉及到多组之间的均数.频数比较.TableOne给我们提供了多组间整体的比较方法(Default ...) 在做组间的比较时有几种常用的方法,根据实验设计 ...

  • 机器学习算法之随机森林的R语言实现-表达芯片示例

    终于还是要发这个系列了,其实我还没有准备好,机器学习系列,有一个公众号做的非常好,是中科院上海马普所的几个同学做的,过两天我会在此推送他们的学习目录,供大家欣赏. 我就先抛砖引玉吧: 随机森林背景介绍 ...

  • R语言RStan贝叶斯示例:重复试验模型和种群竞争模型Lotka Volterra

    原文链接:http://tecdat.cn/?p=19737 Stan是一种用于指定统计模型的概率编程语言.Stan通过马尔可夫链蒙特卡罗方法(例如No-U-Turn采样器,一种汉密尔顿蒙特卡洛采样的 ...

  • R语言社区主题检测算法应用案例

    原文链接:http://tecdat.cn/?p=5658 使用R检测相关主题的社区 创建主题网络 我通过分析抽象文本和共同作者社交网络来研究社会科学.计算机和信息学方面的出版物. 我遇到的一个问题是 ...

  • R语言多项式回归拟合非线性关系

    原文链接:http://tecdat.cn/?p=22438 多项式回归是独立x变量和因果y变量之间的非线性关系. 当我们分析有一些弯曲的波动数据时,拟合这种类型的回归是很关键的.  在这篇文章中,我 ...