事后多重比较方法,看这一篇足够了Bonferroni法、Holm和Hochberg法

学术   2024-08-13 00:26   陕西  

多重比较问题

假设检验的基本原理是小概率原理,即我们认为小概率事件在一次试验中实际上不可能发生,通常我们假定小概率α=0.05。然而,当我们对同一研究问题进行多次假设检验时,不再符合小概率原理所说的“一次试验”,此时若只要有检验是阳性的,就对该问题下阳性结论的话,那么对该问题的检验的犯1类错误的概率就会增大

那么多重比较问题包括以下几种场景:

(1)多组间比较,即研究三组及以上的差异

(2)多个主要结局指标,即有多个结局指标时,因为一般临床研究中仅以其中1个指标作为主要结局指标,其他指标作为次要结局指标。此时在分析次要结局指标时,需要采用多重比较方法校正。

(3)临床试验中期分析,即临床试验有多次测量,在分析多个时间点的差异时候,需进行多重比较方法校正。

(4)亚组分析,即根据特定亚组进行分组,分别分析暴露和结局的关系,亚组分析涉及了多次比较。

多重比较问题校正P值的方法

多重比较问题校正P值的常用方法包括Bonferroni法、Holm和Hochberg法,这三种方法都是通过校正P值,然后用校正后的P值与既定的α进行比较以保证总的一类错误概率不大于检验水准α。下面一一介绍:    

Bonferroni法

Bonferroni法:又称Dunn’s检验,是多重比较非常流行的一种方法,原因是其思路简单且容易理解,而且适用范围广泛。其思路是:假定比较的次数为c次,每次计算组间比较统计量,再根据统计量进行统计推断时,多次比较的I型错误率不能超过事先规定的检验水准α(如5%),换句话说,检验水准不能设定为α,而是α/c。比如比较次数c=3,那么检验水准=0.05/3=0.0167

注意:当采用软件执行Bonferroni法时,通常给出的值即为校正后的P值,此时的P值直接与设定的检验水准0.05比较即可

Bonferroni法的缺点:可以说这个方法是一个特别保守的方法,这也是造成这个方法缺点的主要原因。当多重比较的次数特别多时,如比较次数为10次,此时校正的检验水准=0.005,这样很难检出差异,这可能导致假阴性率的增加。

Holm法和Hochberg法

上述提到比较的次数太多时,结果过于保守,不易检出差异,此时采用Holm法和Hochberg法会提高功效,增加阳性检验的结果的机会。

一、Holm法的基本思想:也称step-down Bonferroni法,即对Bonferroni法进行step-down的校正。

假定对n个基因的P值:

(1)首先根据原始P值由小到大排序;

(2)然后按照由小到大P值分别赋予顺序n->1(即顺序为由大到小);

(3)然后用原始P值*对应的顺序赋值得到校正后p值;

(4)计算的顺序从最小的P值开始,且每次校正的P值都要与上一次计算的校正p值比较,并取两者最大。    

表1 Holm法校正P值示例

基因x

原始P(由小到大排序)

P顺序赋值

相乘的P

Holm法校正的P

x5

0.003

6

0.018

0.018

X4

0.004

5

0.02

0.02

X1

0.012

4

0.048

0.048

X3

0.013

3

0.039

0.048

X6

0.05

2

0.1

0.1

X2

0.06

1

0.06

0.1

如表1所示:基因x5的校正p=0.003*6=0.018;基因x4时,由于少了x5,因此基因x4的校正p=0.004*5=0.02,依次类推,计算出每个基因与其顺序赋值的乘积。

对应基因x3,原始p=0.01,顺序赋值=3,相乘的p=0.03,但上一个基因x1的校正p=0.048>0.03,两者取最大,因此基因x3的校正p=0.048。

二、Hochberg法的基本思想:也称step-up Bonferroni法,即对Bonferroni法进行step-up的校正。

假定对n个基因的P值:

(1)首先根据原始P值由大到小排序;

(2)然后按照由大到小P值分别赋予顺序1->n(即顺序为由小到大);

(3)然后用原始P值*对应的顺序赋值得到校正后p值;

(4)计算的顺序从最大的P值开始,且每次校正的P值都要与上一次计算的校正p值比较,并取两者最小。    

表2 Hochberg法校正P值示例

基因x

原始P(由小到大排序)

P顺序赋值

相乘的P

Hochberg法校正的P

X2

0.06

1

0.06

0.06

X6

0.05

2

0.1

0.06

X3

0.013

3

0.039

0.039

X1

0.012

4

0.048

0.039

X4

0.004

5

0.02

0.02

x5

0.003

6

0.018

0.018

如表2所示:基因x2的校正p=0.06*1=0.06;基因x6时,由于增加了x6,因此基因x6的原始的校正p=0.05*2=0.1,但上一个基因x2的校正p=0.06<0.1,两者取最小,因此最终基因x6的校正p=0.06。依次类推,计算出每个基因的校正P值。

Bonferroni法软件实现:

SAS软件proc glm可以通过lsmeans语句实现两两比较,具体的语句如下:    

Proc glm; Class g; Model y=g; Lsmeans g/adjust=bon tdiff pdiff;Quit;

Holm法和Hochberg法软件实现:

SAS软件通过proc multtest过程实现,假定从100个指标中筛选出由组间差异的指标,主要语句如下:

Proc multtest holm hochberg; Class g; Model y=g; Test mean(x1-x100);Quit;

R软件采用p.adjust函数实现bonferroni、Holm法和Hochberg法,语句如下:

p.adjust(p, method = p.adjust.methods, n = length(p))

P:原始p值的向量

Method:选择的方法,包括bonferroni、Holm、Hochberg

N:比较的次数

R代码实践操作:
p<-c(0.06,0.05,0.013,0.012,0.004,0.003)

#bonferroni法

p.adjust(p,method = "bonferroni",6)

#holm法

p.adjust(p,method = "holm",6)

#Hochberg法

p.adjust(p,method = "hochberg",6)

结果解读:可以看到,bonferroni法由于保守,仅检出后两个指标有组间差异;而holm法和Hochberg法作为替代方法,检出后4个指标有组间差异。 




本期参考书籍

白话统计-冯国双


本公众号致力于分享实用的医学科研干货和热点科研文章共享平台,

如果您有任何医学科研相关问题或经验分享,可以私信我!

谢谢阅读,以上均为个人在科研实践过程中的一些做法,如有错误敬请指正!!!



End




关注我获得

更多精彩




   

流病统计与科研学习笔记
流行病与卫生统计学专业主要分享基于SAS、R以及其他统计软件实现各种统计学方法和结果绘图,提高自己的学习能力
 最新文章