数据可视化——R语言forestplot包绘制组间差异对比图(森林图forest plot)

news/2024/11/23 0:10:59/

数据可视化——R语言forestplot包绘制组间差异对比图(森林图forest plot)

概述:使用R语言中的forestplot包绘制组间差异对比图。forestplot包本来用于绘制森林图,此处笔者将此用于绘制组间差异对比图,异曲同工,为另一篇博文:数据可视化——R语言ggplot2包绘制组别间指标差异对比图(箱形图及误差条图)提供了另一种实现方案。

森林图(forest plot)常用于Meta分析,可用于表达统计指标的效应量和置信区间。本文中,笔者将森林图中的效应量用于表示各组间的属性指标差异的中值,森林图中的置信区间用于表示各组间的属性指标差异的四分位距的范围。

使用工具:R语言中的forestplot包

如果没有安装forestplot包,输入install.packages(“forestplot”)进行安装。

以下示例中的数据模拟产生:共5个模型,每个模型都有一个属性指标,且每个模型的每个属性指标都进行了100次重复测量。绘制差异对比图时需要额外的计算,即每两两模型之间指标属性相减求出差异,然后寻找差异值的上、下四分位数和中值即可。

示例代码如下:

rm(list=ls()) #清除工作区library(forestplot)#生成模拟数据
# 共5个模型,每个模型都有一个属性指标,且每个模型的每个属性指标都进行了100次重复测量
group1 <- rnorm(100)+2
group2 <- rnorm(100)+1
group3 <- rnorm(100)+0.5
group4 <- rnorm(100)
group5 <- rnorm(100)-0.5
Data <- data.frame(group1=group1,group2=group2,group3=group3,group4=group4,group5=group5)#计算各个模型属性之间的差值
Data$group1_2 <- Data$group1 - Data$group2
Data$group1_3 <- Data$group1 - Data$group3
Data$group1_4 <- Data$group1 - Data$group4
Data$group1_5 <- Data$group1 - Data$group5
Data$group2_3 <- Data$group2 - Data$group3
Data$group2_4 <- Data$group2 - Data$group4
Data$group2_5 <- Data$group2 - Data$group5
Data$group3_4 <- Data$group3 - Data$group4
Data$group3_5 <- Data$group3 - Data$group5
Data$group4_5 <- Data$group4 - Data$group5#计算各个模型之间差值的25%分位数,中位数,75%分位数,同时保留两位有效数字
Data_differ_quantile <- apply(Data[,6:15],2,function(x) round(quantile(x,c(0.25,0.5,0.75)),digits=2))
#设置行名
rownames(Data_differ_quantile)[1:3] <-c("differ_down","differ_median","differ_up")Data_t <- data.frame(t(Data_differ_quantile)) #转置
#各个模型间的比较
pairs_name <- c("Model1 vs. Model2","Model1 vs. Model3","Model1 vs. Model4","Model1 vs. Model5","Model2 vs. Model3","Model2 vs. Model4","Model2 vs. Model5","Model3 vs. Model4","Model3 vs. Model5","Model4 vs. Model5")pairs_median <- Data_t$differ_median #差值的中值
pairs_CI <- paste("(", Data_t$differ_down, " ~ ", Data_t$differ_up, ")", sep = "") #差值的四分距的范围Data_str <- data.frame(pairs_na=pairs_name,pairs_median=pairs_median,pairs_CI=pairs_CI)
Data_str <- as.matrix(Data_str) #类型转为矩阵
Data_str <- rbind(c(NA,"Median","Interquartile ranges"),Data_str) #第一行表示指标说明,NA表示不显示jpeg(file = "results_Value_1.jpg",width =2000,height = 1800,units = "px",res =300) #结果保存forestplot(Data_str,  #显示的文本c(NA,Data_t$differ_median), #误差条的均值(此处为差值的中值)c(NA,Data_t$differ_down), #误差条的下界(此处为差值的25%分位数)c(NA,Data_t$differ_up), #误差条的上界(此处为差值的75%分位数)zero = 0, #显示y=0的垂直线xlog=FALSE, #x轴的坐标不取对数fn.ci_norm = fpDrawCircleCI, #误差条显示方式boxsize = 0.3, ##误差条中的圆心点大小col=fpColors(line = "#CC79A7", #误差条的线的颜色box="#D55E00"), #误差条的圆心点的颜色lty.ci = 7,   # 误差条的线的线型lwd.ci = 3,   # 误差条的线的宽度ci.vertices.height = 0.15, # # 误差条末端的长度txt_gp = fpTxtGp(ticks = gpar(cex = 0.5), xlab = gpar(cex = 0.7), cex = 0.7), #文本大小设置lineheight = "auto", #线的高度 xlab="Differences in assessment indicators between relevant pairs" #x轴的标题)dev.off()

效果图如下:
在这里插入图片描述
使用forestplot包绘制组间差异对比图的好处在于整理好要显示的文本和数字,可直接生成图形,且需要设置的参数相对较少。

想要学习更多关于forestplot包绘制森林图的知识,可以参考:
https://cran.r-project.org/web/packages/forestplot/forestplot.pdf.

References

https://cran.r-project.org/web/packages/forestplot/forestplot.pdf
https://blog.csdn.net/weixin_38423453/article/details/84850083


http://www.ppmy.cn/news/262869.html

相关文章

WIN10:Cognos10.2_x32_连接数据源Mysql

一、安装Mysql数据库 1、创建数据库Cognosdb 2、创建临时表temp1 二、ODBC_32 三、Cognos通过ODBC方式连接MYSQL 四、FM使用数据源报错

在职考研 | 对于朝九晚五的上班族来说同等学力申硕更轻松!

我们要知道的是&#xff0c;考在职研究生的群体90%以上都是朝九晚五的上班族。 他们工作忙&#xff0c;时间和精力都很有限。 考研本身难度就很大&#xff0c;但是既拿不出足够多的备考时间&#xff0c;也没法到线下去上课。 怎么能考上呢&#xff1f; 在这样的现实条件下&…

vue2 操作响应式变量时需要注意! 响应式变量失去响应性

文档 Vue 不能检测以下数组的变动&#xff1a; 当你利用索引直接设置一个数组项时&#xff0c;例如&#xff1a;vm.items[indexOfItem] newValue当你修改数组的长度时&#xff0c;例如&#xff1a;vm.items.length newLength 举个例子&#xff1a; var vm new Vue({dat…

机器学习聚类算法——BIRCH算法、DBSCAN算法、OPTICS算法

系列文章目录 前言 本文主要介绍BIRCH算法、DBSCAN算法、OPTICS算法&#xff0c;以及相关案例举例&#xff0c;以下案例仅供参考 一、BIRCH算法 1.1、BIRCH算法简介 BIRCH&#xff08;Balanced Iterative Reducing and Clustering using Hierarchies&#xff0c;平衡迭代规约…

【Python爬虫框架】这5个Python爬虫框架你用过几个?最后一个秒杀全部

Python语言拥有丰富的第三方库&#xff0c;使得Python成为了最流行的爬虫语言之一。而Python的爬虫框架更是让Python爬虫开发更加高效。在这篇文章中&#xff0c;我们将探讨5个最常见的Python爬虫框架&#xff0c;并分析它们的优缺点&#xff0c;帮助你更好地选择合适的框架。 …

Vue模板语法的生命周期是什么?

Vue.js 是一个流行的 JavaScript 框架&#xff0c;用于构建单页应用程序。Vue.js 提供了许多功能&#xff0c;如组件、指令、计算属性和过滤器等&#xff0c;使开发人员能够更轻松地构建动态和交互式用户界面。其中&#xff0c;Vue.js 的模板语法是 Vue.js 框架中非常重要的一个…

网上超市管理系统

超市管理系统 功能 用户 修改用户信息 -> users [usr]购买商品 管理购物车 -> cart [ cart ] 添加商品修改商品删除商品清空购物车 购物车支付 -> cart [item] &#xff0c;records [record]商品支付 -> records [record] 管理员 管理用户信息 -> users [user…

前端工程化初体验

最近在尝试着完整地体验一下前端工程化需要的那些流程&#xff0c;于是自己尝试一套属于自己的前端工程化流程。 前端工程化需要做什么&#xff1a; 1、创建项目需要有项目模板资源&#xff0c;所以这里我创建了一个前端脚手架CLI工具&#xff0c;mfex-project&#xff0c;主…