基于R语言 meta/metafor 包进行荟萃分析(一)

目录

目录

1.引言

2.安装,数据的读取和保存

不讲。这个有别的大佬讲了,没有创新点。

3.标准方法

3.1 固定效应模型与随机效应模型

3.1.1 连续型结果的数据测量

3.1.2 固定效应模型

3.1.3 随机效应模型

3.1.4 异质性检验

3.1.5 亚组分析

3.1.6 其他结果的meta分析

3.1.7 总结

3.2 二元结果的meta分析

3.3 异质性与meta回归

4.进阶操作(将在后续部分讲,敬请期待)

4.1 小小的,也很可爱

4.2 我的数据少东西了

4.3 多元meta

4.4 网络meta分析

4.5 让我看看你的诊断准不准?

5.总结和尾声


 


恕小菜鸟直言,长文章不放目录,纯纯耍流氓。


1.引言

本文章仅供自己学习参考,如有不当之处,请各位大佬多多指正。你说这又要当医学生,又要写代码的,真的很不容易;而且还没有人带,那就更头大了,发出来主要也就是想和志同道合的小伙伴们一起讨论。

参考数据知识来自于:metafor包列出的参考文献《meta with R》以及《R语言实战 第二版》,后者在我看来是最好的R入门书。当然我知道大佬可能随便找点参考视频,meta分析就已经拿捏住了。那么请略过此贴吧。

本书在开头就已经介绍了连续型数据的参考绘图方法,我用自己的数据展示了一下函数的写法,因为原文中的一些参数已经不能直接那么写了。因为后面这个包将主要介绍metagen功能下的数据处理模式(原书中参考的是哮喘的一组数据,我则是使用了一组不同椎弓根螺钉置钉方法术中出血量的数据)。

本人R版本4.2.1,写下此贴的时候4.2.2的大部分更新包都已经上线。后面的更新可能会导致包内的功能差异,表达一下大意,还是得自己多多摸索。

m <- metacont(n.e=Total,      #此处是我自己修改的,因为版本更迭,各种参数的名称略有变化了
              mean.e = Mean,  #分别代表实验组:对照组的平均值,sd,总样本量
              sd.e  =SD, 
              n.c=Total.1, 
              mean.c =Mean.1, 
              sd.c=SD.1,
              studlab=paste(study, year), #这两列分别是作者名字和年份
              data=BLOOD) #数据是我自己随便从网上抄来的,换成大家自己的就行
settings.meta("Revman5")  # 设置meta格式为经典的revman小绿图,嘿嘿
forest(m,
       squaresize = 0.4,  #设置方块大小
       label.left = "Favours [Cortical screw]", 
       label.right = "Favours [Pedicle screw]",
       fixed = F) #数据i方很大,只看随机效应模型就加此命令;反之为random =F

 那么实际做出来的森林图如下:

 怎么样,加了设置格式的命令之后是不是非常的“revman”?尤其是异质性的计算部分,嘿嘿。

来个森林图开开胃,下面开始正文吧(正文中出示的数据来自:http://meta-analysis-with-r.org/ 网站上的dataset.csv数据集,比较奈多克罗米尔钠和安慰剂预防运动性支气管收缩的效果;doi号:10.1002/14651858.CD001183)。


2.安装,数据的读取和保存

不讲。这个有别的大佬讲了,没有创新点。


3.标准方法

3.1 固定效应模型与随机效应模型

在此处举例同引言部分的例子,做的是一个连续型变量。虽然觉得纯属多余,还是粘贴一下做meta前需要的数据表格。

 收集好这些数据,用R将数据读取,并且进行meta分析。

3.1.1 连续型结果的数据测量

①拳打SD

 公式如图中所示,α为检验水平,正常的双尾计算都取95%置信区间,那么这个Z算得的值就是Z0.975 = 1.96,直接带入计算。作为一个受过专业训练的研究生,我当然是直接使用meta包中的metacont()命令来计算。这个公式纯纯当一个验算步骤,谁爱算谁算去。注意一点:metacont下默认的一个参数叫“sm = " " ”,如不加以限定,则默认为SD,不是算SMD或者WMD的,这两个需要自己调参数。

在某些特殊情况下,你可能想要从数据中删掉那么一行,那么请参考subset这个参数。

subset = -2 #从所有study中删掉第二个

subset = !(study == "Sakaura et al"&year == "2018")#定向删除某作者某年份的study

②脚踹标准化均差-SMD

可能有小伙伴要问了,为什么要使用标准化均差?什么情况用?

其实很简单。量纲不一样,或者说评分之类的使用的量表不一样,必须用SMD了。

公式只展示在代码,你们不会真有人手撕吧?

# 此处为原文实例代码,别问我,都很简单
# 1. Read in the data:
 data2 <- read.csv("dataset02.csv")
# 2. As usual, to view an object, type its name:
 data2
author Ne Me Se Nc Mc Sc
1 Blashki(75%150) 13 6.40 5.40 18 11.40 9.60
2 Hormazabal(86) 17 11.00 8.20 16 19.00 8.20
3 Jacobson(75-100) 10 17.50 8.80 6 23.00 8.80
4 Jenkins(75) 7 12.30 9.90 7 20.00 10.50
5 Lecrubier(100) 73 15.70 10.60 73 18.70 10.60
6 Murphy(100) 26 8.50 11.00 28 14.50 11.00
7 Nandi(97) 17 25.50 24.00 10 53.20 11.20
8 Petracca(100) 11 6.20 7.60 10 10.00 7.60
9 Philipp(100) 105 -8.10 3.90 46 -8.50 5.20
10 Rampello(100) 22 13.40 2.30 19 19.70 1.30
11 Reifler(83) 13 12.50 7.60 15 12.50 7.60
12 Rickels(70) 29 1.99 0.77 39 2.54 0.77
13 Robertson(75) 13 11.00 8.20 13 15.00 8.20
14 Rouillon(98) 78 15.80 6.80 71 17.10 7.20
15 Tan(70) 23 -8.50 8.60 23 -8.30 6.00
16 Tetreault(50-100) 11 51.90 18.50 11 74.30 18.50
17 Thompson(75) 11 8.00 8.10 18 10.00 9.70
> # 3. Calculate total sample sizes 
summary(data2$Ne+data2$Nc)
#Min. 1st Qu. Median Mean 3rd Qu. Max.
#14.00 26.00 31.00 53.06 54.00 151.00

# 喜欢手撕?#####
# 1. Calculate standardised mean difference (SMD) and
# its standard error (seSMD) for study 1 (Blashki) of
# dataset data2:
 N <- with(data2[1,], Ne + Nc)
 SMD <- with(data2[1,],
 (1 - 3/(4 * N - 9)) * (Me - Mc) / sqrt(((Ne - 1) * Seˆ2 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值