HR值及其可信区间的网络meta分析(R软件gemtc程序包)
没有什么能够阻挡,你对自由的向往。
——前记
各位园友大家好,上次跟大家一起挖掘了R软件gemtc程序包的代码。接下来我们换个角度,继续开挖。我们知道肿瘤学的研究,HR是非常重要的指标,它既包括事件,也涵盖了时间因素。因此,几乎每个关于肿瘤药物的生存率事件都报告了HR值及其上下可信区间。如果能利用这些现成的HR值及其可信上下区间的数据类型进行网络meta分析 ,无疑对研究意义重大。那么这类meta分析该如何实现呢?接下来让我们继续来挖掘gemtc程序包。
打开R 软件,安装 “gemtc”、”jags”程序包
#输入加载程序包的命令
library("gemtc")
library("rjags")
#建立数据
# Create a new network by specifying all information.
treatments <- read.table(textConnection('
id description
1 "Treatment A"
2 "Treatment B"
3 "Treatment C"
4 "Treatment D"'), header=TRUE)
data <- read.table(textConnection('
study treatment diff std.err
1 1 1.058 1.654
1 2 NA NA
2 1 0.005 0.635
2 2 NA NA
3 1 -0.409 1.640
3 2 NA NA
4 1 0.273 1.642
4 2 NA NA
5 3 -0.159 0.612
5 1 NA NA
6 3 0.027 0.713
6 1 NA NA
7 3 -1.138 1.158
7 1 NA NA
8 3 -0.029 1.417
8 1 NA NA
9 3 -0.154 0.070
9 2 -0.209 0.072
9 1 NA 0.066
9 4 0.055 0.064
'), header=TRUE)#构建网络
network <- mtc.network(data.re=data, description="Example", treatments=treatments)
#制作网络图
plot(network)
#建立模型
model <-mtc.model(network,type="consistency", factor = 2.5, n.chain=4,likelihood="binom",link="cloglog",linearModel="random")
#设置参数,进行运算
results <- mtc.run(model, n.adapt = 10000, n.iter = 100000, thin = 10,sampler ="JAGS")
#输出森林图
forest(relative.effect(results, "1"))
#输出排序结果
rank.probability(results,preferredDirection=-1)
OK,Gemtc程序包实现HR数据类型的网络meta分析运行结束。
接下来让我们倒过来,想一下这个数据集为何是这种结构。
我们之前讲到大部分研究会直接给出HR值及其可信上下区间。在做传统meta分析时,这类数据类型是可以进行合并的,只要将这类数据转换为效应值的对数值(InHR)以及标准误(SE)即可。同样的,网络meta分析亦是如此。所以这个数据集需要diff(InHR)和std.err(SE)两列数据。
如果是双臂的临床试验,根据HR及其上下区间即可计算出InHR和SE了(InHR大家都懂,SE=
1 1 1.058 1.654
1 2 NA NA
第一列的“1”表示第一个研究,第二列的数据表示治疗干预措施的代号(1表示Treatment A,2表示Treatment B)。将Treatment B作为基础臂,所以都标记为NA,然后1.058 和 1.654 分别为该研究的diff和std.err。
如果是两臂以上的多臂试验,情况就不一样了
以1作为基础臂,diff标注为NA。 问题在于,为什么std.err这一列不是NA,而是0.066呢?
答案还得从这篇逆天的文章说起
为什么说它逆天呢?因为它提出了将HR和OR数据合在一起进行网络meta分析的壮举!而活学活用的人,将它的方法继续发扬光大,从而改良出了实现了HR数据类型的网络meta分析。
文中列举了这么一串数据。表格中In(HR)就是指diff,se(In(HR))则是指两个干预措施之间的SE。(注意两个干预措施之间的SE不是std.err,后者是指每个干预措施的)
而每个干预措施的std.err则需要进一步转换
使用如下公式
seb指干预措施b对应的se。sek,b则是指干预措施k和b之间的se。
OK, 那么根据公式7 我们就可以计算出
这也就是为什么placebo作为基臂,对应的std.err是0.066的原因。
根据公式8可以计算出
同样的可以计算出Salmeterol的SE为0.070,Fluticasone的SE为0.063。
因此也就有了如下的数据了
9 3 -0.154 0.070
9 2 -0.209 0.072
9 1 NA 0.066
9 4 0.055 0.064
就这样,Gemtc程序包实现HR数据类型的网络meta分析就策到这里吧。