哈爾濱醫(yī)科大學衛(wèi)生統(tǒng)計學教研室(150081) 張雷 吳瑩 侯艷 李康
目前我國的臨床試驗統(tǒng)計分析工作,通常由具有臨床試驗經(jīng)驗的統(tǒng)計人員通過SAS軟件實現(xiàn)并給出統(tǒng)計分析報告。對于重要的研究結(jié)果,若能在統(tǒng)計分析報告中恰當配合統(tǒng)計圖形則更便于對結(jié)果的理解和解釋〔1〕。在SAS系統(tǒng)中,SAS/GRAPH作為專門的圖形可視化模塊具有十分強大的圖形表現(xiàn)功能,利用圖形功能可以在數(shù)據(jù)分析的同時更好地展現(xiàn)數(shù)據(jù)特點和相互之間的關(guān)系。SAS/GRPAH中提供了大量的圖形選擇和相應(yīng)的選項,通過修改控制圖形的選項之后,可以生成各種圖形。然而,編制通用和具有特點的SAS繪圖宏程序,通常需要花費較多的時間。由于R語言在實現(xiàn)畫圖上具有更好的靈活性,如果能在SAS系統(tǒng)中實現(xiàn)對R語言畫圖程序的調(diào)用,則很容易實現(xiàn)由SAS宏給出的表格與圖形相結(jié)合的統(tǒng)計分析報告。
相對于其他統(tǒng)計分析軟件,R語言的一個重要特點是靈活的繪圖功能。首先,R語言繪制的圖形具有高印刷質(zhì)素,通過tiff()等語句可在程序中實現(xiàn)高質(zhì)素圖像的生成與保存。其次,可以在圖形中加入特殊的數(shù)學符號或公式,這是R語言的一大特色。再次,R語言通過高級繪圖命令與低級繪圖命令的結(jié)合,可以在程序中靈活地實現(xiàn)對坐標軸、各級標題及圖例等的編輯工作,也可以在圖形上添加額外的數(shù)據(jù)點,參照線或者文字標簽等,能夠滿足統(tǒng)計圖形繪制的各種要求。最后,基于R語言的開源與自由下載特性,軟件更新較快且具有豐富的網(wǎng)上資源,通過下載安裝各種程序包可以繪制許多特殊圖形〔2〕。綜合來看,R語言可以通過簡單靈活的程序控制語句,實現(xiàn)極強的繪圖功能,生成高質(zhì)素圖形文件,并且完全通過程序語句實現(xiàn),這些均有助于臨床試驗中包含圖形結(jié)果的統(tǒng)計分析報告的自動化生成。
將原始數(shù)據(jù)整理為繪圖所需的數(shù)據(jù)格式后,利用SAS導出外部文件數(shù)據(jù)集功能,將整理完成的數(shù)據(jù)集輸出為一個“.csv”文件。應(yīng)用 R程序繪圖時,讀入剛剛輸出的“.csv”文件數(shù)據(jù)即可直接進行圖形的繪制。SAS可以通過MS-DOS命令實現(xiàn)對R的調(diào)用和運算。SAS調(diào)用MS-DOS的語句主要有:X command;CALL SYSTEM routine;Batchprocessing;SYSTASK statement;%SYSEXEC statement。本文主要涉及 X command和CALL SYSTEM routine這兩個命令。X命令是全局通用語句,可以在任意位置使用,但在數(shù)據(jù)步中不能使用條件語句來執(zhí)行X命令;而CALL SYSTEM語句必須在數(shù)據(jù)步中執(zhí)行,是可執(zhí)行條件語句。這兩個語句默認是進行同步執(zhí)行,這意味著在繼續(xù)執(zhí)行SAS會話之前,DOS命令窗口和windows應(yīng)用程序的執(zhí)行需要引導。我們需要將程序存儲為擴展名為“.bat”或“.r”的文件,最后利用MS-DOS語句運行即可,運行后輸入EXIT可以返回SAS會話窗口。
雖然SAS通過MS-DOS命令可以實現(xiàn)對R程序的調(diào)用,但由于SAS軟件窗口無法顯示R繪制出的圖形,若手動查找R輸出的圖形文件就失去了使用這一方法的意義。為了解決這一問題,在編寫SAS宏程序之前,可定義一個固定的文件輸出路徑及圖像文件格式作為全局SAS宏參數(shù),方便每一次調(diào)用。SAS窗口雖不支持外部圖像的顯示,但SAS命令可以利用windows操作系統(tǒng)直接打開一個外部文件,其命令語句格式為“dm’wbrowse”()“’”。這樣便可以在SAS調(diào)用R程序繪制圖形后,直接打開所繪制的圖形。圖形輸出到統(tǒng)計報告中,可以利用SAS語言中的ODS命令來實現(xiàn)〔3-4〕。
圖形編譯完成后,使用sink(“<路徑\output.txt>”)命令保存R程序的輸出結(jié)果,并在SAS程序中讀入該文件,同時使用SAS中的preimage命令讀入外部圖像文件,最后利用SAS ODS將圖形輸出至一個已存在的Word文檔中。將圖形結(jié)果輸出至Word文檔的SAS宏程序具體實現(xiàn)過程:



我們利用SAS語言完成了部分臨床試驗統(tǒng)計分析報告需要的圖形宏程序〔5〕,具體內(nèi)容見表1。

表1 臨床試驗統(tǒng)計分析主要圖形SAS宏程序列表
利用SAS調(diào)用R軟件繪制所需統(tǒng)計圖形,并將結(jié)果自動輸出至統(tǒng)計分析報告,實現(xiàn)步驟如下:
(1)首先整理出所需數(shù)據(jù)集,存放至目標位置;
(2)通過file語句和put語句,將繪制所需圖形的R程序輸出至目標位置的“.R”文件;
(3)利用SAS系統(tǒng)的X語句完成以下操作:①啟動R軟件;②調(diào)用(2)中生成的“.R”程序文件繪制所需圖形,并將結(jié)果存放至目標位置;③退出R軟件,返回SAS系統(tǒng)實現(xiàn)上述步驟的通用宏程序:


(4)通過SAS ODS將(3)中繪制的圖形傳輸至word文檔格式的統(tǒng)計報告中,實現(xiàn)統(tǒng)計報告中圖形結(jié)果的自動化輸出。
以下給出幾種常見統(tǒng)計圖形,說明上述步驟的SAS實現(xiàn)語句。
主要功能:直觀地顯示不同處理組的某一陽性事件的發(fā)生率,如比較試驗組與對照組治療高血壓的療效。SAS實現(xiàn)步驟:



圖1 實驗與對照組治療高血壓療效對比條形圖
主要功能:直觀地顯示不同處理組的各癥狀在用藥前后的改善率,如比較試驗組與對照組治療感冒各項癥狀的有效率。
SAS實現(xiàn)步驟:



圖2 感冒膠囊用藥4天后與對照藥物各癥狀改善百分率(%)
主要功能:直觀地顯示不同處理組的有效率或某一陽性事件的發(fā)生率,如試驗組和對照組血壓的平均變化情況的誤差條圖。
SAS實現(xiàn)步驟:



圖3 實驗組和對照組血壓的平均變化情況的誤差條圖
主要功能:用于非正態(tài)計量數(shù)據(jù)的統(tǒng)計描述,如試驗組與對照組服藥6周后的坐位血壓值的中位數(shù)及百分位數(shù)。
SAS實現(xiàn)步驟:



圖4 不同用藥時間的坐位血壓變化情況箱式圖
主要功能:描述不同試驗中心的有效率及區(qū)間估計,同時給出總有效率的可信間,可用于直觀地顯示不同中心試驗結(jié)果是否具有一致性。如各中心試驗組與對照組顯效率對比的森林圖。
SAS實現(xiàn)步驟:


圖5 各中心實驗組與對照組顯效率對比森林圖
主要功能:描述一組或兩組計量指標的頻數(shù)分布,既可以用于比較試驗組和對照組的數(shù)量值的分布,也可以用于描述同一組試驗對象用藥前后的終點指標的變化情況。如試驗組與對照組6周后坐位血壓變化值對比圖。
SAS實現(xiàn)步驟:



圖6 實驗組與對照組6周后坐位血壓變化值對比圖
主要功能:用于比較不同處理組間某連續(xù)變量的變化趨勢差異。如患者在治療6周過程中血K+的變化圖。SAS實現(xiàn)步驟:



圖7 患者在治療6周過程中血K+的變化
SAS語言和R語言作為兩種不同的常用統(tǒng)計分析和編程工具,各有其獨特之處。從應(yīng)用上講,SAS語言更適于數(shù)據(jù)管理和統(tǒng)計分析,R語言在繪圖上更為簡單。為實現(xiàn)統(tǒng)計分析報告圖形的自動化輸出,我們可以結(jié)合兩種軟件各自的優(yōu)點進行混合編程,即在SAS系統(tǒng)上通過MS-DOS命令調(diào)用R軟件繪制統(tǒng)計圖形,再利用SAS ODS功能將圖形結(jié)果直接輸出至Word格式的統(tǒng)計分析報告中,直觀地顯示分析結(jié)果。本文結(jié)合新藥臨床試驗中可能用到的圖形,如箱式圖、誤差條圖、百分條圖、點線圖等,說明了具體的混合編程方法,給出了通用性的SAS宏程序。按照本文給出的方法亦可根據(jù)實際需要給出其他圖形。
1.童新元,張高魁,姚晨.定性指標的SAS統(tǒng)計分析報表_SAS軟件在新藥臨床試驗統(tǒng)計分析中的應(yīng)用.中國衛(wèi)生統(tǒng)計,2011,20(1):50-51.
2.Norm Matloff.Rough guide to R,2011.
3.SAS BASE 使用手冊,2011.
4.SAS Institute Inc.Step-by-Step programming with base SAS software.Cary,NC:SAS Institute Inc,2001.
5.甘秀敏,蔡強,聶紹發(fā).多變量重復測量方差分析統(tǒng)計報表輸出的SAS 宏實現(xiàn).中國衛(wèi)生統(tǒng)計,2012,29(1):142-144.