国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

SAS GTL 統(tǒng)計制圖的自動化實現(xiàn)

2019-07-10 07:02東南大學公共衛(wèi)生學院流行病與衛(wèi)生統(tǒng)計學系210009
中國衛(wèi)生統(tǒng)計 2019年3期
關(guān)鍵詞:宏程序制圖繪圖

東南大學公共衛(wèi)生學院流行病與衛(wèi)生統(tǒng)計學系(210009)

秦 揚 潘俊霞 劉 沛△

【提 要】 目的 為利用SAS圖形模板語言(graph template language,GTL)實現(xiàn)疫苗臨床試驗統(tǒng)計制圖的自動化提供方法學參考,以提高臨床試驗制圖效率,降低宏程序使用門檻提供便利。方法 利用SAS強大的數(shù)據(jù)處理能力、SAS GTL靈活的圖形展現(xiàn)能力構(gòu)建SAS宏程序,結(jié)合excel參數(shù)表,實現(xiàn)臨床試驗批量自動化制圖功能。結(jié)果 通過SAS自動化宏程序批量繪制疫苗臨床試驗中兩種特殊圖形:實驗室指標基線隨訪散點圖和不良事件發(fā)生率及相對風險圖。結(jié)論 利用SAS數(shù)據(jù)處理、GTL圖形輸出可構(gòu)建SAS宏程序,結(jié)合excel參數(shù)表可實現(xiàn)臨床試驗制圖的批量自動化。

在疫苗臨床試驗統(tǒng)計分析報告中,將統(tǒng)計結(jié)果以圖形方式呈現(xiàn),不僅可縮短報告篇幅,而且能重點突出試驗的關(guān)鍵信息,常常起到畫龍點睛之作用。目前統(tǒng)計制圖已有較多工具,如excel、R、Graphpad Prism等軟件。這些工具雖然各有特色和優(yōu)勢,但均需要從SAS中導出相應數(shù)據(jù)集實現(xiàn)繪圖。在臨床試驗中,歐美發(fā)達國家及我國CFDA均推薦使用SAS進行統(tǒng)計分析,統(tǒng)計報告中的制圖數(shù)據(jù)需要來自SAS軟件的分析結(jié)果。如果利用以上制圖軟件繪圖,需要將SAS產(chǎn)生的結(jié)果數(shù)據(jù)導出至該軟件,一方面使結(jié)果表達的可溯源性受到了挑戰(zhàn),另一方面也容易出現(xiàn)軟件兼容與更多意外的風險。更為重要的是,由于臨床試驗一次往往需要產(chǎn)生幾十甚至上百張圖表,反復修改宏參數(shù)極易出現(xiàn)人為操作失誤等問題,不斷調(diào)試宏程序也需要花費時間和人力。

在我國衛(wèi)生統(tǒng)計學界,SAS雖然一直是統(tǒng)計分析的權(quán)威軟件,但其繪圖功能一直被認為不夠完善。值得注意的是,自SAS9.2推出ODS Graphics System以來,改變了這種局面。而最新的SAS9.4無論是在繪圖類型與繪圖功能的細節(jié)方面均進行了擴展和完善,這些特點都為自定義編制SAS宏,實現(xiàn)自動化的圖形輸出提供了便利條件。本文針對目前國內(nèi)缺乏SAS GTL介紹的情況下,在介紹GTL基本功能的基礎(chǔ)上,通過構(gòu)建SAS宏程序并結(jié)合excel參數(shù)賦值實現(xiàn)統(tǒng)計制圖自動化,以期為提高臨床試驗制圖效率,降低宏程序使用門檻提供便利。

SAS GTL簡介

SAS作為一款優(yōu)秀的統(tǒng)計分析軟件,其統(tǒng)計繪圖功能卻一直為人詬病,直到SAS9.2 ODS Graphics System的推出改變了這種局面。與傳統(tǒng)的SAS GRAPH繪圖模塊相比,ODS Graphics采用模板驅(qū)動的原理,利用ODS系統(tǒng)讀取繪圖模板、樣式模板及相應的數(shù)據(jù)以實現(xiàn)圖形的輸出[1]。另外,SAS ODS graphics system從9.3版本之后并入Base模塊,意味著無需額外付費即可使用。更重要的是,ODS graphics將所有圖形的繪制都統(tǒng)一至同一過程步,使其語法變得更加簡潔統(tǒng)一,其核心GTL更是利用“blocks”概念實現(xiàn)了代碼內(nèi)部的邏輯控制。ODS Graphics模塊包括三個部分:SG繪圖過程步(Statistical Graphics Procedures,SG Procedures)、ODS圖形設(shè)計器(ODS Graphics Designer)和ODS圖形編輯器(ODS Graphics Editor),而GTL則是整個模塊最底層的支持代碼。其中,SG過程步可實現(xiàn)基本圖形的輸出,ODS Graphics Designer利用菜單式點選實現(xiàn)作圖,ODS Graphics Editor則在后期對圖形進行簡單的編輯。直接利用GTL繪圖可定制更加靈活的個性化圖形,它以一定程度的程序復雜性實現(xiàn)更加靈活的圖形元素修改。GTL的語法簡潔統(tǒng)一,其圖形實現(xiàn)可分為以下兩個步驟:

步驟1:編譯(compile)

proc template;

define statgraphtemplate-name;/*定義圖形模板名稱*/

begingraph;/*開始圖形繪制*/

GTL-statements;/*圖形參數(shù)修改*/

endgraph;/*結(jié)束圖形繪制*/

end;/*結(jié)束模板定義*/

步驟2:執(zhí)行(execute)

proc sgrenderdata=data-source/*定義數(shù)據(jù)集名稱*/template=template-name/*定義模板名稱*/;

即首先自定義圖形模板,提交后得以編譯存儲,再結(jié)合作圖數(shù)據(jù)對象創(chuàng)建圖形輸出。可以看到,相比傳統(tǒng)的Graph繪圖模塊,GTL的語法更為簡潔,并在繪圖模板定義時呈現(xiàn)出代碼塊嵌套的特點。所謂代碼塊(Blocks),即一對對稱的繪圖語句,它標志著特定功能代碼的開始與結(jié)束。比如面的define statgraph語句與end語句、begingraph語句與endgraph語句的成對存在。另外,GTL語句的書寫也符合代碼塊的特點,如layout語句與endlayout語句、cell語句與endcell語句等。代碼塊的相互嵌套是不可逆的,比如layout語句必須嵌套在begingraph代碼塊當中,cell語句必須嵌套在layout語句當中?!癰lock”概念的存在使得程序的可讀性大大增加,需要注意的是GTL也給這種嵌套以一定的規(guī)則。GTL-statements是可變代碼,它包括布局語句(layout_statements)與圖形元素語句。其中,圖形元素可包括形狀、圖例與文字元素等。GTL允許自由地進行圖形布局設(shè)計,利用三類布局模板(layout statements)可分別創(chuàng)建頁面單圖、多圖和分類面板圖;不同的統(tǒng)計圖形選擇不同的作圖語句(plotstatements),同時指定相應的圖形參數(shù)選項;利用圖例語句(legendstatements)、文字語句(textstatements)及相應的選項可為圖形指定圖例與相應文字如標題、腳注等。

需要明確的是,ODS Graphics輸出的圖形為模板驅(qū)動圖形,sg過程步通過調(diào)用繪圖數(shù)據(jù)對象、加載已編譯存儲的繪圖模板,并采用當前ODS destination指定的樣式模板,再輸出終端繪制圖形。因此ODS繪圖時必須至少存在一個活動的ODS終端。我們通過ODS語句指定圖片路徑、ODS Graphics語句指定圖片屬性如圖片名稱、格式、分辨率等,從而在ODS終端輸出高質(zhì)素的標量、矢量統(tǒng)計圖形。

自動化繪圖的宏程序?qū)崿F(xiàn)

1.制圖宏程序的建立

與excel、GraphPad不同的是,通過調(diào)用自定義的SAS宏程序[2-3],我們可以避免同類型圖形的手工重復制圖。本研究制圖宏程序分為三部分:數(shù)據(jù)處理、GTL繪圖與ODS輸出控制。

EpiData庫或電子數(shù)據(jù)采集(electric data capture,EDC)中的臨床試驗數(shù)據(jù)經(jīng)導出、初步處理成源數(shù)據(jù)后可調(diào)用宏程序,經(jīng)宏中數(shù)據(jù)處理部分成為GTL所需的作圖數(shù)據(jù)集,即sg render過程步的data_source。提交GTL模板定義實現(xiàn)編譯查錯并存儲,Sg render過程步將數(shù)據(jù)對象與模板定義相結(jié)合生成圖形結(jié)果,同時利用ODS系統(tǒng)將圖形輸出為特定格式,可指定相應的輸出樣式、輸出路徑等。ODS輸出樣式與圖形模板定義共同影響圖形的表現(xiàn)。利用ODS系統(tǒng),我們可以指定是否生成單獨的圖片格式文件或者將圖形作為輸出的一部分、圖形為標量還是矢量圖以及圖形的具體物理屬性如路徑、名稱、格式等。宏內(nèi)參數(shù)包括三種,一般參數(shù)、傳遞參數(shù)與圖形參數(shù)。一般參數(shù)指圖形的名稱、格式、存儲路徑等全局宏變量;傳遞參數(shù)則是指作圖數(shù)據(jù)集、作圖參數(shù);圖形參數(shù)則是一些可變的圖形屬性如圖片標題、軸標簽、不同組別線型、顏色等。

2.SAS與excel參數(shù)表的連接[4]

在實際操作過程當中,每輸出一張圖形需要調(diào)用一次宏程序,并修改圖形參數(shù)。當輸出大量圖形時,頻繁的調(diào)用將導致出錯的風險增多。以excel外部參數(shù)表的形式統(tǒng)一整理繪圖宏參數(shù)并實現(xiàn)修改,可實現(xiàn)批量出圖并降低宏程序使用難度。通過將excel參數(shù)表以SAS數(shù)據(jù)集的形式導入SAS宏程序,從而實現(xiàn)了對GTL程序中宏變量的批量賦值與修改,詳見表1。

表1 某臨床試驗的excel參數(shù)表模板(節(jié)選)

使用者可直接根據(jù)參數(shù)表中對宏參數(shù)的描述修改對應宏參數(shù),通過修改value1-N列的對應參數(shù)值,可同時批量輸出N張不同的圖形。

GTL宏程序?qū)嵗?/h2>

1.實驗室指標基線隨訪散點圖

實驗室指標基線隨訪散點圖采用矩陣圖的表現(xiàn)形式,在同一圖形面板中完整地展示了受試者不同實驗室指標在不同時間點的變動情況[5]。實驗室指標矩陣圖可以視為臨床試驗報告中正常異常交叉表的圖形化表達,以矩陣圖中散點直觀展示的可視化技術(shù)取代了表格的籠統(tǒng)概述,形象地突出了安全性分析中的異常信號。圖1顯示的是某臨床試驗受試者第3天、7天、14天、28天部分血常規(guī)、血生化指標與基線的對比情況。

圖1 部分血常規(guī)/血生化指標基線隨訪散點圖

圖中指示線為相應指標的正常值上限(upper limit of normal,ULN)可作為個體正常、異常值的分界。我們選取部分適宜制圖的血常規(guī)、血生化指標進行展示,并在數(shù)據(jù)處理階段對異常無臨床意義的值進行了剔除。即顯示異常的個體均為有臨床意義的個體,這些個體的篩選號被直觀標識出來。如圖可見,篩選號為S074的個體在第7天出現(xiàn)了谷丙轉(zhuǎn)氨酶的升高,在第14天呈現(xiàn)出谷丙轉(zhuǎn)氨酶的持續(xù)升高并伴有總膽紅素的升高,提示肝功能嚴重受損。對于這樣的個體,在安全性評價中應重點關(guān)注,追溯其異常是否與干預措施有關(guān)。

實驗室指標基線隨訪散點圖制圖的具體步驟:

1.填寫參數(shù)表:

填寫相應的外部參數(shù)表以修改必要的圖形屬性參數(shù)。

2.調(diào)用制圖宏:

通過修改宏內(nèi)參數(shù)值以實現(xiàn)制圖,其中exceladdress為參數(shù)表位置:%datapanel(exceladdress=%str(D:assignmentsas-drawing參數(shù)表.xlsx),sheet=格子圖)

3.宏內(nèi)GTL模板定義:

proc template;

define statgraph datapanel;/*圖形模板定義*/

mvar TITLE ROWVAR COLUMNVAR START HEADERLABELDISPLAY XLABEL XTYPE YLABEL YTYPE X Y GROUP DATALABEL REFERCENCELINEVALUE1 REFERCENCELINEVALUE2 BORDER OPAQUE LINECOLOR1 LINECOLOR2;/*聲明宏變量*/

nmvar LINEPATTERN1 LINETHICKNESS1 LINEPATTERN2 LINETHICKNESS2;

begingraph;

entryfootnote TITLE;/*定義腳注*/

layout datalattice rowvar=ROWVAR columnvar=COLUMNVAR/start=START headerlabeldisplay=HEADERLABELDISPLAY rowaxisopts=(display=(XLINEDISPLAY XLABELDISPLAY XTICKSDISPLAY XTICKVALUESDISPLAY)type=XTYPE linearopts=(thresholdmax=1)label=XLABEL labelattrs=(size=9pt))columnaxisopts=(display=(XLINEDISPLAY XLABELDISPLAY XTICKSDISPLAY XTICKVALUESDISPLAY)type=YTYPE linearopts=(thresholdmax=1)label=YLABEL labelattrs=(size=9pt));/*格子圖分類變量定義及軸選項*/

layout prototype;/*格子圖內(nèi)容定義*/

scatterplot x=X y=Y/group=GROUP name=“datapanel”

datalabel=DATALABEL;/*散點圖定義*/

referenceline REFERCENCELINEVALUE1/lineattrs=

(color=LINECOLOR1 pattern=LINEPATTERN1 thickness=LINETHICKNESS1 pt);/*輔助線定義*/

referenceline REFERCENCELINEVALUE2/lineattrs=

(color=LINECOLOR2 pattern=LINEPATTERN2 thickness=LINETHICKNESS2 pt);

endlayout;

sidebar;

discretelegend “datapanel”/border=BORDER opaque=OPAQUE;/*圖例定義*/

endsidebar;

endlayout;

endgraph;

end;

run;

2.不良事件發(fā)生率及相對風險圖

不良事件發(fā)生率及相對風險圖在臨床試驗不良事件描述中利用傳統(tǒng)的森林圖[6],通過計算組間效應量RR及其95%可信區(qū)間,直觀展現(xiàn)了所關(guān)注的不良事件發(fā)生率與相應的組間差異。另外,還可以進行縱向間不良事件發(fā)生的比較。根據(jù)研究目的,在森林圖中按照一定規(guī)律對不良事件進行排序,可以直觀、突出地顯示最需要關(guān)注的不良事件。本例中我們以不良反應發(fā)生率的總和作為排序的標準。圖2顯示的是某臨床試驗中28天非征集不良事件的發(fā)生率與組間差異情況。

圖2 不良事件發(fā)生率及相對風險圖

圖中將不良事件發(fā)生率以從高到低的順序排序,右側(cè)顯示了不良事件不同劑量組間的RR值及其95%置信區(qū)間。由圖可見,RR=1的標識線穿過所有不良事件的95%置信區(qū)間范圍,提示不良事件組間差異無統(tǒng)計學意義。

繪制不良事件發(fā)生率及相對風險圖的具體步驟:

1.填寫參數(shù)表:

2.調(diào)用制圖宏:

通過修改宏內(nèi)參數(shù)值以實現(xiàn)制圖,其中exceladdress為參數(shù)表位置:%forest(exceladdress=D:assignmentsas-drawing參數(shù)表.xlsx,sheet=多框圖,group=group,zzname=zzname,group1=高劑量組,group2=低劑量組)

3.宏內(nèi)數(shù)據(jù)處理與ODS控制代碼:

(1)數(shù)據(jù)處理:

/*分析數(shù)據(jù)集>制圖集*/

ods trace on;

ods output CrossTabFreqs=p(keep=&group.&zzname.rowpercent frequency rename=(rowpercent=p)where=(not missing(&group.)and not missing(&zzname.)))CrossTabFreqs=percent(keep=percent &zzname.);

proc freq;

tables &group.*&ZZNAME.;

run;

ods output close;

/*生成p和rr*/

data p1;

set p(rename=(frequency=a)where=(&group.="&group1."));

run;

data p2;

set p(rename=(&group.=group1 p=p1 frequency=c)where=(group1="&group2."));

run;

data _temper;

merge p1 p2;

run;

data rr(keep=&zzname.rr lowerrr upperrr where=(not missing(rr)));

set _temper;

b=32-a;

d=33-c;

rr=p/p1;

SE=1/a+1/b +1/c +1/d;

lowerrr=exp(log(RR)-1.96 *SE);

upperrr=exp(log(RR)+1.96 *SE);

run;

/*p和rr連接*/

proc sql;

create table unsort_forest as

select rr.*,&group.,p

from rr left join p

on rr.&zzname.=p.&zzname.;

/*排序Ae*/

data percent;

set percent(firstobs=37 obs=53);

run;

proc sort data=percent;

by descending percent;

run;

data percent;

set percent;

id=_n_;

run;

proc sql;

create table forest as

select unsort_forest.*

from unsort_forest left join percent

on percent.&zzname.=unsort_forest.&zzname.

order by id;

(2) ODS控制語句:

ods graphics/reset imagename=“&title.”noborder outputfmt=&outputfmt.width=&width.height=&height.;/*控制圖形屬性*/

ods _all_ close;/*關(guān)閉所有ODS目標*/

ods listing gpath="&gpath."style=&style.;/*只打開listing目標,控制圖形屬性*/

proc sgrender data=&data.template=forest;

run;

ods listing close;/*listing目標關(guān)閉*/

ods html;

討 論

ODS Graphics是SAS 9.2新推出的繪圖模塊,它顛覆了人們對于SAS制圖的認知。而圖形模板語言GTL是ODS Graphics System最底層的作圖代碼,它可以實現(xiàn)幾乎所有繪圖元素的修改。國外對于SAS GTL的介紹大多見于SAS相關(guān)會議,而國內(nèi)GTL的應用文章也不多見。本研究以疫苗臨床試驗中兩種特殊圖形為例,介紹了SAS 9.4最新版本中不同圖形的SAS GTL代碼編寫及宏程序?qū)崿F(xiàn)過程,并結(jié)合excel參數(shù)表批量賦值實現(xiàn)了圖形輸出自動化。GTL通過在template過程步中變換作圖語句及相應參數(shù)指定繪圖模板,編譯后結(jié)合sgrender過程步指定作圖數(shù)據(jù)實現(xiàn)制圖。其語法結(jié)構(gòu)規(guī)范統(tǒng)一,代碼塊間相互嵌套,可讀性強且代碼量少。與傳統(tǒng)的Graph繪圖模塊相比,它將不同種類圖形的繪制匯總至同一過程步,克服了繪圖過程步分散、繪圖代碼風格混亂的缺點。需要注意的是,GTL的靈活性與復雜性相伴,大量的圖形選項[7]是學習的重點與難點。另外,利用excel參數(shù)表與宏的結(jié)合,我們可以規(guī)范化、批量化指定宏參數(shù),這樣不僅減輕了使用者的宏程序修改難度,同時也有助于實現(xiàn)臨床試驗圖形制作的自動化。

猜你喜歡
宏程序制圖繪圖
來自河流的你
“禾下乘涼圖”繪圖人
橢球槽宏程序編制及其Vericut仿真
無聲手槍如何消音?
習近平的戰(zhàn)疫日志
垂涎三尺
數(shù)控車編程教學中宏程序嵌套的應用
通用類宏程序在數(shù)控銑床加工中的實踐運用
明天我們將生活在怎樣的城市?
一圖看清上海的“拆拆并并”