R数据分析:网状meta分析的理解与实操

news2024/11/25 6:20:58

meta分析之前有给大家写过,但是meta分析只能比较两个方法。经常是被用来证明在现有研究中显示矛盾结果的干预方法到底有没有效的时候使用,通过证据综合得到某种干预到底有没有用的结论。但是如果我要证明好几种方法到底哪个最优,这个时候meta分析就不行了,我们得使用网状meta。

The conventional meta-analysis approach is useful, but is limited in that it can only compare two interventions at a time, and only those evaluated directly in head-to-head trials

网状meta的原理和meta没有区别,精髓在于其利用了间接证据,可以进行多个干预的同时分析。一个研究直接对A、B两种干预进行比较,这个叫做直接证据;所谓的间接证据的意思是,我们有研究比较了A和C、有研究比较了B和C,此时可以构建一个证据链(forming an A-B-C “loop” of evidence)进行AB之间的比较,这个就叫做间接证据。

在临床实践中,若有一系列的药物可以治疗某种疾病,但文献报道的RCT均是药物与安慰剂的对照,而药物互相之间的RCT都没有进行或很少,那么在这种情况下,想要进行药物间效应的比较就需要将间接比较和直接比较的证据进行合并,就可以用网状Meta分析。下面一张图就可以较为清楚地说明网状meta到底在干什么:

在最简单的适用网状meta的情况下给大家一个例子:我们要比较3种方法ABC的有效性,比如我们要比较BC,有研究比较了BA得到MD= -2.3,还有个研究比较了CA得到MD=-4,那么我们通过间接比较就可以得到BC相比的MD为-1.7如下图:

因为有了共同的比较对象A,所以能够间接得到BC的比较结果。能这么比是有一个显而易见的假设需要满足的:所提到的RCT的研究人群得来源于同一个总体,从而我们可以将BA和CA的关系推出BC,这个也叫transitivity。是网状meta可以站得住脚的基础。

The core tenet of the transitivity assumption is that we can combine direct evidence (e.g. from comparisons A −− B and C −− B) to create indirect evidence about a related comparison (e.g. A −− C)

这个假设保证了间接效应是可以成立的,但是研究的协变量不一致的情况下这个假设很容易不满足,所以我们做文献筛选的时候就要将人群尽可能相似的研究纳入,当然时候我们还可以比较直接效应和间接证据的一致性来反映这个假设是否成立。这个时候在统计上又叫做比较consistency或者Incoherence。可以看的统计指标包括I方,包括异质性检验的p值,包括图形热点等。

we can see that the heterogeneity/inconsistency in our network model is very high, with I2= 89.6%. This indicates that selecting a fixed-effect model was probably not appropriate (we will get back to this point later).

了解了这些之后我们给出网状meta的定义:

Network meta-analysis (NMA), also termed multiple treatment meta-analysis or mixed treatment comparisons, was developed as an extension of pairwise meta-analysis to allow comparisons of more than two interventions in a single, coherent analysis of all the relevant RCTs

网状meta最大优势就是可以对治疗同类疾病的不同干预措施进行量化比较,并按照某一结果指标效果进行排序

The most interesting question we can answer in network meta-analysis is which treatment has the highest effects.

而且最终呈现的图片结果较一般 Meta 分析高端,目前应用越来越多。下表对传统meta分析的步骤进行了总结并且提出了网状meta在相应步骤上的注意事项。

总体来说网状meta要做好其实是非常不容易的,从立题到分析到文献筛选到数据提取到各种偏倚评估再到具体分析操作到最后结果报告都有很多要注意的地方,本文主要聚焦分析实操和结果报告,希望对大家有帮助。

网状meta的结果呈现

在网状meta的文章中都会出一张如下图所示的网叫做Network diagrams:

上面的图展示的各个干预措施的比较情况,哪些是直接比较哪些是间接比较。图中可以看出来Timolol是被比较最多的干预措施。上面这个线的粗细表示研究的数量,点的大小表示用药的人数(研究中的样本量),这些也可以根据需要映射别的指标,比如研究的精准度。

The network geometry shows which interventions have been compared directly in RCTs, and which can only be informed indirectly.

当然我们光看图,视觉上较为直观但是能获取到的信息较少,一般我们还会出一个表作为这个图的补充,这个表就叫做league table或者triangle table:

这个图展示了网状meta的结果,包括了所有可能的两两比较的结果,比如图中左上角的2.52就表示apraclonidine这个药相对于安慰剂来讲就能显著有利于结局。

不同干预方法相互比较的结果出来之后,要指导临床决策我们还需要报告到底哪种方法更好,这个时候我们可以给出一个排序图叫做rankograms,用这个图来展示各个方案成为第几优方案的概率的曲线,如下图:

其余的还有和传统meta分析一样的异质性检验的结果,森林图等。总结起来,一个网状meta的分析部分特别的就包括网状图Network diagrams,三角表league table,累计排序曲线cumulative ranking curve (SUCRA)

在拟合网状meta的时候我们依然可以选择固定效应模型或者随机效应模型,这个主要从研究异质性考虑,可以看的统计指标包括I方,包括异质性检验的p值,包括图形热点,具体我们在实操中讲解:

A further assumption of NMA is consistency, the statistical agreement between the direct and indirect comparisons. Consistency is the statistical manifestation of transitivity to the data. The approaches for checking inconsistency can be classified in two categories: the global approaches and the local approaches.

For the global approaches, inconsistency is evaluated in the entire network by modifying the NMA model to account for potential inconsistency, whereas the local approaches detect potential “hot spots” of inconsistency in the network, such as by examining individual loops of evidence separately. It is generally recommended to use both types of methods for inconsistency.

实例操练

比如我现在从文献种收集了如下数据:

上面数据中第一列是研究的标签,TE为方法比较的效应值,seTE为对应的标准误,treat1和treat2为对比的组别。

有了上面的数据我们就可以适用netmeta函数做网状meta了,代码如下,需要注意sm为效应量可以为RD,OR,RR,HR,SMD,MD等,要根据实际选择:

m.netmeta <- netmeta(TE = TE,
                     seTE = seTE,
                     treat1 = treat1,
                     treat2 = treat2,
                     studlab = author,
                     data = mydta,
                     sm = "SMD",
                     fixed = TRUE,
                     random = FALSE,
                     reference.group = "cau",
                     details.chkmultiarm = TRUE,
                     sep.trts = " vs ")
summary(m.netmeta)

运行后得到对比的效应值及其置信区间和Q值,结果如下:

还有每个治疗和参考治疗对比的效应值以及I方:

上图显示我们的I方是很大的,用固定效应模型就不合适,需要用随机效应模型(从I方和异质性检验的结果都可以说明)。

我们也可用Net Heat Plot来查看到底异质性来源是哪一个:

netheat(m.netmeta)

上面图中灰色色块越大表示该效应越重要,有色色块表示横轴效应的异质性可以归因于纵轴效应的比例,色块越红比例越高,色块越蓝比例越低。

假设上面的结果做对了,我们可以接着往下出Network diagrams,简单代码示例如下,这个函数有很多参数可以调整的,可以把图做的非常漂亮,大家自己尝试:

netgraph(m.netmeta, 
         labels = long.labels)

从这个图中可以直观的看出比较的情况了,当然了我们还需要数值型的结果表达,我们可以做一个league table出来,代码和对应输出如下:

netleague <- netleague(m.netmeta, 
                       bracket = "(", # use round brackets
                       digits=2)  

最能体现网状meta的优势的地方就是各个干预方法的比较了,通过干预方法排序,回答哪种干预最优,通过下面代码得到每种干预的排序:

netrank(m.netmeta, small.values = "good")

运行结果中会输出一个p值,表示的是该方法比其余方法好的概率,这个值越大越好,当然光看p值也不行我们要考虑稳定性,还得看置信区间,这个时候我们可以做一个森林图来展示各个干预相对于参考方案的效应分布。

forest(m.netmeta, 
       reference.group = "cau",
       sortvar = TE,
       xlim = c(-1.3, 0.5),
       smlab = paste("Therapy Formats vs. Care As Usual \n",
                     "(Depressive Symptoms)"),
       drop.reference.group = TRUE,
       label.left = "Favors Intervention",
       label.right = "Favors Care As Usual",
       labels = long.labels)

从上面结果可以看出,相对于参考组,ind的效果是最好的。对于这个结果排序,我们也可以用下面代码出排序曲线:

plot(rankogram(m.netmeta, nsim = 100),type = "line")

依然可以得到ind排在第一。

到这儿网状meta分析涉及的网状图Network diagrams,三角表league table,累计排序曲线cumulative ranking curve (SUCRA)就都介绍完了。

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

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

相关文章

谈谈功率IC巨头—士兰微

大家好&#xff0c;我是砖一。 今天给大家分享一下士兰微电子公司&#xff0c;&#xff0c;有做功率元器件&开关电源和IC的朋友可以了解一下&#xff0c;希望对你有用~ 1 公司介绍 士兰微电子成立于1997年&#xff0c;于2003年上市&#xff0c;总部位于杭州&#xff0c;…

智能面试——录音及播放下载js-audio-recorder — post请求,formdata传参

录音插件 js-audio-recorder bug&#xff1a;本地调试调取不起来麦克风 浏览器配置安全域名 chrome://flags/Insecure origins treated as secure输入域名即可电脑需要连接上耳机 <template><div class"BaseRecorder"><div class"BaseRecorder-r…

seo调优

SEO 网站地图&#xff1a;sitemap.xmlrobots.txtxxx.com/www.xxx.com 解析到服务器&#xff0c;xxx.com 301 到 www.xxx.comhttps百度站点管理标题描述关键词标签语义化内链外链死链链接html结尾友情链接前端架构 注意&#xff1a;已收录链接&#xff0c;禁止改变链接地址 ro…

【C++第三阶段】deque容器评委打分案例

以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 构造函数赋值操作大小操作插入删除数据存取排序评委评分案例描述 deque容器 双端数组&#xff0c;可以对头端插入删除操作。 如下图所示。 头部有插入删除操作&#xff0c;尾部亦然…

国内如何实现GPT升级付款

本来想找国外的朋友代付的&#xff0c;但是他告诉我他的信用卡已经被绑定了他也升级了所以只能自己想办法了。就在一位博主下边发现了这个方法真的可以。只是需要与支付宝验证信息。刚开始不敢付款害怕被骗哈哈&#xff0c;我反诈骗意识绝对杠杠的 该方法就是我们办理一张虚拟…

After Effects 2024 中文激活版 高效工作流程与创新的视觉特效 mac/win

After Effects 2024是Adobe公司推出的一款专业视频特效制作软件&#xff0c;广泛应用于电影、电视、动画等媒体制作领域。它凭借强大的功能和灵活的操作&#xff0c;帮助用户轻松创建电影级影片字幕、片头和过渡效果&#xff0c;以及实现立体效果和动态场景的切换。 同时&#…

Java-接口—知识(基础)

承接上一节&#xff0c;我们讨论了抽象类和抽象方法。 那我们尝试在抽象的道路上走的更远一点&#xff0c;先来总结一下抽象&#xff1b; 抽象类&#xff1a;类中的属性规范了子类必须有什么样的特征&#xff0c;有什么状态。类中的方法规范了子类必须有什么行为&#xff0c;…

【Spring Security】2.实现最简单的身份验证

文章目录 一、找到官网的身份认证&#xff08;authentication&#xff09;示例代码二、实现最简单的身份验证1、创建Spring Boot项目2、创建IndexController3、创建index.html4、启动项目测试Controller 三、{/logout}的作用四、页面样式无法加载的问题 一、找到官网的身份认证…

文本处理常见命令

目录 前言-了解Linux目录结构 一、cat-查看文件内容 1.表现形式 2.常用选项 3.示例 二、more-查看文件内容 1.表现形式 2.交互操作方法 3.示例 三、less-查看文件内容 1.表现形式 2.交互操作方法 四、head-从头查看文件内容 五、tail-从尾查看文件内容 六、wc-统…

设计模式学习笔记 - 设计模式与范式 -行为型:10.迭代器模式(中):遍历集合时,为什么不能增删集合?

概述 上篇文章&#xff0c;我们通过给 ArrayList 和 LinkedList 容器实现迭代器&#xff0c;学习了迭代器模式的原理、实现和设计意图。迭代器模式主要主要是解耦容器代码和遍历代码。 本章&#xff0c;我们来深挖一下&#xff0c;如果在使用迭代器遍历集合的同时增加、删除集…

1999-2022年各省研究与试验发展人员全时当量数据/省研发人员全时当量数据/(RD)人员全时当量(无缺失)

1999-2022年各省研究与试验发展人员全时当量数据/省研发人员全时当量数据/(R&D)人员全时当量&#xff08;无缺失&#xff09; 1、时间&#xff1a;1999-2022年 2、来源&#xff1a;科技年鉴 3、指标&#xff1a;研究与试验发展人员全时当量/研发人员全时当量 4、范围&a…

代码随想录算法训练营Day50|LC123 买卖股票的最佳时机IIILC188 买卖股票的最佳时机IV

一句话总结&#xff1a;虽然是困难题&#xff0c;其实都只需要对122 买卖股票的最佳时机II稍作变形即可。 原题链接&#xff1a;123 买卖股票的最佳时机III 相较于买卖股票的最佳时机和股票II来说&#xff0c;本题加了最多操作两次的限制。那么这里实际上就可以直接用滚动数组…

用C代码实现环形缓冲区(ring buf)

用C代码实现环形缓冲区&#xff08;ring buf&#xff09; 概述环境介绍launch.json(没改&#xff09;tasks.json注意 代码ringbuf.cringbuf.hmain.c 测试说明工程代码下载 概述 因嵌入式项目需要&#xff0c;串口接收的数据有很高的周期性发送频率&#xff0c;原方式通过查询接…

小程序项目思路分享爬虫

小程序项目思路分享爬虫 具体需求&#xff1a; 有这几个就行&#xff0c;门店名称门店地址门店类型&#xff0c;再加上省、市、县/区门店名称&#xff1a;storeName 门店地址&#xff1a;storeAddress 程序运行&#xff1a; honor_spider获取经纬度信息。 经纬度——>详…

Mybatis plus 使用通用枚举

说明&#xff1a;mybatis plus 使用枚举可实现数据库存入时指定值保存&#xff0c; 读取时指定值展示&#xff08;返给前端&#xff09; 可通过继承IEnum<T>、 EnumValue实现 1、引包 <dependency><groupId>mysql</groupId><artifactId>mysql-…

esxi上给centos7虚拟机扩容硬盘

原来centos7硬盘分配的空间只有40GB 需要直接扩容到200GB 扩容前 扩容后 扩容步骤&#xff1a; 1 .在esxi平台上关机虚拟机&#xff0c;将硬盘调整为200GB&#xff0c;然后开机 2.请出chatGPT 1. 创建新分区 使用剩余的磁盘空间创建一个新的分区。你可以使用fdisk&#xf…

归档数据shell脚本

系统中数据很重要&#xff0c;为确保数据不会丢失&#xff0c;定时备份数据是一个必要的习惯。制定一个存储重要文件的数据备份计划也绝非易事&#xff0c;而shell脚本可以祝我们一臂之力。 1.创建需要备份配置文件的路径文件。(BACKUP_FILE) 2.以日期为备份文件的后缀。 3.判断…

LeetCode 热题 100 | 多维动态规划(二)

目录 1 5. 最长回文子串 2 1143. 最长公共子序列 菜鸟做题&#xff0c;语言是 C 1 5. 最长回文子串 核心思想&#xff1a;把总问题拆解为若干子问题。 总问题&#xff1a;从第 i 个字母到第 j 个字母是回文串子问题&#xff1a;从第 i 1 个字母到第 j - 1 个字母是回文…

【就近接入,智能DNS-Geo DNS ,大揭秘!】

做过后端服务或者网络加速的小伙伴&#xff0c;可能或多或少都听说过&#xff0c;智能DNS或者Geo DNS&#xff0c;就是根据用户的位置&#xff0c;返回离用户最近的服务节点&#xff0c;就近接入&#xff0c;以达到服务提速的效果。 那么大家有没想过&#xff0c;这个背后的原理…

ETLCloud结合kafka的数据集成

一、ETLCloud中实时数据集成的使用 在ETLCloud中数据集成有两种方式&#xff0c;一种是离线数据集成&#xff0c;另一种便是我们今天所要介绍的实时数据集成了&#xff0c;两者的区别从名字便可以得知&#xff0c;前者处理的数据是离线的没有时效性的&#xff0c;后者的数据是…