多重比较问题
假设检验的基本原理是小概率原理,即我们认为小概率事件在一次试验中实际上不可能发生,通常我们假定小概率α=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:比较的次数
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个指标有组间差异。