R軟件當前可通過R2OpenBUGS程序包、BRugs程序包和rbugs程序包來調用OpenBUGS程序包實現網狀Meta分析。本文分別對這3種程序包實現網狀Meta分析的過程進行演示。從結果來看,3種程序包的計算結果相近,但rbugs程序包無繪圖功能,僅R2OpenBUGS程序包能繪制森林圖。
引用本文: 羅杰, 張超, 曾憲濤. R軟件調用OpenBUGS軟件實現網狀Meta分析. 中國循證醫學雜志, 2014, 14(4): 492-496. doi: 10.7507/1672-2531.20140084 復制
隨著循證醫學的發展,各種新型的Meta分析方法被研發,網狀Meta分析就是隨著實踐需求被研發的新方法[1]。當前,有較多能進行網狀Meta分析的軟件[1-6],其中基于Bayesian理論而制作的專業BUGS(Bayesian inference using gibbs sampling)軟件是當前制作網狀Meta分析的主流軟件,WinBUGS和OpenBUGS軟件為BUGS家族的代表。前文已經介紹了如何使用R2WinBUGS程序包實現網狀Meta分析[2],鑒于WinBUGS和OpenBUGS有所異同,本文將對基于OpenBUGS的R2OpenBUGS程序包[7]、BRugs程序包[8]和rbugs程序包[9]實現網狀Meta分析進行介紹。本文仍采用NICE DSU TSD中有效性的數據為例,詳見《R軟件R2WinBUGS程序包在網狀Meta分析中的應用》一文中的表 1 [2]。
1 軟件安裝及程序包加載
1.1 OpenBUGS和R軟件安裝
同為BUGS軟件家族成員,OpenBUGS所基于的理論和方法均與WinBUGS相同,是在WinBUGS軟件的基礎上研發的[
R軟件的下載及安裝同前述[2-4],本文使用的版本為R-3.0.1。
1.2 程序包的安裝及加載
軟件安裝完畢后,雙擊桌面的R軟件圖標,可啟動R的交互式窗口(R—GUI)。
R2OpenBUGS程序包的安裝命令為:install.packages(“R2OpenBUGS”),選擇鏡像安裝(CRAN);安裝完成后可由如下命令完成加載:library(“R2OpenBUGS”)。
BRugs程序包的安裝命令為:install.packages(“BRugs”),選擇鏡像安裝(CRAN);安裝完成后可由如下命令完成加載:library(“BRugs”)。
rbugs程序包的安裝命令為:install.packages(“rbugs”),選擇鏡像安裝(CRAN);安裝完成后可由如下命令完成加載:library(“rbugs”)。
此外,還需安裝及加載lattice及coda程序包,安裝命令分別為:install.packages(“lattice”)和install.packages(“coda”);加載命令分別為:library(“lattice”)和library(“coda”)。
至此,所需的軟件及程序包就已經安裝和加載完成,即可應用。
2 數據的加載
在使用R軟件之前,我們需要先在OpenBUGS軟件上運行,這對于保證OpenBUGS軟件的模塊(model)、數據及初始值的正確性十分重要。
數據的加載詳見《R軟件R2WinBUGS程序包在網狀Meta分析中的應用》一文中操作流程部分的步驟2.2至2.6 [2],但應注意的是,這里需要將“ bugs3ar.bug ”文件的后綴名改為“ bugs3arm.txt ”。
3 使用R2OpenBUGS程序包實現
3.1 完成數據計算
在完成上述操作以后,操作者方可以操作此步來調用OpenBUGS軟件,此步也為調用運行軟件的關鍵及最后一步。具體命令代碼為:
bugs.sim < -bugs(data, inits, parameters, model.file=bugsname, n.chains=1, n.iter=40000, n.burnin=10000, debug=FALSE, codaPkg=FALSE)
上述命令中:data、inits、parameters及bugsname四者依次為數據、初始值、輸出參數及OpenBUGS軟件model,上述過程可完成數據導入、賦值及model的建立。n.chains為鏈的數量。n.iter為迭代運算的次數。n.burnin為前多少次退火。debug可賦兩種值,設為TRUE時,為調用OpenBUGS時在計算機界面顯示,并且其運行完成后需手動關閉,建議在調試未成功時設置;設FALSE值時,為不在計算機界面顯示,并且其運行完成后自動關閉,建議在調試成功后,設置為該值(因為設置為TRUE時,OpenBUGS未關閉,R軟件易卡機)。bugs.sim為承載結果數據。對于上述的賦值過程,操作者可以結合OpenBUGS軟件操作過程來理解,會更加深刻。
執行上述代碼命令后,只需靜靜等待計算機自動運行。只有debug值設為TRUE時,才會出現“ log ”對話框,并且OpenBUGS軟件的最下方也將出現“ model is updating ”標志,此時操作者需要耐心等待2分鐘左右(視個人計算機而有所不同);待迭代運算完成之后,系統會自動返回到R控制臺的界面。此時,就已經完成了整個數據的運算,結果見圖 1。

3.2 數據輸出
數據輸出的結果是由OpenBUGS軟件model運行而產生的,需要print()命令,具體命令代碼為:print(bugs.sim, digits.summary=4)
其中bugs.sim為運算后數據輸出的結果;digits.summary為輸出結果精確的小數點位數,產生的結果數據(如圖 2)。

細心的讀者可能會發現,上述結果與使用R調用WinBUGS所產生的結果稍有差異,這是由于OpenBUGS與WinBUGS軟件之間的差別所致,但差異非常小。
3.3 繪制森林圖
繪制的命令及圖形均與R2WinBUGS相同,詳見《R軟件R2WinBUGS程序包在網狀Meta分析中的應用》一文[2]。
至此,就完成了使用R軟件R2OpenBUGS程序包實現網狀Meta分析的全部過程。接著,繼續對相關的圖形及數據進行保存即可。
4 使用rbugs程序包實現
rbugs程序包的數據加載與R2WinBUGS和R2OpenBUGS相同,此處不再展示。
4.1 完成計算
完成上述步驟后,使用rbugs程序包實現的迭代的命令為:rbugs.sim < -rbugs(data, inits, parameters, model=bugsname, n.chains=1, n.iter=40000, n.burnin=10000, bugs="D:/Program Files/OpenBUGS/OpenBUGS322/OpenBUGS.exe", bugsWorkingDir="D:/Users/Administrator/Desktop/Rwork/rbugs")
上述命令中:bugs為OpenBUGS軟件的安裝路徑;bugsWorkingDir表示該程序包運算時,需將上述中的模塊、數據及初始值全部存入固定的目錄中;此命令就是用于設定儲存路徑,此參數為必要參數。
4.2 匯總結果
迭代運算完成后,可對結果進行匯總。匯總結果命令如下:
library("coda")
rbugs.mcmc < -rbugs2coda(rbugs.sim)
summary(rbugs.mcmc)
命令之后,結果如圖 3所示。

4.3 圖形繪制
rbugs程序包當前缺乏繪制圖形功能。
5 使用BRugs程序包實現
BRugs程序包的數據加載與R2WinBUGS和R2OpenBUGS相同,此處不再贅述。
5.1 完成計算
完成上述步驟后,使用BRugs程序包實現的迭代的命令為:
BRugs=BRugsFit(data=data, inits=inits, para=parameters, modelFile=bugsname, numChains=1, nIter=40000, nBurnin=10000, nThin=1, working.directory="D:/Users/Administrator/Desktop/Rwork/", "bugs3arm.txt", coda=FALSE, DIC=TRUE, BRugsVerbose=FALSE)
上述命令中:coda取FALSE值,表示返回樣本及DIC值;DIC取TRUE值,表示返回DIC值。
命令執行后,結果如圖 4所示。

5.2 繪制圖形
如同rbugs程序包一樣,BRugs程序包亦缺乏繪制森林圖的功能;但BRugs程序包可繪制如下圖形:① “節點”密度圖:plotDensity("lor[1, 2]", main=NULL);② “節點”軌跡圖:plotHistory("lor[1, 2]", main=NULL);③ “節點”收斂圖:plotBgr("lor[1, 2]", main=NULL)。
6 結語
盡管前文已經介紹了R2WinBUGS程序包,且本文與其有許多相同之處。但WinBUGS已停止更新,且存在不能直接在64位操作系統上運行、不能在Linux操作系統上運行、初始值設定范圍較局限等缺陷。相比之下,OpenBUGS在克服上述缺點的同時,在代碼中做了相關調整與優化,使運行更加平穩;操作菜單亦做了相關優化,操作更為簡易;再者,功能更為強大且在不斷更新。因此,盡管當前WinBUGS軟件因為使用熟練的緣故仍在應用,但OpenBUGS是BUGS軟件中最具代表性的軟件,也是未來使用的重點[11]。
目前,關于使用R軟件調用其他軟件的程序包眾多,也在不斷地發展與完善,R軟件調用OpenBUGS只是其中一種。當前,R調用OpenBUGS軟件實現網狀Meta分析的程序包有R2OpenBUGS程序包、BRugs程序包和rbugs程序包。從上文可見:①這3個程序包中,整體功能最為全面的仍為R2OpenBUGS程序包;② R2OpenBUS程序包的相關操作與R2WinBUGS程序包[2]稍有不同;③ 3個程序包的計算結果是相近的。
此外,GeMTC R程序包亦可調用OpenBUGS [4]。但其與本文的3個程序包相比,主要是能夠依據數據自動生成代碼,更為靈活,對于貝葉斯模塊選擇不熟練或初學者使用更加方便;然而,正因為代碼的自動生成,其最大的缺陷也就在于依據數據對模塊進行選擇及代碼與數據的契合度的精確性有待商榷[4]。
R軟件具有強大的繪圖功能,且圖形精美,克服了OpenBUGS軟件圖形制作等方面的缺陷。因此,盡管程序包缺乏相關的繪圖功能,但均可通過相關的程序包進行繪制。對于使用者而言,需要掌握的是各程序包的用途及功能,以及R命令的編寫,即可做到融會貫通。
隨著循證醫學的發展,各種新型的Meta分析方法被研發,網狀Meta分析就是隨著實踐需求被研發的新方法[1]。當前,有較多能進行網狀Meta分析的軟件[1-6],其中基于Bayesian理論而制作的專業BUGS(Bayesian inference using gibbs sampling)軟件是當前制作網狀Meta分析的主流軟件,WinBUGS和OpenBUGS軟件為BUGS家族的代表。前文已經介紹了如何使用R2WinBUGS程序包實現網狀Meta分析[2],鑒于WinBUGS和OpenBUGS有所異同,本文將對基于OpenBUGS的R2OpenBUGS程序包[7]、BRugs程序包[8]和rbugs程序包[9]實現網狀Meta分析進行介紹。本文仍采用NICE DSU TSD中有效性的數據為例,詳見《R軟件R2WinBUGS程序包在網狀Meta分析中的應用》一文中的表 1 [2]。
1 軟件安裝及程序包加載
1.1 OpenBUGS和R軟件安裝
同為BUGS軟件家族成員,OpenBUGS所基于的理論和方法均與WinBUGS相同,是在WinBUGS軟件的基礎上研發的[
R軟件的下載及安裝同前述[2-4],本文使用的版本為R-3.0.1。
1.2 程序包的安裝及加載
軟件安裝完畢后,雙擊桌面的R軟件圖標,可啟動R的交互式窗口(R—GUI)。
R2OpenBUGS程序包的安裝命令為:install.packages(“R2OpenBUGS”),選擇鏡像安裝(CRAN);安裝完成后可由如下命令完成加載:library(“R2OpenBUGS”)。
BRugs程序包的安裝命令為:install.packages(“BRugs”),選擇鏡像安裝(CRAN);安裝完成后可由如下命令完成加載:library(“BRugs”)。
rbugs程序包的安裝命令為:install.packages(“rbugs”),選擇鏡像安裝(CRAN);安裝完成后可由如下命令完成加載:library(“rbugs”)。
此外,還需安裝及加載lattice及coda程序包,安裝命令分別為:install.packages(“lattice”)和install.packages(“coda”);加載命令分別為:library(“lattice”)和library(“coda”)。
至此,所需的軟件及程序包就已經安裝和加載完成,即可應用。
2 數據的加載
在使用R軟件之前,我們需要先在OpenBUGS軟件上運行,這對于保證OpenBUGS軟件的模塊(model)、數據及初始值的正確性十分重要。
數據的加載詳見《R軟件R2WinBUGS程序包在網狀Meta分析中的應用》一文中操作流程部分的步驟2.2至2.6 [2],但應注意的是,這里需要將“ bugs3ar.bug ”文件的后綴名改為“ bugs3arm.txt ”。
3 使用R2OpenBUGS程序包實現
3.1 完成數據計算
在完成上述操作以后,操作者方可以操作此步來調用OpenBUGS軟件,此步也為調用運行軟件的關鍵及最后一步。具體命令代碼為:
bugs.sim < -bugs(data, inits, parameters, model.file=bugsname, n.chains=1, n.iter=40000, n.burnin=10000, debug=FALSE, codaPkg=FALSE)
上述命令中:data、inits、parameters及bugsname四者依次為數據、初始值、輸出參數及OpenBUGS軟件model,上述過程可完成數據導入、賦值及model的建立。n.chains為鏈的數量。n.iter為迭代運算的次數。n.burnin為前多少次退火。debug可賦兩種值,設為TRUE時,為調用OpenBUGS時在計算機界面顯示,并且其運行完成后需手動關閉,建議在調試未成功時設置;設FALSE值時,為不在計算機界面顯示,并且其運行完成后自動關閉,建議在調試成功后,設置為該值(因為設置為TRUE時,OpenBUGS未關閉,R軟件易卡機)。bugs.sim為承載結果數據。對于上述的賦值過程,操作者可以結合OpenBUGS軟件操作過程來理解,會更加深刻。
執行上述代碼命令后,只需靜靜等待計算機自動運行。只有debug值設為TRUE時,才會出現“ log ”對話框,并且OpenBUGS軟件的最下方也將出現“ model is updating ”標志,此時操作者需要耐心等待2分鐘左右(視個人計算機而有所不同);待迭代運算完成之后,系統會自動返回到R控制臺的界面。此時,就已經完成了整個數據的運算,結果見圖 1。

3.2 數據輸出
數據輸出的結果是由OpenBUGS軟件model運行而產生的,需要print()命令,具體命令代碼為:print(bugs.sim, digits.summary=4)
其中bugs.sim為運算后數據輸出的結果;digits.summary為輸出結果精確的小數點位數,產生的結果數據(如圖 2)。

細心的讀者可能會發現,上述結果與使用R調用WinBUGS所產生的結果稍有差異,這是由于OpenBUGS與WinBUGS軟件之間的差別所致,但差異非常小。
3.3 繪制森林圖
繪制的命令及圖形均與R2WinBUGS相同,詳見《R軟件R2WinBUGS程序包在網狀Meta分析中的應用》一文[2]。
至此,就完成了使用R軟件R2OpenBUGS程序包實現網狀Meta分析的全部過程。接著,繼續對相關的圖形及數據進行保存即可。
4 使用rbugs程序包實現
rbugs程序包的數據加載與R2WinBUGS和R2OpenBUGS相同,此處不再展示。
4.1 完成計算
完成上述步驟后,使用rbugs程序包實現的迭代的命令為:rbugs.sim < -rbugs(data, inits, parameters, model=bugsname, n.chains=1, n.iter=40000, n.burnin=10000, bugs="D:/Program Files/OpenBUGS/OpenBUGS322/OpenBUGS.exe", bugsWorkingDir="D:/Users/Administrator/Desktop/Rwork/rbugs")
上述命令中:bugs為OpenBUGS軟件的安裝路徑;bugsWorkingDir表示該程序包運算時,需將上述中的模塊、數據及初始值全部存入固定的目錄中;此命令就是用于設定儲存路徑,此參數為必要參數。
4.2 匯總結果
迭代運算完成后,可對結果進行匯總。匯總結果命令如下:
library("coda")
rbugs.mcmc < -rbugs2coda(rbugs.sim)
summary(rbugs.mcmc)
命令之后,結果如圖 3所示。

4.3 圖形繪制
rbugs程序包當前缺乏繪制圖形功能。
5 使用BRugs程序包實現
BRugs程序包的數據加載與R2WinBUGS和R2OpenBUGS相同,此處不再贅述。
5.1 完成計算
完成上述步驟后,使用BRugs程序包實現的迭代的命令為:
BRugs=BRugsFit(data=data, inits=inits, para=parameters, modelFile=bugsname, numChains=1, nIter=40000, nBurnin=10000, nThin=1, working.directory="D:/Users/Administrator/Desktop/Rwork/", "bugs3arm.txt", coda=FALSE, DIC=TRUE, BRugsVerbose=FALSE)
上述命令中:coda取FALSE值,表示返回樣本及DIC值;DIC取TRUE值,表示返回DIC值。
命令執行后,結果如圖 4所示。

5.2 繪制圖形
如同rbugs程序包一樣,BRugs程序包亦缺乏繪制森林圖的功能;但BRugs程序包可繪制如下圖形:① “節點”密度圖:plotDensity("lor[1, 2]", main=NULL);② “節點”軌跡圖:plotHistory("lor[1, 2]", main=NULL);③ “節點”收斂圖:plotBgr("lor[1, 2]", main=NULL)。
6 結語
盡管前文已經介紹了R2WinBUGS程序包,且本文與其有許多相同之處。但WinBUGS已停止更新,且存在不能直接在64位操作系統上運行、不能在Linux操作系統上運行、初始值設定范圍較局限等缺陷。相比之下,OpenBUGS在克服上述缺點的同時,在代碼中做了相關調整與優化,使運行更加平穩;操作菜單亦做了相關優化,操作更為簡易;再者,功能更為強大且在不斷更新。因此,盡管當前WinBUGS軟件因為使用熟練的緣故仍在應用,但OpenBUGS是BUGS軟件中最具代表性的軟件,也是未來使用的重點[11]。
目前,關于使用R軟件調用其他軟件的程序包眾多,也在不斷地發展與完善,R軟件調用OpenBUGS只是其中一種。當前,R調用OpenBUGS軟件實現網狀Meta分析的程序包有R2OpenBUGS程序包、BRugs程序包和rbugs程序包。從上文可見:①這3個程序包中,整體功能最為全面的仍為R2OpenBUGS程序包;② R2OpenBUS程序包的相關操作與R2WinBUGS程序包[2]稍有不同;③ 3個程序包的計算結果是相近的。
此外,GeMTC R程序包亦可調用OpenBUGS [4]。但其與本文的3個程序包相比,主要是能夠依據數據自動生成代碼,更為靈活,對于貝葉斯模塊選擇不熟練或初學者使用更加方便;然而,正因為代碼的自動生成,其最大的缺陷也就在于依據數據對模塊進行選擇及代碼與數據的契合度的精確性有待商榷[4]。
R軟件具有強大的繪圖功能,且圖形精美,克服了OpenBUGS軟件圖形制作等方面的缺陷。因此,盡管程序包缺乏相關的繪圖功能,但均可通過相關的程序包進行繪制。對于使用者而言,需要掌握的是各程序包的用途及功能,以及R命令的編寫,即可做到融會貫通。