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

各位读者朋友们大家好啊,最近有不少读者私信我说关于单臂实验的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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容