R使用gemtc程序包实现连续型变量的频率学网状meta分析

今天的教程主要是使用gemtc程序包实现连续型变量的贝叶斯网状meta分析,数据来源于《A systematic review and mixed treatment comparison of pharmacological interventions for the treatment of obesity》。

公众号后台回复nmacon获取训练数据。

1.程序包加载及数据导入

#install.packages("gemtc")
#install.packages("rjags")
#install.packages("coda")
library(gemtc)
data <- read.csv("diabetes.csv", sep=",", header=T)

2. 网络证据图绘制

network <-mtc.network(data)
summary(network)
plot(network,edge.color="black",vertex.color="steelblue",vertex.label.dist=2.5)

图片

3. 模型构建

model<-mtc.model(network, 
                 type="consistency",
                 n.chain=3,
                 likelihood="normal",
                 link="identity",
                 linearModel="random",
                 dic = TRUE)
results<- mtc.run(model,
                  n.adapt = 2000,
                  n.iter = 10000, 
                  thin = 3)

4. 模型收敛度诊断

 
gelman.diag(results)#诊断结果
Potential scale reduction factors:

                        Point est. Upper C.I.
d.Metformin.Orlistat          1.00       1.01
d.Metformin.Placebo           1.00       1.01
d.Metformin.Rimonbant         1.00       1.00
d.Metformin.Sibutramine       1.01       1.01
d.Orlistat.OrliSibut          1.00       1.00
sd.d                          1.00       1.00

Multivariate psrf

1

gelman.plot(results)## 诊断图
plot(results)

图片

图片

5. 森林图绘制

forest(relative.effect(results, "Placebo"))

图片

6 . 异质性检验

result.anohe<-mtc.anohe(network,n.adapt = 2000, n.iter = 10000)
summary.anohe=summary(result.anohe)
summary.anohe
Analysis of heterogeneity
=========================

Per-comparison I-squared:
-------------------------

          t1          t2  i2.pair  i2.cons   incons.p
1  Metformin    Orlistat       NA 75.95795 0.07919085
2  Metformin     Placebo       NA  0.00000 0.37703011
3  Metformin   Rimonbant       NA       NA         NA
4  Metformin Sibutramine       NA 34.94588 0.24997324
5  OrliSibut    Orlistat       NA 54.95407 0.18717601
6  OrliSibut     Placebo 81.94884 83.58646         NA
7  OrliSibut Sibutramine       NA  0.00000 0.62915475
8   Orlistat     Placebo 47.79664 44.49184 0.50275971
9   Orlistat Sibutramine  0.00000  0.00000 0.61098135
10   Placebo Sibutramine 41.77298 43.30047         NA

Global I-squared:
-------------------------

   i2.pair  i2.cons
1 43.66205 41.52727

7. 节点分割法

nodesplit <- mtc.nodesplit(network,
                           linearModel = "random",
                           n.adapt = 2000,
                           n.iter = 10000,
                           thin = 3)
summary(nodesplit)
plot(summary(nodesplit))
Node-splitting analysis of inconsistency
========================================

   comparison              p.value    CrI                 
1  d.Metformin.Orlistat    0.12091209                     
2  -> direct                          1.4 (0.29, 2.4)     
3  -> indirect                        -0.15 (-1.9, 1.6)   
4  -> network                         0.95 (-0.055, 1.8)  
5  d.Metformin.Placebo     0.15781578                     
6  -> direct                          1.1 (-0.58, 2.8)    
7  -> indirect                        2.6 (1.4, 3.7)      
8  -> network                         2.0 (1.0, 2.9)      
9  d.Metformin.Sibutramine 0.11956196                     
10 -> direct                          -0.67 (-2.3, 1.0)   
11 -> indirect                        0.93 (-0.26, 2.1)   
12 -> network                         0.40 (-0.62, 1.3)   
13 d.OrliSibut.Orlistat    0.02265227                     
14 -> direct                          1.5 (0.38, 2.6)     
15 -> indirect                        -1.3 (-3.3, 0.80)   
16 -> network                         0.95 (0.0028, 1.8)  
17 d.OrliSibut.Sibutramine 0.03930393                     
18 -> direct                          0.72 (-0.40, 1.8)   
19 -> indirect                        -1.8 (-3.7, 0.28)   
20 -> network                         0.40 (-0.54, 1.3)   
21 d.Orlistat.Placebo      0.87428743                     
22 -> direct                          1.2 (0.63, 1.7)     
23 -> indirect                        1.1 (-0.070, 2.2)   
24 -> network                         1.1 (0.67, 1.5)     
25 d.Orlistat.Sibutramine  0.55820582                     
26 -> direct                          -0.44 (-1.1, 0.25)  
27 -> indirect                        -0.73 (-1.5, 0.024) 
28 -> network                         -0.55 (-0.98, -0.12)
29 d.Placebo.Sibutramine   0.22832283                     
30 -> direct                          -1.7 (-2.0, -1.3)   
31 -> indirect                        -0.79 (-2.2, 0.67)  
32 -> network                         -1.6 (-1.9, -1.3)
 

8. 两两比较赛联表

league<-relative.effect.table(results)
league1<-round(exp(league),2)
league1

9. 排序图及累计排序图

rank <- rank.probability(results, preferredDirection = -1)
print(rank)
plot(rank, beside=TRUE, cex.names=0.5)

图片

print(sucra(rank))
plot(rank)

图片

- END -

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您说得对,`MatchIt`默认使用的是基于逻辑回归的倾向得分模型。对于连续型变量,通常需要使用基于梯度提升树(Gradient Boosting Tree,GBT)或随机森林(Random Forest,RF)的倾向得分模型。这些模型能够更好地处理连续型变量,并且具有更好的预测精度。 在R语言中,可以使用`twang`或`gbm`实现基于GBT或RF的倾向得分模型。以下是一个使用`twang`进行GBT倾向得分匹配的简单示例代码: ```R # 导入twang library(twang) # 导入数据 data <- read.csv("data.csv") # 创建GBT倾向得分模型 model <- gbtree(treatment ~ covariate1 + covariate2 + covariate3, data = data, interaction.depth = 3, n.trees = 100) # 计算倾向得分 prop_score <- predict(model, newdata = data, type = "response") # 进行匹配 match_data <- Match(target = treatment ~ covariate1 + covariate2 + covariate3, data = data, Weight = 1/prop_score, estimand = "ATE") # 查看匹配结果 summary(match_data) ``` 在这段代码中,我们首先导入`twang`和数据,然后使用`gbtree`函数创建一个GBT倾向得分模型,并使用`predict`函数计算出每个观测值的倾向得分。接着,我们使用`Match`函数进行匹配,其中`Weight = 1/prop_score`表示使用倾向得分的倒数作为权重,`estimand = "ATE"`表示估计平均处理效应。最后,我们可以使用`summary`函数查看匹配结果的摘要信息。 需要注意的是,对于连续型变量的广义倾向得分匹配,需要特别注意模型的选择和参数的调整,以保证匹配的准确性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮肤小白生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值