R軟件實現(xiàn)Meta亞組分析以及森林圖調(diào)整

本文關(guān)注的是R用于Meta分析的亞組分析,以及亞組分析時如何更加美觀地調(diào)整森林圖。
以一個實例做演示,開始分析

基本代碼
讀入數(shù)據(jù),R讀數(shù)據(jù)的代碼有很多,此處用的代碼是直接讀取csv文件里的數(shù)據(jù),
mydata1 <- read.csv(file.choose())
加載包,meta包做meta分析非常強大,其他還有
metaforlibrary("meta")
直接進行療效評價,基本代碼之:二分類數(shù)據(jù)metabin函數(shù),RCT的評價指標(biāo)用RR;meta分析summary;以及繪制森林圖。圖形緊跟在代碼之后。
meta1 <- metabin(treat, n1,control, n2, data = mydata1, sm="RR")
summary(meta1)
forest(meta1)

以治療方法作為分組依據(jù)進行亞組分析,添加亞組分析代碼byvar = subRCT,代碼及圖形如下:
meta2 <- metabin(treat, n1, control, n2, data = mydata1, sm="RR",?byvar = subtreat)
forest(meta2)

亞組分析的關(guān)鍵代碼即:byvar=subgroup,其中subgroup為各種亞組分組。
接下來對圖形進行進階美觀調(diào)整。首先,上圖中同時顯示了固定和隨機效應(yīng)模型結(jié)果,但根據(jù)之前summary中I2 = 0我們選擇用固定效應(yīng)模型,添加代碼comb.random = FALSE。
然后要在圖形左側(cè)顯示作者和發(fā)表年份信息,添加代碼 studlab = paste(author," " ,year),括號中雙引號中間為空格,表示在作者和年份之間留一個空格。
同時,改變實驗組和對照組標(biāo)題,添加代碼label.e="Treatment", label.c="Control"。
亞組分析中,我們可以不用顯示subgroup的標(biāo)簽,添加代碼print.byvar = FALSE即可,最終代碼及圖形如下:
meta3<-metabin(treat, n1, control, n2, data = mydata1, sm="RR",?studlab=paste(author," " ,year), comb.random=FALSE,?byvar = subtreat,print.byvar = FALSE,?label.e="Treatment", label.c="Control")
forest(meta3)

此時我們發(fā)現(xiàn)森林圖已經(jīng)變得美觀了許多,但老板發(fā)來郵件,說A和B藥不能單純合并總效應(yīng),應(yīng)該當(dāng)成不同的治療方法,但你可以放在一張圖里……
此刻立馬想到這個問題stata有個很簡單的命令可以做到,就是nooverall,然后R怎么做?!
想到代碼的相似性,迅速查找meta包里面所有關(guān)于overall的命令,在forest函數(shù)找到了相關(guān)代碼并開心的馬上實驗,結(jié)果如下,出乎意料。
meta4<-metabin(treat, n1, control, n2, data = mydata1, sm="RR",?studlab=paste(author," " ,year), comb.random=FALSE,?byvar = subtreat,print.byvar = FALSE,?label.e="Treatment", label.c="Control")
forest(meta4, overall = FALSE)

可是,這時weight不見了,難道這個overall不行?解決辦法也簡單,添加代碼rightcols = ?c("w.fixed")。
meta5<-metabin(treat,n1,control,n2,data = mydata1, sm="RR",?studlab=paste(author," " ,year),comb.random=FALSE,?byvar = subtreat,print.byvar = FALSE,?label.e="Treatment",label.c="Control")
forest(meta5,overall = FALSE, rightcols =? c("w.fixed"))

然而,因為rightcols默認(rèn)是吧effect和ci都顯示出來的,而我們這樣限定之后就相當(dāng)于只顯示W(wǎng)eight了,繼續(xù)改進rightcols = ?c("effect", "ci", "w.Fixed"), 迅速跑一遍發(fā)現(xiàn)終于顯示完整,得到了stata一個nooverall就可以解決的答案。
然后想著按發(fā)表年份拍一下順序(sortvar = year)吧,然后森林圖左側(cè)好空,調(diào)整一下x軸吧(xlim = c(0.5,5)),代碼及圖形如下:
meta6 <- metabin(treat, n1, control, n2, data = mydata1, sm = "RR",?studlab = paste(author, " " , year), comb.random = FALSE,?byvar = subtreat, print.byvar = FALSE,?label.e = "Treatment",label.c = "Control")
forest(meta6,overall = FALSE, rightcols =? c("effect", "ci", "w.fixed"), sortvar = year, xlim = c(0.5,5))

好吧,到此完美達到我們想要的效果。還有一點要切記,R里面是不識別中文逗號的,一定要要用英文標(biāo)點!一定要要用英文標(biāo)點!一定要要用英文標(biāo)點!(重要事情說三遍)
今天的分享就到這了,你學(xué)會用R做出想要的亞組分析森林圖了嗎?

