P<0.05就够了?还要校正!校正!3个方法献上

(2017-01-03 17:55:12)

  分类: 数理统计
(转  医生科研助手 解螺旋 微信公众号)
 
当有多组数据要比较时,不管是ANOVA,还是非参的Kruskal-Wallis检验等等,都只能看出整体的几组之间有没有差异。要是有,那么差异在哪里呢?还要做个两两比较才知道。OK,两两比较又要怎么做?有的小伙伴自然而然地会想到,每两组之间做一个T检验不就好了。To naive!这是个吃力不讨好的活,用这样的方式打开T检验会增加I型错误的风险。
 
I型错误,又称拒真错误,因为光看到P<0.05我就以为两组有差别,但这个P值是有bug的,这两组实际上没差别。你问这P值怎么了?!这就遇到了多重检验问题(multiple comparison problem)。
 
1. 什么是多重检验问题?
我们选择P值以0.05为界,来鉴定两组是否有差异,但那是两组!两组!当组数比较多时,这里就有了一个坑,叫族错误率(Family-wise Error Rate, FWER,又称Experiment-wise significant level),即一族(多重)检验做下来,犯I型错误的概率。每个检验中犯I型错误的概率用α表示,也就是显著性水平,就是我们紧盯着的0.05——每个检验里,我们只允许自己有5%的机会犯I型错误。
 
但要是做了k次检验,整个实验出现I型错误的概率就会积累:一个检验犯错误的概率是α,不犯错误的概率就是1-α;于是2个检验都不犯错误的概率就是(1-α)×(1-α),k个检验都不犯错误的概率就是(1-α)^k,最后k个检验会犯错误的概率就是1-(1-α)^k。即:

比如我们的实验有4个组,那么两两比较就要做的次数就是:C(4, 2)=4×3/2×1=6次。把k=6代入公式FWER=1-(1-0.05)^6≈0.26,也就是说,这一溜检验下来,如果每个检验都给5%的机会去犯I型错误,那最后整个实验犯I型错误的概率就积累到了26%!
 
所以为了控制好最后整个实验犯I型错误的概率,就要对每个两两比较的P值做校正,我们不能再纵容自己有5%的概率犯I型错误,这个容忍度要更小。
 
2. 多重检验怎么校正?
事后检验(post-hoc test)就是得知各组间有差异之后,用来寻找具体差异在哪的一系列方法,其中就有一些校正P值的方法。常用的有Bonferroni法和Dunn- Sidák法。
 
2.1 Bonferroni法
这是最常用也是简单粗暴的方法。做了k个比较,那就直接用0.05/k来生成一个新的P值(记作P’)。4组数据做6次两两检验,用则P’=0.05/6≈0.0083。就是说,如果A组和B组比较的P值为0.032>P’,应该认为这两组之间没有统计学差异;B组和C组比较的P值为0.006
 
2.2 Dunn-Sidák法
比Bonferroni精致一些。做了k个两两比较,那么:

咦,是不是和FWER那个有点像?其实就是从它倒推过来的啊~.~4组数据做6次比较,那么P’值应该设在1-(1-0.05)^1/6≈0.0087。
 
所以如果你非要选择T检验(正态、方差齐)或Mann-Whitney U检验(非参)等来做两两比较,那么还要选用以上两种方法之一去校正P值,来判断组间是否有差异。
 
2.3 Fisher最小显著差异法(Fisher LSD)
不过,也并不是所有的事后检验法都要对多重比较做校正,比如Fisher最小显著差异法(Fisher least significant difference test,Fisher LSD)。它可以说是T检验的延伸,不同的是,T检验时用到的标准差只考虑正在比较的两个组,而Fisher LSD要考虑所有样本的标准差,所以它才敢这么任性,比直接用T检验稍微准确一些。但由于不作校正,它又比较宽松。
 
在SPSS里面,“分析→比较均值→单因素方差分析→事后比较”的对话框里就有LSD,它下面赫然便是Bonferroni和Sidak。

如果在这里选择Bonferroni或Sidak,下边的显著性水平填0.05是没问题的,可以用它来做判断。因为此处是用相应的方法校正过的,不信你用T检验比较一下其中2组数据,再跟Bonferroni或Sidak计算结果中相应的2组对比一下就知道了。
 
3. 三种方法如何选择?
显然,前两种方法都相对较保守,因为要求的P值太小太严格,当我判断一个检验结果没有差异的时候,实际上它可能是有差异的,这就是II型错误,又称受伪错误。但像LSD这样任性的,的确比较敏感,更容易发现差异,可是又容易犯I型错误。到底要闹哪样?
 
其实如何选择是没有金标准,看具体实验中,犯哪种错误后果比较严重。当然也得看杂志和审稿人的要求,听说有小伙伴不做校正会被打回来要求做个Bonferroni,这时如果校正过后导致数据解读方向扭转,怕是文章得重写。有一种观点认为,当比较次数在10次(即5组数据)以内时,用Bonferroni比较好比较次数较多时,对I型错误也可以稍稍宽容。

P<0.05就够了?还要校正!校正!3个方法献上的更多相关文章

  1. 驱动开发学习笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇

    驱动开发读书笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇 下面这段摘自 linux源码里面的文档 : 内核版本2.6.22Doc ...

  2. nyoj 125-盗梦空间 (数学ans += temp * 60 * pow(0.05, cnt))

    125-盗梦空间 内存限制:64MB 时间限制:3000ms 特判: No 通过数:8 提交数:10 难度:2 题目描述: <盗梦空间>是一部精彩的影片,在这部电影里,Cobb等人可以进入 ...

  3. 【Android】7.0 Intent向下一个活动传递数据、返回数据给上一个活动

    1.0 可以利用Intent吧数据传递给上一个活动,新建一个叫“hellotest01”的项目. 新建活动FirstActivity,勾选“Generate Layout File”和“Launche ...

  4. Vue2.0 引用 exif.js 实现调用摄像头进行拍照功能以及图片上传功能

    vue组件代码 <template> <div> <div style="padding:20px;"> <div class=" ...

  5. SpringBoot2.0 基础案例(14):基于Yml配置方式,实现文件上传逻辑

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.文件上传 文件上传是项目开发中一个很常用的功能,常见的如头像上 ...

  6. 【8.0.0_r4】AMS分析(十六)(ActivityManagerService.java上)

    代码位于frameworks/base/services/core/java/com/android/server/am/,一共有七十个文件. Java源码位于package com.android. ...

  7. 在ios8上 [TableView setSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];不起作用 经过测试加入下面方法 在ios7 8上都可以正常工作

    -(void)viewDidLayoutSubviews { if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)] ...

  8. Oracle Database 11.2.0.4.0 已在 中标麒麟Linux x86-64 NeoKylin Linux Advanced Server 6 上通过认证

    啥都不说了,上截图:

  9. 【JMeter4.0学习(二)】之搭建openLDAP在windows8.1上的安装配置以及JMeter对LDAP服务器的性能测试脚本开发

    目录: 概述 安装测试环境 安装过程 配置启动 配置搭建OpenLDAP 给数据库添加数据 测试查询刚刚插入的数据 客户端介绍 JMeter建立一个扩展LDAP服务器的性能测试脚本开发 附:LDAP学 ...

随机推荐

  1. 学JS的心路历程 - PixiJS -基础(三)

    今天我们来试着移动图片吧! 首先,一样先把图片放到PIXI的stage中: let app = new PIXI.Application({ width: 800, height: 600, back ...

  2. Python之 ---成员修饰符

    一:成员修饰符:分为共有成员和私有成员: 私有成员:__通过两个下滑线:无法直接访问,要访问只能间接访问: 如下我们定义了一个对象,里面有两个共有的成员变量,成员变量是共有的时候我们可以外部访问,如果 ...

  3. Centos7永久修改hostname

    hostnamectl set-hostname hdp-01 centos7中除了修改hosts文件和network文件后,还需修改etc/hostname文件,具体步骤如下 第一步:修改/etc/ ...

  4. SAP字段带空格,导致日期转换失败,提示not a vaild month

    执行此节点会报以下错误,ORA-01843,no a valid month,提示月份转换异常 尝试增加条件也仍然提示错误:and VBEP.EDATU<>'00000000' and V ...

  5. 算法之LOWB三人组之插入排序

    插入排序 思想:类似于抽扑克牌,共有8张扑克牌,手里默认有一张,桌面上有7张,我们每次从桌面上抽一张和手里的牌进行比较,如果比手里的牌大,则直接放到手里的牌的后面,如果比手里的牌小,则放到手里的牌的前 ...

  6. jdk各版本名称

  7. 从尾到头打印链表(python)

    题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, ...

  8. centos 配置Openssl并创建证书

    具体详情参考:http://wiki.centos.org/HowTos/Https 一.安装软件 yum install mod_ssl openssl 二.创建证书: # Generate pri ...

  9. 有关vim的一些命令

    所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正 ...

  10. TZOJ 1594 Optimal Milking(二分+最大流)

    描述 FJ has moved his K (1 <= K <= 30) milking machines out into the cow pastures among the C (1 ...