诊断试验的meta分析

在诊断试验中,通过金标准诊断为患者和非患者,采用某种试验方法诊断为阳性或阴性,列成四格表的形式,计算相关指标评价该试验方法的价值。单个诊断试验中,常用灵敏度、特异度、似然比、预测值等评价诊断试验的价值。除上述我们熟悉的指标外,我们需要了解下列指标:诊断优势比(DOR)=真阳性*真阴性/(假阳性*假阴性),主要用于诊断试验meta分析中,作为meta分析合并时每个诊断试验权重的依据。SROC曲线是根据单个诊断试验中的诊断优势比的权重,绘制的集成ROC曲线。从SROC曲线上可以得到每一个研究的灵敏度和特异度,在存在阈值效应时,该方法最适合。在绘制SROC曲线的基础上,可计算SROC曲线下面积以及Q指数。Q指数为在SROC曲线上,灵敏度=特异度,且最靠近左上角的坐标。

接下来,我们看看诊断试验meta分析的步骤。

诊断试验的meta分析-图片1

  与其他类型的meta分析不同的是,诊断试验meta分析中,阈值效应是异质性的重要来源。阈值效应是因为单个诊断试验中采用不同的诊断界值引起的。当存在阈值效应时,随着灵敏度的增加,特异度逐渐减小,反之亦然。

我们常通过计算灵敏度与特异度的Spearman相关系数探讨阈值效应,二者之间若存在强负相关则提示存在阈值效应。但需要注意的是,灵敏度与特异度的相关并不一定都是由阈值效应引起。

当不存在阈值效应时,可以直接合并灵敏度、特异度等单一评价指标;当存在阈值效应时,应采用SROC曲线法,计算SROC曲线下面积和Q指数。

目前,可用来进行诊断试验meta分析的软件有RevMan、meta-DiSc、Stata、R软件等。今天,我们以R软件的meta4diag程序包为例,演示下如何做诊断试验的meta分析。

meta4diag程序包的功能是基于INLA实现的, 因此在使用时还需同时安装相关程序包,即INLA 程序包和sp程序包,程序如下:

(1)下载程序包,若运行出错,可通过R/RStudio的工具栏,手动安装。

install.packages("meta4diag")

install.packages("INLA", repos="http://www.math.ntnu.no/inla/R/testing")

(2)加载程序包。library(meta4diag);library(INLA)。

(3)读取数据。mydata<-read.csv(file.choose())。数据至少应包括studynames,真阳性例数TP、假阴性例数FN、真阴性例数TN、假阳性例数FP。

诊断试验的meta分析-图片2

(4)整理数据。需要将录入的数据整理成函数要求的格式,这个不用担心,直接运行下列程序即可。将res<-meta4diag(mydata)中的mydata改成您自己的数据即可。

if(requireNamespace("INLA", quietly = TRUE)){

require("INLA", quietly = TRUE)

res <- meta4diag(mydata)

}

(5)探讨阈值效应。计算灵敏度(真阳性)与特异度(真阴性的)Spearman相关系数,若二者之间Spearman相关系数呈现强负相关,且p<0.05,提示存在阈值效应,则不适合合并灵敏度、特异度等,而应该拟合SROC曲线。cor.test(mydata$TP,mydata$TN,method = "spearman")。

(6)绘制森林图。可通过accuracy.type选择绘制哪个指标的森林图,如

"sens", "spec", 分别代表灵敏度、特异度。

forest(res, accuracy.type = "sens");forest(res, accuracy.type = "spec")。

(7)绘制SROC曲线,计算其曲线下面积。

SROC(res, est.type="mean");AUC(res,est.type="mean")。

诊断试验meta分析流程图

引自:刘鸿, 周洁, 冯巧灵, 顾海涛,基于检验效能的诊断性试验Meta分析及系统评价方法《转化医学杂志》2015年1期。

复制下列程序至R或RStudio软件,按要求整理数据,选择存储数据的路径即可。

  1. #下载程序包
  2.  
  3. install.packages("meta4diag")
  4.  
  5. install.packages("INLA", repos="http://www.math.ntnu.no/inla/R/testing")
  6.  
  7. #加载程序包
  8.  
  9. library(meta4diag)
  10.  
  11. library(INLA)
  12.  
  13. #读取数据
  14.  
  15. mydata<-read.csv(file.choose())
  16.  
  17. mydata
  18.  
  19. #数据整理
  20.  
  21. if(requireNamespace("INLA", quietly = TRUE)){
  22.  
  23. require("INLA", quietly = TRUE)
  24.  
  25. res <- meta4diag(mydata)
  26.  
  27. }
  28.  
  29. #探讨阈值效应
  30.  
  31. cor.test(mydata$TP,mydata$TN,method = "spearman")
  32.  
  33. #绘制森林图
  34.  
  35. forest(res, accuracy.type = "sens")
  36.  
  37. forest(res, accuracy.type = "spec")
  38.  
  39. #拟合SROC曲线,计算其曲线下面积
  40.  
  41. SROC(res, est.type="mean")
  42.  
  43. AUC(res,est.type="mean")

发表评论

匿名网友

拖动滑块以完成验证
加载失败