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

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

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

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

library(netmeta)
data<-read.csv("data.csv",header = T,sep = ",")
head(data)
         study treatment mean std.dev sampleSize
1     Kuo 2006   Placebo -0.2    1.10         30
2     Kuo 2006  Orlistat -1.6    1.64         30
3 Ozcelik 2004   Placebo -3.9    1.49         10
4 Ozcelik 2004  Orlistat -3.4    1.42         14
5  Turker 2006   Placebo -0.6    0.90          9
6  Turker 2006  Orlistat -2.4    0.42         18

2. 效应转换及模型构建

net <- pairwise(treat = treatment,
                 n= sampleSize, 
                 mean = mean,
                 sd = std.dev, 
                 data = data, 
                 studlab = study,
                 sm = "MD")
m.netmeta <- netmeta(net ,
                     fixed = TRUE,
                     random = FALSE)
summary(m.netmeta)
## Original data (with adjusted standard errors for multi-arm studies):
## 
##                       treat1      treat2      TE   seTE seTE.adj narms multiarm
## Kuo 2006            Orlistat     Placebo -1.4000 0.3605   0.3605     2         
## Ozcelik 2004        Orlistat     Placebo  0.5000 0.6050   0.6050     2         
## Turker 2006         Orlistat     Placebo -1.8000 0.3159   0.3159     2         
## Wang 2005            Placebo Sibutramine  1.4000 0.3605   0.3605     2         
## Schechter 2006       Placebo Sibutramine  2.6000 0.2258   0.2258     2         
## Aydin 2004          Orlistat     Placebo -1.1000 0.3610   0.4203     3        *
## Aydin 2004           Placebo Sibutramine  1.9000 0.4103   0.5869     3        *
## Aydin 2004          Orlistat Sibutramine  0.8000 0.3435   0.3906     3        *
## Beck-Da-Silva 2005  Orlistat     Placebo -0.2100 1.2154   1.2154     2         
## Borges 2007        OrliSibut     Placebo  0.1000 0.9225   0.9225     2         
## Cuellar 2000         Placebo Sibutramine  1.7700 0.5720   0.5720     2         
## Desimone 2005        Placebo Sibutramine  1.6000 0.5696   0.5696     2         
## Derosa 2004         Orlistat Sibutramine -0.1000 0.9221   0.9221     2         
## Derosa 2005         Orlistat Sibutramine -0.1000 0.6324   0.6324     2         
## Florakis 2008        Placebo Sibutramine  0.9000 0.4603   0.4603     2         
## Grudell 2008         Placebo Sibutramine  1.2500 0.4887   0.4887     2         
## Guimaraes 2006     Metformin     Placebo -1.1000 0.7485   1.0567     3        *
## Guimaraes 2006       Placebo Sibutramine  1.8000 0.4691   0.4973     3        *
## Guimaraes 2006     Metformin Sibutramine  0.7000 0.7307   0.9367     3        *
## Kaya 2004          OrliSibut     Placebo -2.6000 0.4044   0.6894     4        *
## Kaya 2004           Orlistat     Placebo -1.1200 0.3161   0.4007     4        *
## Kaya 2004            Placebo Sibutramine  1.8900 0.3541   0.5352     4        *
## Kaya 2004          OrliSibut    Orlistat -1.4800 0.3584   0.4780     4        *
## Kaya 2004           Orlistat Sibutramine  0.7700 0.3005   0.3711     4        *
## Kaya 2004          OrliSibut Sibutramine -0.7100 0.3923   0.6383     4        *
## Kiortsis 2008       Orlistat     Placebo -1.7000 0.5681   0.7048     3        *
## Kiortsis 2008        Placebo Sibutramine  1.8000 0.5917   0.7935     3        *
## Kiortsis 2008       Orlistat Sibutramine  0.1000 0.4815   0.5403     3        *
## Ozcelik 2005        Orlistat     Placebo -1.1000 0.9751   0.9751     2         
## Scholze 2007         Placebo Sibutramine  1.5000 0.2830   0.2830     2         
## Sarac 2006           Placebo Sibutramine  1.5000 0.4437   0.4437     2         
## Sari 2004          Metformin    Orlistat -1.4000 0.3399   0.3399     2         
## Sathuapalan 2008   Metformin   Rimonbant  1.7300 0.6527   0.6527     2         
## Vazquez Roque 2007   Placebo Sibutramine  1.5000 0.2830   0.2830     2         
## Wirth 2006           Placebo Sibutramine  1.7000 0.2236   0.2236     2         
## 
## Number of treatment arms (by study):
##                    narms
## Kuo 2006               2
## Ozcelik 2004           2
## Turker 2006            2
## Wang 2005              2
## Schechter 2006         2
## Aydin 2004             3
## Beck-Da-Silva 2005     2
## Borges 2007            2
## Cuellar 2000           2
## Desimone 2005          2
## Derosa 2004            2
## Derosa 2005            2
## Florakis 2008          2
## Grudell 2008           2
## Guimaraes 2006         3
## Kaya 2004              4
## Kiortsis 2008          3
## Ozcelik 2005           2
## Scholze 2007           2
## Sarac 2006             2
## Sari 2004              2
## Sathuapalan 2008       2
## Vazquez Roque 2007     2
## Wirth 2006             2
## 
## Results (common effects model):
## 
##                       treat1      treat2      MD             95%-CI     Q
## Kuo 2006            Orlistat     Placebo -1.1757 [-1.4352; -0.9162]  0.39
## Ozcelik 2004        Orlistat     Placebo -1.1757 [-1.4352; -0.9162]  7.67
## Turker 2006         Orlistat     Placebo -1.1757 [-1.4352; -0.9162]  3.91
## Wang 2005            Placebo Sibutramine  1.7493 [ 1.5702;  1.9285]  0.94
## Schechter 2006       Placebo Sibutramine  1.7493 [ 1.5702;  1.9285] 14.19
## Aydin 2004          Orlistat     Placebo -1.1757 [-1.4352; -0.9162]  0.03
## Aydin 2004           Placebo Sibutramine  1.7493 [ 1.5702;  1.9285]  0.07
## Aydin 2004          Orlistat Sibutramine  0.5736 [ 0.2991;  0.8482]  0.34
## Beck-Da-Silva 2005  Orlistat     Placebo -1.1757 [-1.4352; -0.9162]  0.63
## Borges 2007        OrliSibut     Placebo -2.2762 [-2.9063; -1.6461]  6.63
## Cuellar 2000         Placebo Sibutramine  1.7493 [ 1.5702;  1.9285]  0.00
## Desimone 2005        Placebo Sibutramine  1.7493 [ 1.5702;  1.9285]  0.07
## Derosa 2004         Orlistat Sibutramine  0.5736 [ 0.2991;  0.8482]  0.53
## Derosa 2005         Orlistat Sibutramine  0.5736 [ 0.2991;  0.8482]  1.13
## Florakis 2008        Placebo Sibutramine  1.7493 [ 1.5702;  1.9285]  3.41
## Grudell 2008         Placebo Sibutramine  1.7493 [ 1.5702;  1.9285]  1.04
## Guimaraes 2006     Metformin     Placebo -2.2894 [-2.9265; -1.6523]  1.27
## Guimaraes 2006       Placebo Sibutramine  1.7493 [ 1.5702;  1.9285]  0.01
## Guimaraes 2006     Metformin Sibutramine -0.5400 [-1.1816;  0.1015]  1.75
## Kaya 2004          OrliSibut     Placebo -2.2762 [-2.9063; -1.6461]  0.22
## Kaya 2004           Orlistat     Placebo -1.1757 [-1.4352; -0.9162]  0.02
## Kaya 2004            Placebo Sibutramine  1.7493 [ 1.5702;  1.9285]  0.07
## Kaya 2004          OrliSibut    Orlistat -1.1005 [-1.7331; -0.4679]  0.63
## Kaya 2004           Orlistat Sibutramine  0.5736 [ 0.2991;  0.8482]  0.28
## Kaya 2004          OrliSibut Sibutramine -0.5268 [-1.1617;  0.1081]  0.08
## Kiortsis 2008       Orlistat     Placebo -1.1757 [-1.4352; -0.9162]  0.55
## Kiortsis 2008        Placebo Sibutramine  1.7493 [ 1.5702;  1.9285]  0.00
## Kiortsis 2008       Orlistat Sibutramine  0.5736 [ 0.2991;  0.8482]  0.77
## Ozcelik 2005        Orlistat     Placebo -1.1757 [-1.4352; -0.9162]  0.01
## Scholze 2007         Placebo Sibutramine  1.7493 [ 1.5702;  1.9285]  0.78
## Sarac 2006           Placebo Sibutramine  1.7493 [ 1.5702;  1.9285]  0.32
## Sari 2004          Metformin    Orlistat -1.1137 [-1.7150; -0.5124]  0.71
## Sathuapalan 2008   Metformin   Rimonbant  1.7300 [ 0.4508;  3.0092]  0.00
## Vazquez Roque 2007   Placebo Sibutramine  1.7493 [ 1.5702;  1.9285]  0.78
## Wirth 2006           Placebo Sibutramine  1.7493 [ 1.5702;  1.9285]  0.05
##                    leverage
## Kuo 2006               0.13
## Ozcelik 2004           0.05
## Turker 2006            0.18
## Wang 2005              0.06
## Schechter 2006         0.16
## Aydin 2004                .
## Aydin 2004                .
## Aydin 2004                .
## Beck-Da-Silva 2005     0.01
## Borges 2007            0.12
## Cuellar 2000           0.03
## Desimone 2005          0.03
## Derosa 2004            0.02
## Derosa 2005            0.05
## Florakis 2008          0.04
## Grudell 2008           0.03
## Guimaraes 2006            .
## Guimaraes 2006            .
## Guimaraes 2006            .
## Kaya 2004                 .
## Kaya 2004                 .
## Kaya 2004                 .
## Kaya 2004                 .
## Kaya 2004                 .
## Kaya 2004                 .
## Kiortsis 2008             .
## Kiortsis 2008             .
## Kiortsis 2008             .
## Ozcelik 2005           0.02
## Scholze 2007           0.10
## Sarac 2006             0.04
## Sari 2004              0.81
## Sathuapalan 2008       1.00
## Vazquez Roque 2007     0.10
## Wirth 2006             0.17
## 
## Number of studies: k = 24
## Number of pairwise comparisons: m = 35
## Number of observations: o = 1714
## Number of treatments: n = 6
## Number of designs: d = 9
## 
## Common effects model
## 
## Treatment estimate (sm = 'MD', comparison: other treatments vs 'Metformin'):
##                  MD             95%-CI     z  p-value
## Metformin         .                  .     .        .
## OrliSibut    0.0132 [-0.8517;  0.8782]  0.03   0.9761
## Orlistat     1.1137 [ 0.5124;  1.7150]  3.63   0.0003
## Placebo      2.2894 [ 1.6523;  2.9265]  7.04 < 0.0001
## Rimonbant   -1.7300 [-3.0092; -0.4508] -2.65   0.0080
## Sibutramine  0.5400 [-0.1015;  1.1816]  1.65   0.0990
## 
## Quantifying heterogeneity / inconsistency:
## tau^2 = 0.1692; tau = 0.4113; I^2 = 51.3% [22.9%; 69.2%]
## 
## Tests of heterogeneity (within designs) and inconsistency (between designs):
##                     Q d.f. p-value
## Total           49.27   24  0.0018
## Within designs  35.48   16  0.0034
## Between designs 13.78    8  0.0876

3. 网络证据绘制

netgraph(m.netmeta, 
         start ="circle", 
         cex = 0.7, 
         col = "black", 
         plastic = F, 
         points = TRUE, 
         col.points = "darkred",
         cex.points =5*sqrt(n.trts/max(n.trts)), 
         thickness = "number.of.studies",
         lwd.max = 12, 
         lwd.min = 1, 
         multiarm = FALSE)

图片

4. 森林图绘制

forest(m.netmeta, 
       ref = "placebo", 
       pooled = "random", 
       digits = 2, 
       col.square = "steelblue",
       smlab = "Random effects model", 
       label.left = "Favors the other ",
       label.right = "Favors the Placebo", 
       drop = TRUE,
       sortvar = T)

图片

5. 排序图(SURCA )

netrank(m.netmeta, small.values = "good")

##             P-score
## Rimonbant    0.9963
## Metformin    0.6933
## OrliSibut    0.6899
## Sibutramine  0.4205
## Orlistat     0.2001
## Placebo      0.0000

6. 两两比较赛联表制作

netleague <- netleague(m.netmeta, 
                       bracket = "(", 
                       digits=2)  
netleague
write.csv(netleague$random, "netleague.csv")
MetforminOrliSibutOrlistatPlaceboRimonbantSibutramine
Metformin.-1.40 (-2.07; -0.73)-1.10 (-2.57;  0.37)1.73 ( 0.45;  3.01)0.70 (-0.73;  2.13)
-0.01 (-0.88;  0.85)OrliSibut-1.48 (-2.18; -0.78)-2.16 (-2.89; -1.44).-0.71 (-1.48;  0.06)
-1.11 (-1.72; -0.51)-1.10 (-1.73; -0.47)Orlistat-1.25 (-1.55; -0.95).0.56 ( 0.18;  0.93)
-2.29 (-2.93; -1.65)-2.28 (-2.91; -1.65)-1.18 (-1.44; -0.92)Placebo.1.76 ( 1.58;  1.95)
1.73 ( 0.45;  3.01)1.74 ( 0.20;  3.29)2.84 ( 1.43;  4.26)4.02 ( 2.59;  5.45)Rimonbant.
-0.54 (-1.18;  0.10)-0.53 (-1.16;  0.11)0.57 ( 0.30;  0.85)1.75 ( 1.57;  1.93)-2.27 (-3.70; -0.84)Sibutramine

7. 节点分割法

netsplit(m.netmeta)

forest(netsplit(m.netmeta))
## Separate indirect from direct evidence (SIDE) using back-calculation method
## 
## Common effects model: 
## 
##             comparison  k prop     nma  direct  indir.    Diff     z p-value
##    OrliSibut:Metformin  0    0  0.0132       .  0.0132       .     .       .
##     Orlistat:Metformin  1 0.81  1.1137  1.4000 -0.1465  1.5465  1.96  0.0503
##      Placebo:Metformin  1 0.19  2.2894  1.1000  2.5658 -1.4658 -1.76  0.0777
##    Rimonbant:Metformin  1 1.00 -1.7300 -1.7300       .       .     .       .
##  Sibutramine:Metformin  1 0.20  0.5400 -0.7000  0.8514 -1.5514 -1.90  0.0577
##     OrliSibut:Orlistat  1 0.81 -1.1005 -1.4800  0.5272 -2.0072 -2.44  0.0149
##      OrliSibut:Placebo  2 0.75 -2.2762 -2.1648 -2.6164  0.4516  0.61  0.5449
##    OrliSibut:Rimonbant  0    0  1.7432       .  1.7432       .     .       .
##  OrliSibut:Sibutramine  1 0.68 -0.5268 -0.7100 -0.1343 -0.5757 -0.83  0.4078
##       Orlistat:Placebo  8 0.75 -1.1757 -1.2492 -0.9515 -0.2976 -0.97  0.3324
##     Orlistat:Rimonbant  0    0  2.8437       .  2.8437       .     .       .
##   Orlistat:Sibutramine  5 0.54  0.5736  0.5581  0.5919 -0.0338 -0.12  0.9043
##      Placebo:Rimonbant  0    0  4.0194       .  4.0194       .     .       .
##    Placebo:Sibutramine 14 0.95  1.7493  1.7617  1.5123  0.2494  0.59  0.5541
##  Rimonbant:Sibutramine  0    0 -2.2700       . -2.2700       .     .       .
## 
## Legend:
##  comparison - Treatment comparison
##  k          - Number of studies providing direct evidence
##  prop       - Direct evidence proportion
##  nma        - Estimated treatment effect (MD) in network meta-analysis
##  direct     - Estimated treatment effect (MD) derived from direct evidence
##  indir.     - Estimated treatment effect (MD) derived from indirect evidence
##  Diff       - Difference between direct and indirect treatment estimates
##  z          - z-value of test for disagreement (direct versus indirect)
##  p-value    - p-value of test for disagreement (direct versus indirect)
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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、付费专栏及课程。

余额充值