1. sci666首页
  2. 实用技巧
  3. meta分析

利用R的gemtc包做贝叶斯网状Meta的回归分析教程

大家好,本教程将介绍如何使用R语言的gemtc包做贝叶斯网状Meta的回归分析。

设置我们的工作目录,后面可以把待分析的数据放入这个工作目录,敲入:
setwd("D:\R网状教程")  #你可以更改为自己的工作目录,在后面环境变量增多的时候,在这一步前可以加一个rm(list=ls())清除环境变量。
然后敲入:
library(gemtc)     #装载gemtc包

将我们的数据准备成如下格式(与stata做网状的格式相同):

利用R的gemtc包做贝叶斯网状Meta的回归分析教程

其中每一行代表研究的一个臂,study代表研究,treatment代表干预名称,mean代表连续变量的均值,std.dev代表连续变量的标准差,sampleSize代表每一个研究中每一个臂的样本量。注意,以上英文单词必须准确无误,大小写都要一致,不然等会分析无法进行。
大家可以在excel里准备要分析的数据,然后另存为csv文件(以逗号为分隔符的表格文件),在这里,我把数据文件存为data.csv(你可以更改为自己想要的名字)。然后把这个文件放到我们的工作目录之下。
把刚刚准备好的数据导入到R里,敲入:
data<- read.csv("data.csv", sep=",", header=T)   #sep代表逗号为分隔符,header=T代表把首行的数据作为标题,<-是R里的赋值符号,你可以把它理解为=号。<-前面的变量名是可以自己任意指定的,以下类似。
导入我们要进行回归分析的研究水平的协变量,在本例中为研究的发表年份。首先将数据在Excel里准备成如下格式(在工作目录中另存为reg2.csv):

利用R的gemtc包做贝叶斯网状Meta的回归分析教程

然后导入到R里:
studies<-read.csv("reg2.csv",sep=",", header=T)
把数据弄成gemtc的网络格式,敲入:
network <-mtc.network(data,studies=studies) #这里<-前面的network不一定非要叫network,改为其他的阿猫阿狗名称均可。以下类似,不再赘述。

然后开始建立模型:
model<-mtc.model(network, type="regression",regressor=list(coefficient='unrelated', variable='year', control='Placebo'))  #其他参数有必要的话一样可以补全,这里选择默认。

利用R的gemtc包做贝叶斯网状Meta的回归分析教程

其中,圆括号里的第一个参数为我们刚刚新建的gemtc网络类型的变量network,第二个参数type=”regression”,是指我们的模型为回归模型。这一步可能会跳出一些红色的warning,强迫症的同学看到可能会感到不安,但不用紧张,不影响后续的分析,不管它即可。这里选择regression的话,就必须有regressor这个参数,这个参数有三个子参数,第一个coefficient可以选择shared, unrelated或exchangeable。Shared表示所有的治疗共享一个回归系数(B),unrelated表示每一个治疗都有一个自己的回归系数,exchangeable表示在治疗间回归系数是可以互相替换的(最后一个参数笔者也没有很懂啦)。在本教程中,我们选择的是unrelated。Variable是指定我们要进行回归的协变量的名称,在这里我们是year这个变量。最后一个control是指我们的对照,在这里是Placebo这个东西。

现在就可以进行迭代了,敲入:
results<- mtc.run(model, n.adapt = 20000, n.iter = 50000, thin = 1)
其中,model是我们上一步建立的模型名称,n.adapt为退火次数,n.iter为迭代次数。这个时候我们耐心等待,RStudio界面如下所示:

利用R的gemtc包做贝叶斯网状Meta的回归分析教程

敲入:summary(results)可以看到如下结果:

利用R的gemtc包做贝叶斯网状Meta的回归分析教程

利用R的gemtc包做贝叶斯网状Meta的回归分析教程

B(beta)就是指的回归系数,我们可以看到它的估计均值和可信区间,如果包括0的话,就说明协变量无统计学意义。
从结果的最后一句可以看到,这里我们得到的都是协变量=年份的平均值(2007.2)时的结果,与之前用OpenBugs做回归分析时类似。

敲入以下代码,可以看到回归图形:
plotCovariateEffect(results,t1='Placebo', t2=c('Aripiprazole', 'Risperidone', 'Quetiapine', 'Olanzapine','Haloperidol', 'Paliperidone'))
其中,results是指刚刚我们得出的结果,t1指定参考对照,t2是用于跟对照相对比的治疗,结果如下:

利用R的gemtc包做贝叶斯网状Meta的回归分析教程

利用R的gemtc包做贝叶斯网状Meta的回归分析教程

利用R的gemtc包做贝叶斯网状Meta的回归分析教程

利用R的gemtc包做贝叶斯网状Meta的回归分析教程

利用R的gemtc包做贝叶斯网状Meta的回归分析教程

利用R的gemtc包做贝叶斯网状Meta的回归分析教程

到这里,用R的gemtc包实现网状Meta的回归就算完成啦。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

(857)626-2666

在线咨询:点击这里给我发消息

邮件:123456@whu.edu.cn

QR code