多重比较示例: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),]
检查数据是否按预期的方式排序
点击标题查阅往期内容
R语言回归中的Hosmer-Lemeshow拟合优度检验
左右滑动查看更多
01
02
03
04
执行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隐藏。虚线表示一对一的线。
本文摘选《R语言多重比较示例:Bonferroni校正法和Benjamini & Hochberg法》,点击“阅读原文”获取全文完整资料。
本文中的多重比较数据分享到会员群,扫描下面二维码即可加群!
点击标题查阅往期内容
股票收益分布一致性检验KS检验KOLMOGOROV-SMIRNOV、置换检验PERMUTATION TEST可视化
绘制KOLMOGOROV-SMIRNOV KS检验图ECDF经验累积分布函数曲线
Stata广义矩量法GMM面板向量自回归 VAR模型选择、估计、Granger因果检验分析投资、收入和消费数据
Python面板时间序列数据预测:格兰杰因果关系检验Granger causality test药品销售实例与可视化
R语言检验独立性:卡方检验(Chi-square test)和费舍尔Fisher精确检验分析案例报告
R语言结构方程SEM中的power analysis 效能检验分析
R语言中的Wilcoxon符号秩检验与配对学生t检验
R语言配对检验分析案例
R语言时间序列平稳性几种单位根检验(ADF,KPSS,PP)及比较分析
R语言多重比较方法
R语言Fisher检验探究地区间公寓价格的关系
R语言检验独立性:卡方检验(Chi-square test)
R语言参数检验 :需要多少样本?如何选择样本数量
R语言使用蒙特卡洛模拟进行正态性检验及可视化
r语言中如何进行两组独立样本秩和检验
R语言回归中的Hosmer-Lemeshow拟合优度检验
R语言Poisson回归的拟合优度检验
R语言Wald检验 vs 似然比检验
R语言基于协方差的结构方程拟合的卡方检验
R语言t检验和非正态性的鲁棒性
多重比较示例:Bonferroni校正法和Benjamini Hochberg法相关推荐
- R语言多重比较示例:Bonferroni校正法和Benjamini Hochberg法
原文链接:http://tecdat.cn/?p=21825 假设检验的基本原理是小概率原理,即我们认为小概率事件在一次试验中实际上不可能发生. 多重比较的问题 当同一研究问题下进行多次假设检验时,不 ...
- 多重假设检验与Bonferroni校正、FDR校正
总结起来就三句话: (1)当同一个数据集有n次(n>=2)假设检验时,要做多重假设检验校正 (2)对于Bonferroni校正,是将p-value的cutoff除以n做校正,这样差异基因筛选的p ...
- 相机校正、张氏标定法、极大似然估计/极大似然参数估计、牛顿法、高斯牛顿法、LM算法、sin/cos/tan/cot
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) CNN:RCNN.SPPNet.Fast RCNN.Faste ...
- 骆驼命名法,帕斯卡命名法和匈牙利命名法(转)
一.匈牙利命名法:广泛应用于象Microsoft Windows这样的环境中. Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Micros ...
- 双向循环链表的头插法和尾插法
我们平常学链表的时候会学单向不循环链表,单向循环链表,双向不循环链表,双向循环链表及内核链表,各种格式的链表.今天我因为忘记双向循环链表的头插法和尾插法的顺序了,特意写一篇文章来巩固一下.首先我根据顺 ...
- 使用等价类划分法和边界值分析法设计出学生成绩的测试用例
等价类划分法和边界值分析法的结合使用 1.等价类划分法简介 1.1基本思想 1.2划分基础 1.3等价划分类的规则 1.4测试用例的设计步骤与实例 1.5三角形问题的等价类划分法设计测试用例. 1.6 ...
- java 骆驼命名_编程常见的三种命名法:骆驼命名法,帕斯卡命名法和匈牙利命名法...
一.匈牙利命名法:广泛应用于象Microsoft Windows这样的环境中. Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序 ...
- C语言的双向链表头插法和尾插法,指定节点删除
文章目录 前言 头插法 尾插法 删除节点 测试代码如下 前言 双向链表和单链表的唯一区别就是多个一个指针域而已,该指针域可以访问链表的上一个节点. 关于构造双向链表的过程我们常见的有两种方法,和单链表 ...
- 计算机软件技术 上海电力学院,上海电力学院 计算机软件技术 实验三 用头插法和尾插法创建线性表...
上海电力学院计算机软件技术实验三用头插法和尾插法创建线性表 #include #define MAXLEN 9 struct table {int key; int othererm; } ; typ ...
最新文章
- com组件和一般dll的区别
- 解压与压缩ramdisk.img文件
- c语言 l l next,nexttowardl
- 全局变量及其含义php,php Server:php超全局变量Server的含义与用法示例
- UltraISO 制作ESXi 的 USB 安装盘
- oracle 左连接 权限,Oracle 左连接、右连接、全外连接、(+)号作用
- 拒绝平庸——浅谈WEB登录页面设计
- 博文视点大讲堂25期——2天玩转单反相机
- 【渝粤教育】国家开放大学2018年春季 0408-21T管理学基础 参考试题
- 匹配追踪分解 时频 matlab,基于匹配追踪(MP)算法的信号自适应分解研究及其应用...
- Sublime Text 3 全程详细图文使用教程
- Dev5.4.0由于与64位的版本不兼容的问题解决方案
- android分享微信获取资源失败怎么办,android 调用系统分享微信失败:获取资源失败...
- 三位如花女人的多彩理财生活
- c语言中sbit什么意思,c语言中bit和sbit的区别.doc
- slice在php里面什么意思,js中slice()使用方法
- Vue,js前端实现语音实时转换文字,前端实现浏览器语音实时转换为文字,vue阿里云语音转文字
- Android Socket IQ聊天软件 之 聊天气泡编码步骤讲解
- 计算机毕业设计PHP+安卓移动LYQ电子商城APP(源码+程序+lw+远程调试)
- CC00016.kylin——|HadoopOLAP_Kylin.V16|——|Kylin.v16|Cube优化|检查Cuboid数量|