美文网首页R-meta
如何用R语言实现单个率/单臂实验的meta分析(包括二分类变量与

如何用R语言实现单个率/单臂实验的meta分析(包括二分类变量与

作者: 吃一口小肉丸 | 来源:发表于2021-02-18 07:28 被阅读0次

    各位读者朋友们大家好啊,最近有不少读者私信我说关于单臂实验的meta分析能不能出个教程,尤其是对于单臂连续型变量,找遍了全网都不知如何用R实现,不要着急,相信看完本期教程,你会获益匪浅的。(需要本教程的原始数据及完整程序命令的可在公,众号(全哥的学习生涯)内回,复“单个率meta”。)

    01 单个率meta分析的理论基础

    单个率的Meta分析是一种只提供了一组人群的总人数和事件发生人数,基于原始研究为横断面的研究,国内Meta 分析的软件主要是Review Manager,但该软件无法实现单个率的Meta 分析。Stata 软件可进行单个率的Meta 分析,但其计算繁琐,操作较复杂且是收费的统计软件。Meta-analysis 软件是一款免费的软件且可以进行单个率的Meta 分析,但是其为菜单操作,无法实现对原始率的转换。相比之下,R 软件是一种共享的免费统计软件,有专门的Meta 分析程序包,可以进行单个率的Meta 分析,而且提供了五种方法估算率, 研究者可以根据原始率的分布选择合适的方法。

    02 准备工作

    2.1

    本教程使用的R软件版本为3.6.2,RStudio版本为1.2.1335,需要软件的读者可在公,众号(全哥的学习生涯)内回,复“R”,”RS”。同时,我们需要安装“meta”包,及加载此包。代码如下:

    install.packages(“meta”)

    library(meta)

    2.2

    在本教程中,我们的目的是研究某病毒在某特定人群中的阳性检出率,输入以下命令将数据录入进R中:

    setwd(dir="C:/Users/Desktop") #可更改为自己的工作目录

    data <- read.csv("data.csv",header = T)

    原始数据如图1所示:

    图 1

    其中,Author为研究作者,Year为发表年份,Sample.size为样本量,Case为事件发生数,

    03  R语言中的Meta 分析函数

    3.1 R语言样本率的5种估计方法

    可使用metaprop 函数进行率的合并,R 语言中关于样本率的估计方法有五种,根据样本率的分布决定使用哪种合并方法,五种估计方法如下:

    sm ="PRAW",untransformed proportions(没有转换的原始率)。

    sm="PLN", Log transformation(对数转换)。

    sm="PLOGIT",Logit transformation(logit 转换)。

    sm="PAS",Arcsine transformation(反正弦转换)。

    sm=”PFT”,Freeman-Tukey Double arcsine transformation (Freeman-Tukey双重反正弦转换)

    3.2 单个率的合并

    在进行metaprop 分析之前,对原始率及按四种估计方法进行转换后的率进行正态性检验,根据检验结果选择接近正态分布的方法。transform 为对数据进行计算,p、log、logit、arcsin、dsrcsin 表示分

    别按上述五种方法估计率的函数,shapiro.test 为正态性检验。命令如下:

    rate <- transform(data,p=Case/Sample.size) #没有转换的原始率

    shapiro.test(rate$p)

    rate <- transform(data,log=log(Case/Sample.size)) #对数转换

    shapiro.test(rate$log)

    rate <- transform(data,logit=log((Case/Sample.size)/(1-Case/Sample.size)))  #logit转换

    shapiro.test(rate$logit)

    rate <- transform(data,arcsin.size=asin(sqrt(Case/(Sample.size+1))))

    shapiro.test(rate$arcsin)  #反正弦转换

    rate <- transform(data,darcsin=0.5*(asin(sqrt(Case/(Sample.size+1)))+asin((sqrt(Case+1)/(Sample.size+1)))))  # Freeman-Tukey双重反正弦转换

    shapiro.test(rate$darcsin)

    metaprop 函数用于计算各个独立研究的率及95%可信区间,并按照率的分布选择合适的估计方法,得到合并的率及95%可信区间。命令如下:

    meta1 <- metaprop(Case,Sample.size,data=data,studlab = paste(data$Author,data$Year,sep="-"),sm="PRAW",incr=0.5,allincr=TRUE,addincr=FALSE)

    meta1

    sm 表示估计样本率的方法,根据正态性检验结果选择合适的估计方法。本例原始率符合正态分布,因此直接选取是PRAW法估计原始率即可。

    incr=0.5 表示当事件发生数为0时用0.5 来替代。

    allincr=TRUE 表示至少有一个研究的事件发生数为0时,所有事件发生数都加上incr数值;为FALSE时,只对事件发生数为0 的研究加上incr 数值。

    addincr=TRUE 表示无论是否有事件发生数为0的研究,所有研究都加上incr数值。

    04 图形绘制与结果展示

    4.1 森林图绘制

    敲入命令:

    jpeg("Forest plot.jpeg",height = 1300,width = 800)

    forest(meta1,digits=3,family="sans",fontsize=9.5,lwd=2,col.diamond.fixed="lightslategray",col.diamond.lines.fixed="lightslategray",

          col.diamond.random="maroon",col.diamond.lines.random="maroon",col.square="skyblue",col.study="lightslategray",

          lty.fixed=4,plotwidth="8cm",colgap.forest.left="1cm",colgap.forest.right="1cm",just.forest="right",colgap.left="0.5cm",

          colgap.right="0.5cm")

    dev.off()

    以上代码看起来繁琐复杂,但其目的是为了绘制一张精美漂亮的森林图,且因为数据较多,需要将图片完整的显示出来,如图2所示。对于以上代码的解释,可参考之前公,众号:全哥的学习生涯,的文章:如何用R画出精美漂亮的meta分析森林图。

    需要注意的是,上述代码中,digits 表示保留的小数位数。合并的率及95%可信区间与原文一致,结果见图2。

    图 2

    4.2 漏斗图的绘制

    funnel 画漏斗图,是用于识别发表偏倚或其他偏倚的方法,根据图形的不对称程度判断Meta 分析中偏倚的有无。

    命令为:

    funnel(meta1)

    结果见图3。漏斗图是一种用主观定性的方法来判断有无偏倚,因此需要对漏斗图的不对称程度进行统计学检验。另外,本公众号还介绍了一种“超级漏斗图”,其能在统计学99%、95%和90%三个水平上对发表偏倚进行检测,详细教程可见公,众号:全哥的学习生涯。

    图 3

    4.3 漏斗图的不对称性检验

     metabias是对漏斗图的不对称性进行统计学检验。

    Egger 检验的命令为:

    metabias(meta1,method=”linreg”)

    根据结果输出窗口P 值大小,判断发表偏倚或其他偏倚是否具有统计学意义。

    输出Egger 漏斗图的命令为

    metabias (meta1,method ="linreg", plotit=TRUE,k.min=10)

    结果见图4。

    图 4

    Method 为Egger 检验的方法;plotit 为画图函数;k.min 为进行检验时所需最小的单个研究的数量,默认10,如果研究在3~10 个之间可通过此函数进行调整。

    4.4 敏感性分析

    metainf 可以进行敏感性分析,计算分别剔除每个入选研究后合并的OR 值及95%可信区间。命令为:

    jpeg("Sensitivity analysis results.jpeg",height = 1300,width = 800)

    forest(metainf(meta1,pooled ="random"),comb.random=TRUE,family="sans",fontsize=9.5,lwd=2,col.diamond.fixed="lightslategray",col.diamond.lines.fixed="lightslategray",    col.diamond.random="maroon",col.diamond.lines.random="maroon",col.square="skyblue",col.study="lightslategray",  lty.fixed=4,plotwidth="8cm",colgap.forest.left="1cm",colgap.forest.right="1cm",just.forest="right",colgap.left="0.5cm",colgap.right="0.5cm")

    dev.off()

    结果见图5.

    图 5

    4.5 剪补法评价

    命令如下:

    tf1 <- trimfill(meta1,comb.random = TRUE)

    summary(tf1)

    funnel(tf1)

    结果见图6。

    图 6

    05 单臂连续型变量的meta分析

    此种类型的分析用到的函数为metamean()函数,命令如下:

    meta2 <- metamean(n,mean,sd,data=data,studlab = paste(data$Author,data$Year,sep="-"))

    meta2

    forest(meta2,digits=2,family="sans",fontsize=9.5,lwd=2,col.diamond.fixed="lightslategray",col.diamond.lines.fixed="lightslategray",

          col.diamond.random="maroon",col.diamond.lines.random="maroon",col.square="skyblue",col.study="lightslategray",

          lty.fixed=4,plotwidth="8cm",colgap.forest.left="1cm",colgap.forest.right="1cm",just.forest="right",colgap.left="0.5cm",

          colgap.right="0.5cm")

    用到的数据如图7所示,其中,n为样本量,mean为均数,sd为标准差。

    图 7

    结果的森林图如图8所示,敏感性分析、发表偏倚分析、漏斗图、剪补法等命令同上,在此不作赘述。

    图 8

    相关文章

      网友评论

        本文标题:如何用R语言实现单个率/单臂实验的meta分析(包括二分类变量与

        本文链接:https://www.haomeiwen.com/subject/hckgxltx.html