R: 网状Meta分析进行模型构建及图形绘制

news2024/9/29 23:58:45

网状meta分析的制作步骤主要包括:

1.  绘制网状证据图

2. 普通Meta分析(两两之间的直接比较)

3. 网状Meta分析(整合直接比较和间接比较的结果,绘制相关图形)

4. 绘制累积概率排序图

5. 三个假设的检验(同质性、相似性和一致性)

6. 偏倚风险评估、文献质量评价、敏感性分析、亚组分析、meta回归等等

步骤1前面已经说过了,步骤2是普通meta分析,也没什么好说的,今天重点介绍步骤3,就是进行网状Meta分析

今天的代码是接在上一篇文章的后面(网状Meta分析中网络证据图的绘制(R语言版)),用的plotdata1这个连续性变量数据(公众号后台回复“网络meta”获取数据),

首先我们需要准备好数据,数据跟上次演示的数据一样,在公众号后台回复“网络meta”获取数据。

连续性变量:有5种治疗方法,这里用1,2,3,4,5来代替

图片

二分类变量:有4种干预措施,这里用1,2,3,4代替。

图片

下面介绍用R绘制网状图的步骤,关于R和Rstudio的安装就不再介绍了,前面的文章都写过。

1. 我们打开Rstudio,第一步仍然是设置工作路径,然后把数据文件都放到路径文件夹下。

图片

在R语言里设置工作路径为D盘data文件夹。

图片

2. R语言进行网状Meta分析主要就是通过件gemtc 程序包调用对应的 rjags 程序包来执行的,所以第二步需要安装gemtc包,并且调用gemtc和rjags

图片

3. 导入数据,分别导入连续性变量和二分类变量,注意数据格式为csv格式。导入后分别赋值为plotdata1(连续性变量)和plotdata2(二分类变量)

图片

导入后在data中可以看到数据。

图片

4.设置标签,连续性变量有5种干预措施,分别定义为A,B,C,D,E五种治疗,赋值为treatments1。二分类变量有4种干预措施,分别定义为F,G,H,I四种治疗,赋值为treatments2

图片

图片

图片

注意跟上篇文章数据的不同之处: 均值、标准差和样本量要设置为mean, std.dev, sampleSize

5.绘制网状图,分别绘制连续性变量和二分类变量的网状图。

连续性变量:注意红色标注的部分,注意和二分类变量区分。每一行都有对应的功能说明,可以自行修改。

图片

执行后即可绘制出下面的网状图

图片

二分类变量:代码跟上面的一样。

图片

执行后即可绘制出下面的网状图

图片

这里要提到的是,如果样本量非常大,建议把上面代码中的样本量加权节点代码(下图)删除掉,不然做出来会非常紧凑。节点加不加权不影响论文的发表。

图片

通过修改代码里的数值可以进一步修正网状图,也可以导出为PDF后在Adobe illustrator里修改。

图片

在AI软件中可以对线条、节点、标签进行各种修改。

图片

前面的文章里我们构建了network这个数据集,然后制作了网状证据图,今天我们会用到这个数据集。

图片

1. 首先利用上面的连续性变量plotdata1的network数据集去构建网状meta分析的随机效应模型。

图片

如果是二分类变量数据需要进行以下修改:link代表链接函数,如果是二分类变量,把identity改成logit,意思就是进行对数转换;likelihood是似然函数,二分类变量改成binom。其他都用上面默认的。

R语言中关于上述代码函数的说明:

2. 使用Markov Chain & Monte Carlo(MCMC)方法进行抽样模拟和计算,参数为n.adapt=20000, n.iter=50000, thin=10。这里可以查看代码和结果。

图片

查看代码:这个是调用JAGS计算的贝叶斯代码(电脑要提前安装好JAGS软件,百度一搜一大把),跟WinBUGs这些软件代码一样。我们在文章投稿的时候需要把代码放在附录里,直接在这里copy就可以了。

图片

查看结果:里面给了两两比较的结果,红框框出来的结果给出了模型拟合的结果,ratio越接近1表示模型拟合程度越好,同时也给出了模型整体的异质性I2值,我们这个模型异质性等于0,是非常不错的。

图片

图片

3. 查看收敛诊断结果,并绘制收敛诊断图、轨迹图和密度图

图片

收敛诊断结果:

图片

收敛诊断图:

图片

轨迹图和密度图:

图片

4. 绘制网状meta分析的联赛表,并导出为excel。

图片

R中可以查看结果:

图片

结果导出到你的R语言一开始设置的工作目录,在excel中可以进行进一步编辑

图片

联赛表在前面的文章中有过展示,就是在网状meta分析文章中经常看到的下面的这个图,这个图展示的就是直接比较和间接比较的结果。我们把上面的Excel表格进行加工整理就可以做成下面的图。

图片

5. 绘制网状meta分析的森林图

我们可以用自带的forest代码绘制森林图

图片

森林图展示:

图片

你也可以对数据格式进行重新整理,然后用forestplot包来绘制森林图,这个在前面的文章中有过介绍(用R来做一个临床研究亚组分析的森林图),就不再重复。

累积概率排序图的绘制:

1. 计算排序结果,代码如下,这个主要是用ranks.probability代码来实现,括号里的results是上个帖子里面MCMC抽样预算的结果数据, 如果是比较的治疗方法,preferredDirection设置为1代表数值越大疗效越好,如果设置为-1代表数值越大疗效越差。print代表把排序结果展示出来。write.csv是把结果导出为excel文件。

图片

2.展示的排序结果,从数据来看,如果是治疗方法,那么治疗效果从大到小的顺序依次为1,3,4,5,2,第1种治疗方法效果最好。

图片

3.导出的excel文件

图片

4. 绘制累积概率排序图,如果不需要修改标签和颜色,直接用简单的默认代码,非常简单。

图片

出来的图形:

图片

5.如果需要改标签和图形颜色,可以用下面的代码。

图片

col是颜色函数,这里用的palette是基本颜色(默认是下面几种颜色)。

图片

font.axis是设置字体,可以自己修改数值感受下。

执行代码后是下面的图:

图片

如果你就想用默认的灰白颜色搭配,就把这个代码删除就行了,你想自己修改颜色稍微麻烦点,具体可以参考下面网站的介绍:

网址:https://segmentfault.com/a/1190000006780090

图片

比如我换成colorRampPalette这个函数

图片

出来的就是下面的图:

图片

6. 上面的图是累积概率图,如果绘制不累积的概率图,可以用下面的代码。

图片

加一个beside=T就可以分开了,执行后是下面的不累积概率图:

图片

7. 然后我们还可以算sucra值,用的是sucra这个函数,代码如下。

图片

print是展示结果,plot是作图

执行代码后出结果:SUCRA值越接近1,则排名越靠前,若越接近0则排名靠后。

图片

作图:

图片

如果想画更好看的图,可以用R语言经典的ggplot2绘图包来绘制概率图,但是要重新整理数据,而且代码也相对比较复杂,这里就不介绍了,上面画的图直接就可以放到文章里,并不影响文章的发表。

5. 三个假设的检验(同质性、相似性和一致性)

6. 偏倚风险评估、文献质量评价、敏感性分析、亚组分析、meta回归等等

1. 首先我们来讲同质性:

网状Meta分析里提到的同质性检验实际上就是普通Meta分析常说的异质性检验。

举个例子,你纳入网状Meta分析有3种治疗措施A、B、C,纳入的文献中有A和B直接比较的文献10篇,B和C直接比较的文献13篇,A和C直接比较的文献12篇。那么你的网状Meta分析中就要包含A和B、B和C、A和C直接比较的普通Meta分析异质性分析结果。

普通Meta分析异质性分析前面的文章中已经专门具体写过,就是从临床异质性、方法学异质性和统计学异质性三个方面去分析,大家可以去看前面的文章(聊聊Meta分析异质性的检验和处理)。最后这个异质性定量分析的结果会在直接比较的森林图里展示出来,主要就是看I2值。

图片

有的同学会提到网状Meta分析不是应该考虑整体同质性吗? 实际上在做网状Meta分析的时候不需要做这个,你可以去看顶刊的网状Meta分析文章都是做的直接比较的异质性分析。为什么这么做就行了,因为如果直接比较的文献之间都没有同质性,那就谈不上整体的同质性,根本就不适合做网状Meta分析。

最后总结下网状Meta分析的同质性检验实际上就是普通Meta分析的异质性分析定性用Q检验,定量用I2值,另外还可以比较随机效应模型和固定效应模型的结果(这个在前面提到的一篇JAMA范文里作者用Bland–Altman图示法来展示了随机效应模型和固定效应模型比较的结果),在此基础上还可以做亚组分析和Meta回归来找异质性来源,这个就是最后一步的事情了。

图片

图片

图片

图片

理论上讲,随机效应模型和固定效应模型两种方法一般不会获得完全相同的结果,但是会具有一定趋势的差异,啥意思呢?就是说一种方法的测量结果总是大于(或小于)另一种方法,这种系统误差就是我们常说的“偏倚”。

Bland-Altman法主要是计算出两种方法测量结果的“95%一致性界限(95% limits of agreement, 95% LoA)”,并用图形的方法直观地反映出这个一致性界限——通常以测量结果的差值为纵轴,以测量结果的均数为横轴,绘制散点图,并标注出95%一致性界限。最后得出两种方法是否具有同质性的结论。如果两个测量结果的差异位于95% LoA内,则可以认为这两种方法测量结果具有较好的同质性。

这个Bland-Altman图统计软件都可以做,最常用的傻瓜式软件是Medcalc,点点菜单就完成了,R语言来做当然是没有问题的因为我们做网状Meta分析全程都是用R,所以这里我把R的代码给到大家,主要用到的就是BlandAltmanLeh这个R包,如果打算做这个图的可以试试。

(1)数据整理成下面的格式

图片

(2)设置工作路径并安装BlandAltmanLeh包

图片

(3)导入数据

图片

(4)作图

#FE指的是固定效应模型的均值,RE指的是随机效应模型的均值,注意顺序,用FE-RE, silente=F,同时给出统计量。默认的LoA计算是用差值mean±1.96SD,并且给出95%置信区间,作出来的图如下,所有的点都95%LoA范围内说明同质性比较好。

2. 我们再来说相似性:

所谓的相似性我们还是用上面的例子来举例,我们要做A和B的间接比较,共同对照组是C,那么相似性指的就是A和C直接比较和B和C直接比较两者之间的相似性。

​​​​​​​

相似性目前还没有公认的统计学方法,主要还是靠主观判断,可以从临床相似性和方法相似性来分析,这个其实跟普通Meta分析探讨异质性也是一样的思想。

临床相似性从PICO来分析:

  • P主要指的是病人特征,包括性别、年龄、并发症、样本来源、纳入排除标准。

  • I和C主要指干预措施的剂量、干预方法、疗程等等。

  • O指的是结局指标的随访时间、测量方法等等。

方法学相似性主要从S来分析:

也就是研究设计来分析,包括随机的方法、盲法、分配隐藏等等。

既然没有定量的统计学方法,那么如何主观判断是否相似呢?实际上只要会影响到试验效应的关键特征相似即可,一些不会影响到试验效应的特征不相似是没有关系的。

什么是一致性?

网状 Meta 分析中一致性是指直接与间接比较结果的相似度,或者不同路径之间间接比较结果的相似度。

像下面左边的图A和B两种干预措施之间我们要进行比较,既有A和B直接比较的数据合并结果,也有以C为共同对照的A和B间接比较的结果,一致性就是看A和B直接比较和间接比较的结果是不是一致的。右边的图A和B没有直接比较的结果,但是有2种共同对照C或者D,那么一致性就是看以C为共同对照的A和B间接比较和以D为共同对照的A和B间接比较的结果是不是一致的。

图片

关于一致性的检验,就是判断是否存在结果不一致,如果存在直接证据和间接证据的不一致,那么就会影响网状Meta分析结果的真实性。目前我们主要通过定量分析直接比较和间接比较的统计学差异来进行鉴定,常用的检验方法就是节点拆分法(Node-Splitting)(前面的范文里就是用的这个方法: 读一篇JAMA上的范文掌握网状Meta分析的制作)。

节点拆分法就是对网状Meta分析的每一个节点进行分析,比较直接证据和间接证据的统计学差异,如果没有差异说明结果是一致的,可以用一致性模型拟合网状Meta分析,如果有差异说明存在不一致性,那么我们就需要采用不一致性模型进行拟合,我们前面的帖子介绍的网状meta分析都是用的一致性模型拟合的,如果要用不一致性模型拟合,就需要把前面帖子(网状Meta分析进行模型构建及图形绘制)中下面代码的type=“consistency”改成“ume”即可。

图片

在说明书中,可修改的模型如下,除了ume,还有回归模型和节点拆分模型。

图片

扯了这么多,最重要的还是介绍怎么用软件进行一致性检验,我们还是用R语言进行检验,代码如下。

1. 执行节点拆分法。

图片

2.展示结果。

图片

结果展示:P值大于0.05表明2个干预措施的直接比较和间接比较是一致的。d.1.3 代表的是1号干预措施和3号干预措施之间的比较,以下类推。

图片

3.绘制森林图并导出

图片

图片

在完成一致性检验之后,如果发现存在不一致性,那么就需要找产生不一致性的原因,比如临床特征和方法学是否有差异,是否存在异质性,这里就顺便讲下如何进行异质性检验。

1.异质性检验的代码如下:

图片

2. 展示结果

图片

结果展示:i2.pair是直接比较的I2值,i2.cons是间接的I2值,incons.p是一致性检验的P值,从整个结果来看本数据没有明显的异质性。

图片

3.绘制森林图并导出

图片

 

图片

好了,关于网状Meta分析的内容基本就介绍完了,前面的步骤当中的最后一步也就是第六步,主要是进行偏倚风险评估、文献质量评价、敏感性分析、亚组分析、meta回归等等,这些跟普通Meta分析是一样的,这里就不再过多介绍了,我在《系统评价/Meta分析零基础从入门到精通》这门课里都有详细的讲解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1550383.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【独立开发前线】Vol.23 这个卖Excel课程的网站,月访问量14.5万,年销售额超过200万美金

今天要给大家分享的案例网站是:Miss-Excel 网址是:Miss Excel 这是一个专门销售Excel课程的网站,网址一共有18个系列的视频课程,最便宜的44美金,最贵的1197美金。所有的课程都是网站的创始人Kat Norton录制的&#xf…

SDSX-小米这篇论文牛吹大了,比SD1.5快30倍,比SDXL快60倍

今天在论文集上看到一篇很新的文章: SDXS: Real-Time One-Step Latent Diffusion Models with Image Conditions 大至意思就是,小米公司做了一个新的扩散模型,用的是蒸馏法(参见turbo模型 及LCM模型),速度很快&#…

文生视频大模型Sora的复现经验

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

QtCreator调试时无法显示std::string的内容

在银河麒麟V10或Ubuntu下使用QtCreator调试代码时&#xff0c;std::string类型变量在大多数情况下不显示实际内容&#xff0c;而是显示"<无法访问>"字样&#xff0c;鼠标点击进去也是看不见任何有用信息&#xff0c;这样非常影响调试效率&#xff0c;为此&…

docker 的网络管理

docker应用自带了三种类型的网络&#xff0c;然后我们自己也能自定义网络 roottest-virtual-machine:~# docker network ls NETWORK ID NAME DRIVER SCOPE 4c3e28760cff bridge bridge local afd1493dc119 host host local 5f200e2eaf22 n…

读所罗门的密码笔记04_社会信用

1. 人工智能 1.1. 人工智能可以帮助人们处理复杂的大气问题&#xff0c;完善现有的气候变化模拟&#xff0c;帮助我们更好地了解人类活动对环境造成的危害&#xff0c;以及如何减少这种危害 1.2. 人工智能也有助于减少森林退化和非法砍伐 1.3. 人工智能甚至可以将我们从枯燥…

argocd部署

一、前言 ArgoCD 是一个开源的、持续交付工具&#xff0c;用于自动化部署应用程序到 Kubernetes 集群。它基于 GitOps 理念&#xff0c;通过使用 Git 作为单一的源头来管理应用程序的配置和部署状态&#xff0c;argocd会定时监控git仓库中的yaml配置文件&#xff0c;当git仓库中…

uniapp 微信小程序 canvas 手写板文字重复倾斜水印

核心逻辑 先将坐标系中心点通过ctx.translate(canvasw / 2, canvash / 2) 平移到canvas 中心&#xff0c;再旋转设置水印 假如不 translate 直接旋转&#xff0c;则此时的旋转中心为左上角原点&#xff0c;此时旋转示意如图所示 当translate到中心点之后再旋转&#xff0c;此…

题目 3152: 蓝桥杯2023年第十四届省赛真题-接龙数列【DFS简单爆搜做法】

&#x1f44f;这个是目录哦~ DFS 只能拿到 1/4 的分数心路历程核心出装三大件get_first()get_last()dfs() 全部 DFS 只能拿到 1/4 的分数 心路历程 核心出装三大件 get_first() inline int get_first(int n) {//123//12//1while (n / 10) {n / 10;}return n; }get_last() in…

Neural Latents Benchmark: 尖锋序列潜变量模型

Neural Latents Benchmark ‘21: Evaluating latent variable models of neural population activity 挑战赛说明: https://neurallatents.github.io/ 挑战赛地址: https://eval.ai/web/challenges/challenge-page/1256/overview NeuralLatent 论文: https://arxiv.org/abs/…

【opencv】教程代码 —ImgProc (6)通过Wiener滤波器恢复运动模糊图像

6. motion_deblur_filter.cpp通过Wiener滤波器恢复运动模糊图像&#xff08;参数难调&#xff09; 您将学习如何使用维纳滤波器恢复具有运动模糊失真的图像 /** * brief 学习如何使用Wiener滤波器恢复运动模糊失真的图像。 * author 混沌鱼, karpushinngs.ru, https://github.c…

java图书管理系统(简易)

实现的基本功能&#xff1a; 登录时&#xff0c;需要输入姓名&#xff0c;然后选择作为管理者还是普通用户。选择成功后选择想要实现的功能。管理者的目录下方有有五个功能&#xff0c;而普通用户有4个功能&#xff0c;如下图 首先我们要建立Book这个类&#xff0c;里面包含书…

Swagger3探索之游龙入海

引言 后端开发中常用的接口调用工具一般使用Postman、ApiPost工具&#xff0c;但后期需要与前端联调&#xff0c;要补充接口文档花费大量时间&#xff0c;此时Swagger3应运而生&#xff0c;大大提高沟通交流的效率。 引用依赖 <!-- Swagger3 调用方式 http://ip:port/swa…

Echarts之x轴,Y轴配置项大全

ECharts是一个强大的数据可视化库&#xff0c;提供了丰富的配置项来定制图表的x轴和y轴。下面是ECharts中x轴和y轴的配置项大全&#xff1a; xAxis配置项&#xff1a; type&#xff1a;轴类型&#xff0c;可选值有&#xff1a;“value”&#xff08;数值轴&#xff09;, “cat…

IP如何异地共享文件?

【天联】 组网由于操作简单、跨平台应用、无网络要求、独创的安全加速方案等原因&#xff0c;被几十万用户广泛应用&#xff0c;解决了各行业客户的远程连接需求。采用穿透技术&#xff0c;简单易用&#xff0c;不需要在硬件设备中端口映射即可实现远程访问。 异地共享文件 在…

excel匹配替换脱敏身份证等数据

假如excel sheet1中有脱敏的身份证号码和姓名&#xff0c;如&#xff1a; sheet2中有未脱敏的数据数据 做法如下&#xff1a; 1、在sheet2的C列用公式 LEFT(A2,6)&REPT("*",8)&RIGHT(A2,4) 做出脱敏数据&#xff0c;用来与sheet1的脱敏数据匹配 2、在sheet…

案例研究|DataEase实现物业数据可视化管理与决策支持

河北隆泰物业服务有限责任公司&#xff08;以下简称为“隆泰物业”&#xff09;创建于2002年&#xff0c;总部设在河北省高碑店市&#xff0c;具有国家一级物业管理企业资质&#xff0c;通过了质量体系、环境管理体系、职业健康安全管理体系等认证。自2016年至今&#xff0c;隆…

以太网链路聚合——增加带宽,解决生成树收敛慢的问题

目录 一.对STP生成树的补充 1.STP接口状态 2.STP生成树的改进 二.网络可靠性 1.单板可靠性 2.设备可靠性 3.链路可靠性 三.链路聚合 1.多条链路聚合增加带宽 2.链路聚合术语 四.链路聚合模式 1.手动模式 2.LASP模式 &#xff08;1).LASP术语 &#xff08;2&…

[Qt] QString::fromLocal8Bit 的使用误区

QString::fromLocal8Bit 是一个平台相关的函数。默认情况下在 Windows 下 就是 gbk 转 utf-8 ,在 Linux就应该是无事发生。因为Linux平台默认的编码方式就是 utf-8 可以通过 void QTextCodec::setCodecForLocale(QTextCodec *c)来修改 Qt默认的编码方式。如下 第一输出乱码的…

深入探讨分布式ID生成方案

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…