mada程序包是R軟件中專用于實現診斷準確性數據Meta分析的程序包。該程序包是基于經典統計學研發的,能夠完成所有診斷準確性試驗Meta分析效應指標的計算,但不提供總敏感度與特異度匯總值。本文以實例介紹了mada程序包實現診斷準確性試驗Meta分析的數據準備、執行運算、匯總結果及繪制圖形的全部功能。
引用本文: 李勝, 張超, 陶華, 鄢金柱, 翁鴻, 曾憲濤. 應用R軟件mada程序包實現診斷準確性試驗的Meta分析. 中國循證醫學雜志, 2014, 14(12): 1527-1532. doi: 10.7507/1672-2531.20140244 復制
循證醫學創始人之一、加拿大McMaster大學Gordon Guyatt教授指出循證診斷是未來循證醫學發展的重要方向之一[1]。診斷準確性試驗(diagnostic test accuracy,DTA)的Meta分析是循證診斷高質量證據的重要來源[2-4]。當前有諸多軟件能夠實現DTA的Meta分析[5],如RevMan 5軟件[6]和SAS軟件[7]。R軟件為功能強大的Meta分析軟件,mada程序包是R專用于實現DTA Meta分析的程序包。mada程序包由Philipp Doebler研發,最新版本為V-0.5.5,該程序包是基于經典統計方法來實現的[8]。本文以Walusimbi等發表的文章[9]中的GeneXpert組的數據(表 1)為例,演示該程序包的使用方法。

1 R軟件及mada程序包的安裝
R軟件的簡介及安裝詳見《R軟件Metafor程序包在Meta分析中的應用》一文[10],本文講解中使用的版本為R-3.0.2。在R軟件安裝完畢后,雙擊桌面的R軟件圖標,即可啟動R的交互式窗口(R-GUI)。于命令提示符“ > ”后輸入命令install.packages("mada"),在彈出的對話框中選擇某個鏡像安裝(CRAN),安裝完成后可由library("mada")命令完成加載。
至此,軟件及mada程序就已安裝完畢。
2 數據加載
在數據加載之前,需要對數據進行排列格式,排列后的形式見表 1。
上述數據排列完成后,儲存在桌面的Rwork文件中的data.txt文本中。隨后可以進行數據加載,具體命令如下:
data < -read.table("C:\\Users\\Administrator\\Desktop\\Rwork\\data.txt", header=TRUE, sep="", na.strings="NA", dec=".", strip.white=TRUE)
3 數據分析
在完成數據加載之后,即可開始實現數據的分析。該程序包執行數據分析時,通常使用傳統的mada()(或madauni())命令、運用回歸的reitsma()命令及計算曲線下面積AUC [11]的phm()命令。數據分析完成后,還需執行匯總的命令(表 2)得到最終的結果。

以下將展示具體命令及相關說明。
3.1 madad()命令
madad()命令如下:
data.d < -madad(data, digits=3, mothod=“wald”)
命令中:digits為計算全部結果的有效小數點數,該命令默認的計算方法為reml(限制性極大似然法);mothod為敏感度、特異度及假陽性率可信區間的計算方法,該程序包提供的計算方法有“wald”、“wilson”、“agresti-coull”、“jeffreys”、“modified-wilson”、“modified-effreys”、“clopper-pearson”、“arcsine”、“logit”和“witting”。
命令執行后計算的是全部結果指標[12],包括sens(sensitivities)、spec(specificities)、DOR(Diagnostic OR)、posLR(positive likelihood ratios)、negLR(negative likelihood ratios)、rho(the correlation of the sensitivities and false-positive rates)等,結果見表 3至6。




3.2 madauni()命令
madauni()命令如下:
data.uni < -madauni(data, type="DOR", method="DSL")
該命令執行的是計算單個結果值,使用type在DOR、posLR、negLR三個結果指標中進行限定,如本例僅選擇計算DOR值。mothod為選取的計算方法主要為DSL與MH法,其中DSL法運用隨機模型,MH法運用固定模型,本處選擇的是隨機效應模型。
3.3 reitsma()命令
reitsma()命令如下:
fit < -reitsma(data, formula=cbind(tsens, tfpr)~Mark, method="reml")
該程序包中最大的特點在于可以執行回歸模型。formula為回歸公式的設定,“~”左邊為固定因變量cbind(tsens, tfpr),“~”右邊為自變量,本例設為“Mark”(表 1);method為方法的設定,本處所提供方法有:“fixed”、“ml”、“vc”、“reml”,本例選擇reml法來進行擬合運算。需注意,該命令所產生的結果無法進行圖形繪制。
3.4 phm()命令
phm()命令如下:
fit1=phm(data)
該命令為運用調整極大似然法(The adjusted profile maximum likelihood estimator,APMLE)來實現診斷分析。
4 結果匯總
在完成上述運算命令后,即可對結果進行匯總和圖形的繪制。執行表 2的命令后,即可展示表 3至表 6的結果。
5 圖形繪制
在計算結果顯示完畢后,就可以進行相關的圖形繪制了。繪制的圖形主要包括森林圖、十字交叉圖及SROC曲線圖[11-13]等。
mada程序包可以同時繪制敏感度及特異度的森林圖(圖 1),具體命令如下:

old.par < -par()
data.d < -madad(data, digits=3)
plot.new()
par(fig=c(0, 0.5, 0, 1), new=TRUE)
forest(data.d, type="sens", xlab="Sensitivity", snames=data$Study)
par(fig=c(0.5, 1, 0, 1), new=TRUE)
forest(data.d, type="spec", xlab="Specificity", snames=data$Study)
十字交叉圖(圖 2)顯示的是每個納入研究的靈敏度、假陽性率值及可信區間。具體命令如下:

crosshair(data, level=0.95, method="wilson")
命令中,method為計算所用的方法。該程序包提供計算方法有如下幾種:“wald”、“wilson”、“agresti-coull”、“jeffreys”、“modified-wilson”、“modified-effreys”、“clopper-pearson”、“arcsine”、“logit”和“witting”,本例采用wilson法來進行運算。
mada程序包繪制SROC曲線圖有兩種不同的方法,分別基于Moses-Shapiro-Littenberg法和Ruecker-Schumacher法,因此,需要執行的兩項命令分別為“mslSROC()”和“rsSROC()”。
基于Moses-Shapiro-Littenberg法的圖形見圖 3,命令為:

ROCellipse(data)
mslSROC(data, add=TRUE, col="red", extrapolate=TRUE)
基于Ruecker-Schumacher法的圖形見圖 4,命令為:

ROCellipse(data)
rsSROC(data, add=TRUE, extrapolate=TRUE)
6 小結
當前國內已有介紹DTA Meta分析的文章,這些文章對STATA軟件[14]、SAS軟件[7, 15]、Meta-Disc軟件[16]、RevMan 5軟件[6]等進行了介紹。R作為當前最受歡迎的軟件之一,尚無介紹使用R實現DTA Meta分析的文章,本文以實例對R軟件mada程序包實現DTA Meta分析的過程及結果進行了全面展示。
mada程序包是專用于DTA資料Meta分析的程序包。整體而言,mada程序包的統計分析功能較為完善,亦具備常規的繪圖功能。然而,mada程序包不提供總敏感度與特異度匯總值,這與RevMan 5.2軟件是相同的[5, 6];未提供合并敏感度與特異度的原因很可能是考慮到了不同的診斷準確性試驗來源于不同的研究單位,受限于研究對象、研究者素質、儀器設備等不同,致使合并無意義,這也是DTA Meta分析面臨的挑戰與質疑之處[17-19]。第二,在執行回歸分析時,未提供有關圖形的繪制功能,繪制回歸分析的圖形需要使用其他程序包協助完成;第三,該程序包缺乏偏倚風險評估及繪制偏倚風險評估圖形[20, 21]的功能;第四,該程序包是基于SROC模型展開的,不能進行HSROC模型和雙變量模型下的Meta分析。
總之,mada程序包可以滿足常規的DTA Meta分析制作的需求,且R的開放特性也決定了該程序包會在后期不斷完善。
循證醫學創始人之一、加拿大McMaster大學Gordon Guyatt教授指出循證診斷是未來循證醫學發展的重要方向之一[1]。診斷準確性試驗(diagnostic test accuracy,DTA)的Meta分析是循證診斷高質量證據的重要來源[2-4]。當前有諸多軟件能夠實現DTA的Meta分析[5],如RevMan 5軟件[6]和SAS軟件[7]。R軟件為功能強大的Meta分析軟件,mada程序包是R專用于實現DTA Meta分析的程序包。mada程序包由Philipp Doebler研發,最新版本為V-0.5.5,該程序包是基于經典統計方法來實現的[8]。本文以Walusimbi等發表的文章[9]中的GeneXpert組的數據(表 1)為例,演示該程序包的使用方法。

1 R軟件及mada程序包的安裝
R軟件的簡介及安裝詳見《R軟件Metafor程序包在Meta分析中的應用》一文[10],本文講解中使用的版本為R-3.0.2。在R軟件安裝完畢后,雙擊桌面的R軟件圖標,即可啟動R的交互式窗口(R-GUI)。于命令提示符“ > ”后輸入命令install.packages("mada"),在彈出的對話框中選擇某個鏡像安裝(CRAN),安裝完成后可由library("mada")命令完成加載。
至此,軟件及mada程序就已安裝完畢。
2 數據加載
在數據加載之前,需要對數據進行排列格式,排列后的形式見表 1。
上述數據排列完成后,儲存在桌面的Rwork文件中的data.txt文本中。隨后可以進行數據加載,具體命令如下:
data < -read.table("C:\\Users\\Administrator\\Desktop\\Rwork\\data.txt", header=TRUE, sep="", na.strings="NA", dec=".", strip.white=TRUE)
3 數據分析
在完成數據加載之后,即可開始實現數據的分析。該程序包執行數據分析時,通常使用傳統的mada()(或madauni())命令、運用回歸的reitsma()命令及計算曲線下面積AUC [11]的phm()命令。數據分析完成后,還需執行匯總的命令(表 2)得到最終的結果。

以下將展示具體命令及相關說明。
3.1 madad()命令
madad()命令如下:
data.d < -madad(data, digits=3, mothod=“wald”)
命令中:digits為計算全部結果的有效小數點數,該命令默認的計算方法為reml(限制性極大似然法);mothod為敏感度、特異度及假陽性率可信區間的計算方法,該程序包提供的計算方法有“wald”、“wilson”、“agresti-coull”、“jeffreys”、“modified-wilson”、“modified-effreys”、“clopper-pearson”、“arcsine”、“logit”和“witting”。
命令執行后計算的是全部結果指標[12],包括sens(sensitivities)、spec(specificities)、DOR(Diagnostic OR)、posLR(positive likelihood ratios)、negLR(negative likelihood ratios)、rho(the correlation of the sensitivities and false-positive rates)等,結果見表 3至6。




3.2 madauni()命令
madauni()命令如下:
data.uni < -madauni(data, type="DOR", method="DSL")
該命令執行的是計算單個結果值,使用type在DOR、posLR、negLR三個結果指標中進行限定,如本例僅選擇計算DOR值。mothod為選取的計算方法主要為DSL與MH法,其中DSL法運用隨機模型,MH法運用固定模型,本處選擇的是隨機效應模型。
3.3 reitsma()命令
reitsma()命令如下:
fit < -reitsma(data, formula=cbind(tsens, tfpr)~Mark, method="reml")
該程序包中最大的特點在于可以執行回歸模型。formula為回歸公式的設定,“~”左邊為固定因變量cbind(tsens, tfpr),“~”右邊為自變量,本例設為“Mark”(表 1);method為方法的設定,本處所提供方法有:“fixed”、“ml”、“vc”、“reml”,本例選擇reml法來進行擬合運算。需注意,該命令所產生的結果無法進行圖形繪制。
3.4 phm()命令
phm()命令如下:
fit1=phm(data)
該命令為運用調整極大似然法(The adjusted profile maximum likelihood estimator,APMLE)來實現診斷分析。
4 結果匯總
在完成上述運算命令后,即可對結果進行匯總和圖形的繪制。執行表 2的命令后,即可展示表 3至表 6的結果。
5 圖形繪制
在計算結果顯示完畢后,就可以進行相關的圖形繪制了。繪制的圖形主要包括森林圖、十字交叉圖及SROC曲線圖[11-13]等。
mada程序包可以同時繪制敏感度及特異度的森林圖(圖 1),具體命令如下:

old.par < -par()
data.d < -madad(data, digits=3)
plot.new()
par(fig=c(0, 0.5, 0, 1), new=TRUE)
forest(data.d, type="sens", xlab="Sensitivity", snames=data$Study)
par(fig=c(0.5, 1, 0, 1), new=TRUE)
forest(data.d, type="spec", xlab="Specificity", snames=data$Study)
十字交叉圖(圖 2)顯示的是每個納入研究的靈敏度、假陽性率值及可信區間。具體命令如下:

crosshair(data, level=0.95, method="wilson")
命令中,method為計算所用的方法。該程序包提供計算方法有如下幾種:“wald”、“wilson”、“agresti-coull”、“jeffreys”、“modified-wilson”、“modified-effreys”、“clopper-pearson”、“arcsine”、“logit”和“witting”,本例采用wilson法來進行運算。
mada程序包繪制SROC曲線圖有兩種不同的方法,分別基于Moses-Shapiro-Littenberg法和Ruecker-Schumacher法,因此,需要執行的兩項命令分別為“mslSROC()”和“rsSROC()”。
基于Moses-Shapiro-Littenberg法的圖形見圖 3,命令為:

ROCellipse(data)
mslSROC(data, add=TRUE, col="red", extrapolate=TRUE)
基于Ruecker-Schumacher法的圖形見圖 4,命令為:

ROCellipse(data)
rsSROC(data, add=TRUE, extrapolate=TRUE)
6 小結
當前國內已有介紹DTA Meta分析的文章,這些文章對STATA軟件[14]、SAS軟件[7, 15]、Meta-Disc軟件[16]、RevMan 5軟件[6]等進行了介紹。R作為當前最受歡迎的軟件之一,尚無介紹使用R實現DTA Meta分析的文章,本文以實例對R軟件mada程序包實現DTA Meta分析的過程及結果進行了全面展示。
mada程序包是專用于DTA資料Meta分析的程序包。整體而言,mada程序包的統計分析功能較為完善,亦具備常規的繪圖功能。然而,mada程序包不提供總敏感度與特異度匯總值,這與RevMan 5.2軟件是相同的[5, 6];未提供合并敏感度與特異度的原因很可能是考慮到了不同的診斷準確性試驗來源于不同的研究單位,受限于研究對象、研究者素質、儀器設備等不同,致使合并無意義,這也是DTA Meta分析面臨的挑戰與質疑之處[17-19]。第二,在執行回歸分析時,未提供有關圖形的繪制功能,繪制回歸分析的圖形需要使用其他程序包協助完成;第三,該程序包缺乏偏倚風險評估及繪制偏倚風險評估圖形[20, 21]的功能;第四,該程序包是基于SROC模型展開的,不能進行HSROC模型和雙變量模型下的Meta分析。
總之,mada程序包可以滿足常規的DTA Meta分析制作的需求,且R的開放特性也決定了該程序包會在后期不斷完善。