BugsXLA宏命令是基于貝葉斯理論在Excel內核框架下編寫的,其目的是在Microsoft Excel框架下通過調用BUGS軟件實現相關貝葉斯數據統計處理。在當前所有調用BUGS軟件實現網狀Meta分析的軟件中,BugsXLA宏命令具有兼容性好、操作簡單、運行流暢、消耗內存少、數據錄入及提取、存儲方便等優點,能夠將數據存儲與計算融為一體。但其繪圖功能過于簡單,當前僅能繪制密度圖。此外,調用WinBUGS軟件的功能已成熟,但調用OpenBUGS軟件的功能尚不成熟。
引用本文: 曾憲濤, 張超, 杜亮. Microsoft Excel調用BUGS軟件實現網狀Meta分析. 中國循證醫學雜志, 2014, 14(6): 765-771. doi: 10.7507/1672-2531.20140128 復制
提取和存儲合格研究的數據是進行Meta分析的前提和關鍵[1, 2]。之后,如何實現提取的數據向軟件中的便捷輸入也是需要考慮的環節。在這個過程中,Microsoft Excel是當前使用頻率最高的軟件。相對于傳統Meta分析[3],網狀Meta分析具有納入研究多、數據量大、層次多、內在結構復雜、相互關聯性大等特點[4-7]。因此,網狀Meta分析對數據的準確提取及便捷錄入顯得更為重要,Excel以結構清晰、使用方便、與各種統計分析軟件的吻合性好等優勢成為網狀Meta分析的數據提取、儲存以及錄入的最佳工具。
在筆者先前的文章中,均是使用Excel提取及存取數據,按照相應的格式排列之后,再復制或者采用其他方法輸入到軟件中[8-14]。很明顯,Excel起到中轉站作用,其程序稍顯復雜。若能直接使用Excel實現對BUGS軟件的調用來實現網狀Meta分析,則更為便捷。當前,可以通過在Excel中加載BugsXLA宏命令來實現對BUGS軟件的調用[15, 16],本文仍采用《R軟件R2WinBUGS程序包在網狀Meta分析中的應用》 [8]一文中的示例對Bugs-XLA宏命令進行介紹。
1 BugsXLA宏下載及安裝
1.1 BugsXLA宏簡介
BugsXLA宏命令由Phil Woodward等[15, 16]基于貝葉斯理論在Excel內核框架下編譯命令編寫,其目的是在Microsoft Excel框架下實現相關貝葉斯數據統計處理。因此,BugsXLA宏與Excel各版本均有良好的兼容性。當前,該宏命令能夠與Windows 98、2000、XP、Vista、7、8和Pro操作系統兼容,與Excel 2000至2013版本兼容。此外,該宏命令具有操作方便、運行流暢、占用內存少及數據提取方便等優點。
當前BugsXLA宏命令最新版本為v5.1,其與v5.0的區別在于添加了調用OpenBUGS軟件的接口及完善了相關控件的功能。目前,該宏插件仍在不斷更新與維護。BugsXLA宏命令下載地址為http://www.philwoodward.co.uk/bugsxla/download.html。
1.2 BugsXLA宏安裝
本文使用的Windows 7 32位操作系統、Excel 2007版本、BugsXLA v5.1版本進行演示。
BugsXLA v5.1宏命令下載后,雙擊解壓進行解壓并依據默認提示存放在“C:\Program Files\WinBugsXLA51”路徑文件夾下;此后可在桌面新建一個“BugsXLA”文件夾,以便于后續文件的存放。
首先,在BugsXLA文件夾中新建一個Excel表格并打開,依次單擊“左上角開始按鈕→Excel選項(I)→加載項→管理(Excel加載項)→轉到(G)”調出加載宏對話框(圖 1)。圖 1中,單擊“瀏覽(B)…”按鈕,找到并選擇存放在“C:\Program Files\WinBugsXLA51”下的“BugsXLA51.xla”并單擊“確定”,再返回到圖 1中勾選“BugsXLA51”復選框并單擊“確定”,即可完成加載。然后,可以通過Excel主界面工具欄的“加載項”進行查看及使用加載好的BugsXLA宏控件(圖 2)。


2 BugsXLA宏命令調用WinBUGS
BugsXLA宏命令是基于貝葉斯理論框架調用BUGS軟件實現相關數據的分析,此外其宏內也存放著相應的簡單線性貝葉斯模型;故使用者可單擊BugsXLA宏控件(圖 2)中的最后一個按鈕(BugsXLA Options),依據數據需求及通過相關參數設定選取模塊。本文選擇通過執行腳本文件調用WinBUGS軟件展示實現網狀Meta分析,使用的文件將全部存放在上述新建的“BugsXLA”文件夾中。
2.1 模塊構建
首先,需要構建執行網狀Meta分析的模塊,建立的模塊以“model.txt”保存于“BugsXLA”文件夾中。代碼命令詳見《R軟件R2WinBUGS程序包在網狀Meta分析中的應用》 [8]一文中的框1。
說明:建模的代碼命令亦可不同于引文,本文為保持系列文章的一致性及便于結果的比較,故仍使用了相同的代碼命令。
2.2 數據排列
BugsXLA宏的數據的排列存分兩步,具體如下:
第一步,將下述命令放入“txt”文本并以“data1.txt”為名存放于BugsXLA文件夾:
?
list(ns=64, nt=14)
?
第二步,將下述命令及數據放入“txt”文本并以“data2.txt”為名存放于BugsXLA文件夾:
?

2.3 初始值設置
完成數據排列之后,接著需要設置初始值。將下述命令放入“txt”文本并以“inits.txt”為名存放于BugsXLA文件夾,即可完成初始值的設置:
?
list(d=c(NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), sd=1, mu=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
?
2.4 構建腳本文件
調用前最后一步就是構建腳本文件。方法為將下述命令放入“txt”文本并以“script.txt”為名存放于BugsXLA文件夾:
?
check('C:/Users/Administrator/Desktop/BugsXLA/model.txt')
data('C:/Users/Administrator/Desktop/BugsXLA/data1.txt')
data('C:/Users/Administrator/Desktop/BugsXLA/data2.txt')
compile(1)
inits(1, 'C:/Users/Administrator/Desktop/BugsXLA/inits.txt')
gen.inits()
update(10000)
set(lor)
set(or)
dic.set()
thin.updater(10)
update(40000)
display('log')
stats(*)
dic.stats()
save('C:/Users/Administrator/Desktop/BugsXLA/NodeStats.txt')
coda(*, 'C:/Users/Administrator/Desktop/BugsXLA/CODA')
quit()
?
至此,調用的前期準備工作已完成,后續即將執行腳本文件來調用WinBUGS軟件實現網狀Meta分析。
2.5 執行調用
在圖 2中,單擊宏控件的第3個按鈕(Run WinBUGS(Script))調出Run WinBUGS(Script)對話框,單擊“File Search”按鈕,然后使用“Browse”到BugsXLA文件下找到“script.txt”文件并單擊“OK”,即可調用WinBUGS軟件來執行網狀Meta分析了,詳見圖 3所示。

WinBUGS運行后,其界面打開并出現“Log”字樣(圖 4);正常運行完成后,WinBUGS將會自行關閉,即完成了整個調用過程。此時,BugsXLA文件夾下將會依次自動生成3個以“.txt”格式儲存的結果文件:“NodeStats.txt”、“CODAIndex.txt”和“CODA1.txt”。

其中,NodeStats.txt表示監視節點的匯總結果,如or、lor;CODAIndex.txt表示各監視節點迭代次數分布;CODA1.txt表示各監視節點迭代次數具體軌跡。
3 結果導入Excel
計算完成后,將上述結果依次導入到Excel中。上述3個結果文件,只需導入“NodeStats.txt”和“CODA1.txt”。
在圖 2中,單擊宏控件的第4個按鈕(Import Results from Output)調出“Import Results from WinBUGS”對話框;勾選NodeStats和CODA前復選框,單擊“File Search”按鈕至BugsXLA文件下找到“NodeStats.txt”文件,此時其下方的CODA框會自動生成“CODA”字樣(圖 5A)。接著,單擊“OK”進入Import Results(Options)對話框。如圖 5B所示,選取“ALL”導入監視全部后驗指標;繼續單擊“Import”按鈕,其上方講出現“Importing: please be patient”,此時靜心等待結果的導入。具體導入時間依據操作者電腦的配置及原先設定監視節點數量及迭代次數而定。


導入完成后,即可瀏覽結果。圖 6展示了各監視節點結果,圖 7展示了各監視節點的迭代軌跡。需要說明的是,為了便于展示,筆者將部分結果隱藏(圖 6、圖 7)。


4 繪制各節點分布條形圖
完成數據導入后,可根據各節點的軌跡數值繪制相應的分布條形圖。本例以lor[1, 2]節點為例進行演示。
首先,在圖 2中單擊宏控件的第6個按鈕(Post Plots)調出Posterior Plotting Tool對話框(圖 8)。圖 8中各部分功能簡介及示例設置如下:

A:定位確定繪制的節點位置,單擊右側“_”實現定位。如本例定位節點為lor[1, 2],只需選擇該節點名(lor[1, 2])即可,即“'Post Plot 1'!$A$1”。
B:更新A部分的定位節點。在確定或更換節點信息后,需單擊該按鈕以加載相關數據信息。本例不需使用。
C:反映當前繪制節點名稱,由A部分信息而定。本例顯示為“lor[1, 2]”。
D:該部分數值為繪制該節點條形圖時的抽樣數(即條形圖條形數),抽樣范圍為0~100;增減數以5為單位。本例設置為75。
E:該部分為執行節點條形圖繪制。
F:此兩處復選框分別為是否隱藏條形圖數據、是否退出及刪除條形圖。本例均行保留。
G:該部分為編輯圖形參數,單擊后會自動彈出“Edit Plotting Parameters”對話框,即H部分。
H:該部分為確定節點繪制矩形圖的相關參數的設定。本例對lor節點未給予相關分布設定,因此,以默認結果數據進行抽樣繪制條形圖。
本例設置完畢后點擊E,即可繪制出lor[1, 2]節點的圖形(圖 9)。圖 9中,A部分為條形圖的屬性,B部分為選取是否繪制百分比位點,C部分為統計后的95%可信區間,D部分為條形圖的抽樣點數值(本例為75個)。

其他節點的后驗條形圖的繪制,與lor[1, 2]節點方法一致。至此,該宏命令在調用網狀Meta分析中的功能已全部講解完畢。對于其軌跡圖和森林圖等相關圖形的繪制,請參閱《R調用JAGS軟件實現網狀Meta分析》一文中3.3部分[14];當然,這些圖形并非是必需的。
5 結語
與前面其他軟件調用BUGS軟件[8-11]相比,基于Excel的BugsXLA宏命令具有兼容性好、操作簡單、運行流暢、消耗內存少及數據提取方便等優點,這些優點是其他軟件所無法比擬的。然而,也正是由于其內嵌結構簡單,使其在相關圖形繪制功能上明顯不足。該宏命令對于結果處理采用了通用性儲存方式,使得結果提取尤為方便,這也為其與其他外接軟件(如R等)相互配合繪圖等提供了可能,彌補了圖形繪制功能的不足。
最新版BugsXLA v5.1在調用WinBUGS軟件技術上較為成熟,但在調用OpenBUGS軟件時,部分代碼仍存在無法執行等問題,如執行調用本例建模代碼就無法執行。筆者推測這可能與數據類型及復雜程度有關。因此,調用OpenBUGS尚需進一步完善,這也是本文未介紹OpenBUGS的原因。
網狀關系圖是網狀Meta分析中展示各比較組之間關系的重要圖形[17]。顯然,BugsXLA宏命令不具備這個功能,但可以通過在Excel中進行設置來實現,或采用其他方法[17]實現。
目前,該宏命令的優點及其不斷更新與維護,相信其內在結構將會不斷完善;加之Excel的應用廣泛性與具備多種功能,該宏命令繪圖功能也將會逐步完善。
提取和存儲合格研究的數據是進行Meta分析的前提和關鍵[1, 2]。之后,如何實現提取的數據向軟件中的便捷輸入也是需要考慮的環節。在這個過程中,Microsoft Excel是當前使用頻率最高的軟件。相對于傳統Meta分析[3],網狀Meta分析具有納入研究多、數據量大、層次多、內在結構復雜、相互關聯性大等特點[4-7]。因此,網狀Meta分析對數據的準確提取及便捷錄入顯得更為重要,Excel以結構清晰、使用方便、與各種統計分析軟件的吻合性好等優勢成為網狀Meta分析的數據提取、儲存以及錄入的最佳工具。
在筆者先前的文章中,均是使用Excel提取及存取數據,按照相應的格式排列之后,再復制或者采用其他方法輸入到軟件中[8-14]。很明顯,Excel起到中轉站作用,其程序稍顯復雜。若能直接使用Excel實現對BUGS軟件的調用來實現網狀Meta分析,則更為便捷。當前,可以通過在Excel中加載BugsXLA宏命令來實現對BUGS軟件的調用[15, 16],本文仍采用《R軟件R2WinBUGS程序包在網狀Meta分析中的應用》 [8]一文中的示例對Bugs-XLA宏命令進行介紹。
1 BugsXLA宏下載及安裝
1.1 BugsXLA宏簡介
BugsXLA宏命令由Phil Woodward等[15, 16]基于貝葉斯理論在Excel內核框架下編譯命令編寫,其目的是在Microsoft Excel框架下實現相關貝葉斯數據統計處理。因此,BugsXLA宏與Excel各版本均有良好的兼容性。當前,該宏命令能夠與Windows 98、2000、XP、Vista、7、8和Pro操作系統兼容,與Excel 2000至2013版本兼容。此外,該宏命令具有操作方便、運行流暢、占用內存少及數據提取方便等優點。
當前BugsXLA宏命令最新版本為v5.1,其與v5.0的區別在于添加了調用OpenBUGS軟件的接口及完善了相關控件的功能。目前,該宏插件仍在不斷更新與維護。BugsXLA宏命令下載地址為http://www.philwoodward.co.uk/bugsxla/download.html。
1.2 BugsXLA宏安裝
本文使用的Windows 7 32位操作系統、Excel 2007版本、BugsXLA v5.1版本進行演示。
BugsXLA v5.1宏命令下載后,雙擊解壓進行解壓并依據默認提示存放在“C:\Program Files\WinBugsXLA51”路徑文件夾下;此后可在桌面新建一個“BugsXLA”文件夾,以便于后續文件的存放。
首先,在BugsXLA文件夾中新建一個Excel表格并打開,依次單擊“左上角開始按鈕→Excel選項(I)→加載項→管理(Excel加載項)→轉到(G)”調出加載宏對話框(圖 1)。圖 1中,單擊“瀏覽(B)…”按鈕,找到并選擇存放在“C:\Program Files\WinBugsXLA51”下的“BugsXLA51.xla”并單擊“確定”,再返回到圖 1中勾選“BugsXLA51”復選框并單擊“確定”,即可完成加載。然后,可以通過Excel主界面工具欄的“加載項”進行查看及使用加載好的BugsXLA宏控件(圖 2)。


2 BugsXLA宏命令調用WinBUGS
BugsXLA宏命令是基于貝葉斯理論框架調用BUGS軟件實現相關數據的分析,此外其宏內也存放著相應的簡單線性貝葉斯模型;故使用者可單擊BugsXLA宏控件(圖 2)中的最后一個按鈕(BugsXLA Options),依據數據需求及通過相關參數設定選取模塊。本文選擇通過執行腳本文件調用WinBUGS軟件展示實現網狀Meta分析,使用的文件將全部存放在上述新建的“BugsXLA”文件夾中。
2.1 模塊構建
首先,需要構建執行網狀Meta分析的模塊,建立的模塊以“model.txt”保存于“BugsXLA”文件夾中。代碼命令詳見《R軟件R2WinBUGS程序包在網狀Meta分析中的應用》 [8]一文中的框1。
說明:建模的代碼命令亦可不同于引文,本文為保持系列文章的一致性及便于結果的比較,故仍使用了相同的代碼命令。
2.2 數據排列
BugsXLA宏的數據的排列存分兩步,具體如下:
第一步,將下述命令放入“txt”文本并以“data1.txt”為名存放于BugsXLA文件夾:
?
list(ns=64, nt=14)
?
第二步,將下述命令及數據放入“txt”文本并以“data2.txt”為名存放于BugsXLA文件夾:
?

2.3 初始值設置
完成數據排列之后,接著需要設置初始值。將下述命令放入“txt”文本并以“inits.txt”為名存放于BugsXLA文件夾,即可完成初始值的設置:
?
list(d=c(NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), sd=1, mu=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
?
2.4 構建腳本文件
調用前最后一步就是構建腳本文件。方法為將下述命令放入“txt”文本并以“script.txt”為名存放于BugsXLA文件夾:
?
check('C:/Users/Administrator/Desktop/BugsXLA/model.txt')
data('C:/Users/Administrator/Desktop/BugsXLA/data1.txt')
data('C:/Users/Administrator/Desktop/BugsXLA/data2.txt')
compile(1)
inits(1, 'C:/Users/Administrator/Desktop/BugsXLA/inits.txt')
gen.inits()
update(10000)
set(lor)
set(or)
dic.set()
thin.updater(10)
update(40000)
display('log')
stats(*)
dic.stats()
save('C:/Users/Administrator/Desktop/BugsXLA/NodeStats.txt')
coda(*, 'C:/Users/Administrator/Desktop/BugsXLA/CODA')
quit()
?
至此,調用的前期準備工作已完成,后續即將執行腳本文件來調用WinBUGS軟件實現網狀Meta分析。
2.5 執行調用
在圖 2中,單擊宏控件的第3個按鈕(Run WinBUGS(Script))調出Run WinBUGS(Script)對話框,單擊“File Search”按鈕,然后使用“Browse”到BugsXLA文件下找到“script.txt”文件并單擊“OK”,即可調用WinBUGS軟件來執行網狀Meta分析了,詳見圖 3所示。

WinBUGS運行后,其界面打開并出現“Log”字樣(圖 4);正常運行完成后,WinBUGS將會自行關閉,即完成了整個調用過程。此時,BugsXLA文件夾下將會依次自動生成3個以“.txt”格式儲存的結果文件:“NodeStats.txt”、“CODAIndex.txt”和“CODA1.txt”。

其中,NodeStats.txt表示監視節點的匯總結果,如or、lor;CODAIndex.txt表示各監視節點迭代次數分布;CODA1.txt表示各監視節點迭代次數具體軌跡。
3 結果導入Excel
計算完成后,將上述結果依次導入到Excel中。上述3個結果文件,只需導入“NodeStats.txt”和“CODA1.txt”。
在圖 2中,單擊宏控件的第4個按鈕(Import Results from Output)調出“Import Results from WinBUGS”對話框;勾選NodeStats和CODA前復選框,單擊“File Search”按鈕至BugsXLA文件下找到“NodeStats.txt”文件,此時其下方的CODA框會自動生成“CODA”字樣(圖 5A)。接著,單擊“OK”進入Import Results(Options)對話框。如圖 5B所示,選取“ALL”導入監視全部后驗指標;繼續單擊“Import”按鈕,其上方講出現“Importing: please be patient”,此時靜心等待結果的導入。具體導入時間依據操作者電腦的配置及原先設定監視節點數量及迭代次數而定。


導入完成后,即可瀏覽結果。圖 6展示了各監視節點結果,圖 7展示了各監視節點的迭代軌跡。需要說明的是,為了便于展示,筆者將部分結果隱藏(圖 6、圖 7)。


4 繪制各節點分布條形圖
完成數據導入后,可根據各節點的軌跡數值繪制相應的分布條形圖。本例以lor[1, 2]節點為例進行演示。
首先,在圖 2中單擊宏控件的第6個按鈕(Post Plots)調出Posterior Plotting Tool對話框(圖 8)。圖 8中各部分功能簡介及示例設置如下:

A:定位確定繪制的節點位置,單擊右側“_”實現定位。如本例定位節點為lor[1, 2],只需選擇該節點名(lor[1, 2])即可,即“'Post Plot 1'!$A$1”。
B:更新A部分的定位節點。在確定或更換節點信息后,需單擊該按鈕以加載相關數據信息。本例不需使用。
C:反映當前繪制節點名稱,由A部分信息而定。本例顯示為“lor[1, 2]”。
D:該部分數值為繪制該節點條形圖時的抽樣數(即條形圖條形數),抽樣范圍為0~100;增減數以5為單位。本例設置為75。
E:該部分為執行節點條形圖繪制。
F:此兩處復選框分別為是否隱藏條形圖數據、是否退出及刪除條形圖。本例均行保留。
G:該部分為編輯圖形參數,單擊后會自動彈出“Edit Plotting Parameters”對話框,即H部分。
H:該部分為確定節點繪制矩形圖的相關參數的設定。本例對lor節點未給予相關分布設定,因此,以默認結果數據進行抽樣繪制條形圖。
本例設置完畢后點擊E,即可繪制出lor[1, 2]節點的圖形(圖 9)。圖 9中,A部分為條形圖的屬性,B部分為選取是否繪制百分比位點,C部分為統計后的95%可信區間,D部分為條形圖的抽樣點數值(本例為75個)。

其他節點的后驗條形圖的繪制,與lor[1, 2]節點方法一致。至此,該宏命令在調用網狀Meta分析中的功能已全部講解完畢。對于其軌跡圖和森林圖等相關圖形的繪制,請參閱《R調用JAGS軟件實現網狀Meta分析》一文中3.3部分[14];當然,這些圖形并非是必需的。
5 結語
與前面其他軟件調用BUGS軟件[8-11]相比,基于Excel的BugsXLA宏命令具有兼容性好、操作簡單、運行流暢、消耗內存少及數據提取方便等優點,這些優點是其他軟件所無法比擬的。然而,也正是由于其內嵌結構簡單,使其在相關圖形繪制功能上明顯不足。該宏命令對于結果處理采用了通用性儲存方式,使得結果提取尤為方便,這也為其與其他外接軟件(如R等)相互配合繪圖等提供了可能,彌補了圖形繪制功能的不足。
最新版BugsXLA v5.1在調用WinBUGS軟件技術上較為成熟,但在調用OpenBUGS軟件時,部分代碼仍存在無法執行等問題,如執行調用本例建模代碼就無法執行。筆者推測這可能與數據類型及復雜程度有關。因此,調用OpenBUGS尚需進一步完善,這也是本文未介紹OpenBUGS的原因。
網狀關系圖是網狀Meta分析中展示各比較組之間關系的重要圖形[17]。顯然,BugsXLA宏命令不具備這個功能,但可以通過在Excel中進行設置來實現,或采用其他方法[17]實現。
目前,該宏命令的優點及其不斷更新與維護,相信其內在結構將會不斷完善;加之Excel的應用廣泛性與具備多種功能,該宏命令繪圖功能也將會逐步完善。