如何利用R语言进行meta分析—详细教程(以OR值和 95%CI作为效应尺度进行合并)

      正在阅读本文的小伙伴你好,利用R语言进行meta分析是我比较重要的一次将R语言基础理论应用于实践的过程,并收获了很好的效果。这个应用也是我的毕业论文中研究方法的核心思路,由于我的毕业论文成绩也是专业第一,其中有比较有价值的研究方法特此展示出来与伙伴们共享。详细教程以及R语言如何使用可以见我的公众号:全哥的学习生涯

      R语言拥有完整有效的数据处理、统计分析与保存机制,可以对数据直接进行分析和显示,命令格式简单、结果可读性强。大多数的meta分析通过Excel等常规工具或Cochrane协作网的RevMan等专业软件,其计算繁琐,操作复杂且需收取昂贵的软件使用费用,因此包含众多针对meta分析软件包的R语言成为作系统评价的绝佳平台。本文使用R 3.6.3与RStudio 1.2.1335版本进行讲解说明,需要软件的伙伴可以在公众号内回复“R”、“RS”自取,而R语言的学习笔记我每期都会进行更新,同时主要选择OR和 95%CI 两项指标作为效应尺度进行合并。

本文对Meta分析的理论步骤:

       除去首先检索文献、制订文献纳入排除标准、质量评价等步骤外,重点谈一谈meta分析的研究方法步骤。在正式进行meta分析前,第一步需要异质性检验,采用 Homogeneity test(Q 检验) (检验水准为α=0.1) 。当P<0.1时,表明研究间存在异质性; 否则研究具有同质性。再结合I^2(0~100%)定量分析异质性的大小,此值越大,则表明研究间同质性愈大。根据推荐的标准,当I2的值小于或等于40%时,表明研究异质性的合格,此时应用固定效应模型(Fixed Effects Model);而当异质性的标准大于推荐标准值时,应选采用随机效应模型(Randomized Effects Model)进行 meta 分析。对于异质性的处理方法用亚组分析、敏感性分析,最后则检验发表偏倚。

Meta分析结果说明:

      在正式选择模型进行效应量合并之前,需首先对纳入的各研究进行异质性检验,采用Q检验与 I^2值相结合的判定方法进行异质性检验在执行pfs命令后,其结果中tau^2指的是研究间方差,观察”Test of heterogeneity”后的P.value,若 P>0.10,说明研究间不存在异质性,无统计学意义,此时可选用固定效应模型进行效应量的合并。由于纳入分析的研究文献都属于横截面调查类文献,因此选择在结果中观察其OR值与 95%CI,当OR值的置信区间不包含1时等价于P<0.05,结果有统计学意义,其可以反映出选择的结局指标与研究变量之间的关系。当OR=1或95%CI包含1时,表示该结局指标与研究变量之间无相关关系; 当OR>1 且 95%CI LCI(置信上限)均大于1时,表示该结局指标是研究变量的风险因素; 当合并效应量 OR<1 且 95%CI UCI(置信下限)均小于1时,即该区间在森林图中落在无效线的左侧,表示该结局指标是研究变量的保护因素。

注:以下图片均来自于我的毕业论文,由于其基于指导教师的科研课题,故一些关键信息我进行了打码处理,请谅解。若有读者想与我取得联系,可以在公众号内找到我的联系方式,或者直接搜索我的的公众号:全哥的学习生涯

程序处理步骤:

①首先要安装meta包,其具体命令为:

install.packages("meta")

②随后可连接China内地中的某个镜像网站,下载安装此程序包。

③接着,将研究第一作者及发表年限、OR值及95%置信区间(UCI、LCI)的上下限分别录入Excel文件中,并将数据保存为.csv格式。

④随后,通过 read.csv()命令在RStudio中读取数据,并将数据集命名为data1,并执行以下命令加载meta程序包。

library("meta")

⑤由于OR值并不服从正态分布,为了使数据更加平稳,削弱模型异方差性、共线性等问题,需首先将OR值及95%置信区间取自然对数,其公式如下:

seln(OR)=(ln⁡(UCI)-ln⁡(LCI))/(2×1.96)

=(ln⁡(UCI)-ln⁡(OR))/1.96

=(ln⁡(OR)-ln⁡(LCI))/1.96

其具体命令为:

lnor<- log⁡(data1[,"OR"])

lnuci<- log⁡(data1[,"UCI"])

lnlci<- log⁡(data1[,"LCI"])

selnor<- (lnuci-lnlci)/(2*1.96)

⑥随后进行meta分析,其程序为:

pfs=metagen(lnor,selnor,sm="OR",data=data,studlab=paste(data1$Author,data1$Year,sep="-"))

pfs命令结果图1


pfs命令结果图2


⑦作出森林图:

forest(pfs)

森林图1


森林图2


⑧当存在异质性时,需要进行亚组分析探索异质性来源,直接加入命令:

data1.random = TRUE,data1.fixed= FALSE

⑨而对于发表偏倚的检验,根据cochrane手册中的要求,当纳入的研究个数大于等于10 个时,不建议使用Egger检验或Begg检验,而应使用Peters检验,且无需做反正弦变换。其代码为:

funnel(pfs)

metabias(pfs,method.bias=”peters”)

若存在发表偏倚,那么可用trim and filled或copas模型校正,代码为:

tf1 <-trimfill(pfs,comb.fixed=TRUE)

summary(tf1)

funnel(tf1)

剪补法程序评价结果


填补后漏斗图


填补前漏斗图


从第二张漏斗图可以看出,对此结局指标的meta分析存在发表偏倚的可能性,故采用剪补法评价其所带来的影响,将概括的结果赋予在tf1命令下,如剪补法程序评价结果图所示,并作出填补后的漏斗图,如第二张漏斗图所示。

由两张漏斗图比较可以看出,在漏斗图左侧填充了2项研究,异质性检验P=0.496>0.05,无统计学意义,因此,仍应使用Fixed Effects Model,其OR值为1.06,95%CI为1.02~1.11。因此,经过对发表偏倚的校正后,其效应值仍具有统计学意义,此更能说明结局指标会对研究变量产生影响。

⑩对于敏感性分析,则可以将各研究一次性排除掉再进行,代码为:

metainf(pfs,pooled=”fixed”) (注:随机效应模型改为pooled=”random”)

forest(metainf(pfs),comb.fixed=TRUE)

程序评价结果图与森林图如下,我们可以看出来,第四项,即森林图中方块突出的那项研究异质性较大,对此我们可以在研究讨论中进一步进行异质性来源的探索。

敏感性分析结果图


敏感性分析结果


      最后,如果屏幕前的你对R语言学习还有什么问题或者看法,欢迎关注我的公众号:全哥的学习生涯,可以在公众号内给我留言,我也希望可以结合更多志同道合的伙伴。

你可能感兴趣的:(如何利用R语言进行meta分析—详细教程(以OR值和 95%CI作为效应尺度进行合并))