发布日期:2018-11-16
来源:“小白学统计”公众号
两两比较方法的选择,大概是统计学界争议最多的一个话题了,直至今天,也没有一个完全统一的说法。所以,本文虽然说是两两比较方法的选择,但更多的是在基于以往文献的基础上,再结合作者本人的经验和理解,给读者一些提示。
两两比较的方法太多了,正因为太多了,所以往往大家都不知道给怎么选择。比如SAS提供了12种两两比较方法让人选择,SPSS更是毫不吝啬地给出了18种方法让你选择。我想任何一个非统计专业的人都有同一个感觉:你在耍我们吗?毫无提示地给出10多种方法,让一个毫无统计背景的人自己选择。就像是医生给你10多种药,一脸怜悯地对你说:回家自己看着吃啊,你觉得哪个好就吃哪个。
关键是,明知道我们没有这个判别力,为什么要给我们这么多的两两比较方法,还得让我们自己选择?正是统计学家太多了,每个人都能根据自己的理念提出一种方法,而这些方法看起来似乎都没错,那怎么办?只好都放在软件中,你自己跟着感觉走吧。
下面就来说几种比较常见的两两比较方法的选择,希望给大家稍微理清一点思路。先声明一下,以下结论是参考了不少国外课本和文献,加上自己的一点经验,而且只给出结论性的内容,不给出公式和证明,喜欢追根究底的朋友可以自己看专业书籍。
下面就来说几种比较常见的两两比较方法的选择,希望给大家稍微理清一点思路。先声明一下,以下结论是参考了不少国外课本和文献,加上自己的一点经验,而且只给出结论性的内容,不给出公式和证明,喜欢追根究底的朋友可以自己看专业书籍。
为什么要用两两比较方法呢?大多数两两比较方法的目的都是为了控制假阳性,因为两两比较次数多了,容易产生假阳性的结果。
首先说医学统计课本中最喜欢介绍的3种方法:LSD、SNK和Bonferroni法。我大概翻了一下国内的医学统计学教程,几乎都是这3种方法,但似乎都没有说什么情况下用。
LSD法其实就相当于t检验,只不过它需要在方差分析一定要有统计学差异的情况下才用。所以LSD法并没有控制假阳性错误。一般情况下,如果你在设计初期就有很明确的目的,可以考虑这种方法,因为每一对比较都是有特定意义的,不用非得控制假阳性错误。
SNK法是先按多组均值大小排序,然后按一个有点类似于t检验的公式分别比较(不过误差计算不同)。比如a、b、c三组均值分别是a最小,c最大,b居中。那么比较时,很显然a和c差别最大,所以在最后的界值上做一些调整。例如,原来可能t检验的界值是2.83,只要t值大于2.83就算有差异,现在把界值调大,比如调到3.40,a和c的比较计算的t值,只有大于3.4才算有差异。这种调整的界值叫做q界值。这种方法对假阳性错误的控制依然不到位。所以如果你想控制假阳性,不要选这种方法。
Bonferroni法大概是最流行的一种方法,因为简单。它的思想是调整检验水准,根据比较的次数重新设定检验水准,然后根据P值做出结论。比如常规的检验水准是0.05,只要P小于0.05就认为有统计学差异。但是如果用Bonferroni法调整,则需要0.05除以比较次数,如比较6次,这时调整后的检验水准是0.05/6=0.0083,也就是说,P值小于0.0083才算有差异。这种方法其实更像是一种检验水准调整方法,简单易用,不仅可以用于均值的两两比较,也可用于率的两两比较。比如你要做三组的卡方检验,想进一步两两比较,就可以考虑用这种方式,即分别做两组的卡方,但是一共比较3次,所以P值小于0.0167才算有差异。这种方法的缺点是,当比较次数多时,结果过于保守,比如比较10次,那就需要P值小于0.005才算有差异,有时很难达到。
再说点其它国内课本上不大介绍但是国外介绍比较多的几种方法。
下面这两种方法一般用于各组之间例数相等的情形。
Tukey法,有时也叫Tukey HSD法(Honestly Significant Difference test)。这种方法大概是统计学家最认可一致的方法了,绝大多数统计学家都相信,Tukey法的检验效率可能是最高的。Tukey法也是基于q检验,大概意思是先确定一个最大差异的临界值,然后分别对其中两组比较,看看哪两组差值大于这个界值,就算有差异。Tukey法是大多数统计学家首先推荐的两两比较方法,不过这种方法只适用于组间例数相等的情况。对于组间例数不等的时候,可用修正的Tukey法,也叫作Tukey-Kramer法。
与Tukey法效率差不多的大概是REGWQ法(不要奇怪这个名字,每个字母代表一个人名,Ryan,Einot,Gabriel ,Welsch;Q表示方法)。REGWQ法与Tukey法都对假阳性错误控制的比较好。这种方法一般也只用于各组例数相等的情况。
下面这几种方法一般可用于各组例数不等的情形。
如果各组例数虽然不同,但差的并不大,可以考虑用Gabriel 检验,这种情况下一般效率较高,但如果组间的例数差别较大,一般不要采用这种方法,否则容易结果不稳定。
当各组例数差别较大时,Hochberg's GT2法效率较高,这种方法的思路与Tukey法有点类似,只不过采用的界值不同。这种方法的效率不如Tukey法,尤其在组间例数相等时,它的效率一直不如Tukey法,但与Gabriel的效率基本相当。但在组间例数相差悬殊的时候,可以考虑这种方法。但是如果各组方差相差较大,这种方法很不可靠。
Scheffe法在国外用的也比较多,该法效率也非常高。大概是仅次于Tukey法。有时候你可能会遇到这种情况:方差分析有统计学意义,而两两比较却发现任何两组都没有差异。这时候用Scheffe法通常不会出现这种尴尬的场面。
其它情形下的一些方法。
Dunnett检验是一种比较特殊的检验,它不是用于两两比较,而是某些固定的比较。通常情况下是,如果有一个对照组,多个试验组,多个试验组之间不做比较,但是每个试验组分别与对照组作比较,这时候就选择用Dunnett法。这种比较方式通常都是在研究设计阶段就设定好的。
如果各组之间方差差别较大,通常可考虑用Games-Hotwell检验,这种方法在方差不等时可以提供更有高的效率,而且允许各组例数不等。但如果每组例数较小,这种方法容易不稳定。
最后的个人小结(仅代表个人观点):
如果各组例数相等,建议首选Tukey法;如果例数不等,建议首选Scheffe法(如果比较组数不多,如3组,Bonferroni法也可以作为首选);如果要分别比较每个试验组与对照组,建议采用Dunnett法;如果各组方差相差较大,建议采用Games-Hotwell法。
事实上,每一种两两比较方法都有自己的道理,真正在发表文章时,除非方法本身有特定的要求(比如Tukey法只能用于组间例数相等的情形),其实你采用哪种方法可能都不能说错。有时需要结合自己的研究计划和研究目的,比如从药监局的角度,肯定更侧重控制假阳性率,从其它不同角度可能有不一样的目的,这些都可以作为选择的参考。