羅艷虹,胡良平
(1.山西醫(yī)科大學(xué)公共衛(wèi)生學(xué)院衛(wèi)生統(tǒng)計學(xué)教研室,山西 太原 030001;2.世界中醫(yī)藥聯(lián)合會臨床科研統(tǒng)計學(xué)專業(yè)委員會,北京 100029;3.軍事醫(yī)學(xué)科學(xué)院生物醫(yī)學(xué)統(tǒng)計學(xué)咨詢中心,北京 100850*通信作者:胡良平,E-mail:lphu812@sina.com )
?
基于SAS軟件實(shí)現(xiàn)隨機(jī)分組及應(yīng)用
羅艷虹1,2,胡良平2,3*
(1.山西醫(yī)科大學(xué)公共衛(wèi)生學(xué)院衛(wèi)生統(tǒng)計學(xué)教研室,山西 太原 030001;2.世界中醫(yī)藥聯(lián)合會臨床科研統(tǒng)計學(xué)專業(yè)委員會,北京 100029;3.軍事醫(yī)學(xué)科學(xué)院生物醫(yī)學(xué)統(tǒng)計學(xué)咨詢中心,北京 100850*通信作者:胡良平,E-mail:lphu812@sina.com )
本文的目的是使讀者能方便快捷地運(yùn)用SAS軟件中的PLAN過程實(shí)現(xiàn)隨機(jī)分組。首先,對PLAN過程進(jìn)行了簡單介紹。接著,結(jié)合單因素設(shè)計、隨機(jī)區(qū)組設(shè)計、具有重復(fù)試驗(yàn)的隨機(jī)區(qū)組設(shè)計和拉丁方設(shè)計,介紹了隨機(jī)分組的SAS實(shí)現(xiàn)方法。讀者只需要修改本文中所呈現(xiàn)的SAS程序中的少量參數(shù),就可很方便地用SAS軟件實(shí)現(xiàn)自己的隨機(jī)分組任務(wù)。事實(shí)說明,盡管SAS軟件非常難學(xué)難用,但借助現(xiàn)成的SAS程序,可以輕松自如地解決很多具體問題。
SAS軟件;隨機(jī)分組;分層因素;單因素設(shè)計;隨機(jī)區(qū)組設(shè)計;拉丁方設(shè)計
SAS/STAT模塊中的PLAN過程,可用于生成各種設(shè)計方案(主要包括設(shè)計類型的架構(gòu)、其內(nèi)的受試對象的隨機(jī)化分配),同時可以對析因設(shè)計,尤其是嵌套設(shè)計、交叉設(shè)計和隨機(jī)區(qū)組設(shè)計進(jìn)行隨機(jī)化(此處強(qiáng)調(diào)的是在各種設(shè)計類型下,如何實(shí)現(xiàn)受試對象的隨機(jī)分組)。PLAN過程也可以生成一系列排列數(shù)和組合數(shù),可生成以下多種試驗(yàn)設(shè)計類型并完成相應(yīng)的受試對象的隨機(jī)化操作。
析因設(shè)計,包括隨機(jī)化和非隨機(jī)化析因設(shè)計;平衡和部分平衡不完全區(qū)組設(shè)計;廣義循環(huán)不完全區(qū)組設(shè)計;拉丁方設(shè)計。
對于其他類型的試驗(yàn)設(shè)計,尤其是分式析因設(shè)計、響應(yīng)面和正交陣列設(shè)計,可以參考SAS/QC軟件的FACTEX 和OPTEX過程及ADX(注:它是利用菜單驅(qū)動法實(shí)現(xiàn)試驗(yàn)設(shè)計的SAS模塊)界面。
PROC PLAN生成設(shè)計方案的過程:首先選擇第一個因素的各個水平;接著,對于第二個因素,PROC PLAN在第一個因素的每個水平下選擇第二個因素的水平。總之,對于一個給定的因素,PLAN過程基于此因素之前的所有因素的水平組合來選擇該因素的水平。
有五種不同的方法進(jìn)行各因素水平的選擇:隨機(jī)選擇,隨機(jī)選擇因素的各水平;順序選擇,每次以一個標(biāo)準(zhǔn)的順序選擇因素的各水平;循環(huán)選擇,通過循環(huán)地排列先前的各水平生成當(dāng)前各水平;排列選擇,因素各水平是整數(shù)1~n的一個排列;組合選擇,每次從整數(shù)1~n中選取m個數(shù)進(jìn)行組合用以選擇因素的m個水平。
隨機(jī)選擇方法可用于生成隨機(jī)化設(shè)計方案。同時通過恰當(dāng)使用循環(huán)選擇,可以生成任何一種廣義循環(huán)區(qū)組設(shè)計。因素的嵌套長度及隨機(jī)設(shè)計方案的生成數(shù)目不受限制??梢酝瑫r選擇若干因素,并設(shè)定最內(nèi)層(也就是嵌套在最內(nèi)層)因素。各因素的水平可以看作各個處理,應(yīng)用于設(shè)計方案的各格子。出于該原因,列出的因素稱為處理。運(yùn)行PROC PLAN可以生成及隨機(jī)化各種設(shè)計方案。
文獻(xiàn)[2]詳細(xì)地介紹了有關(guān)隨機(jī)原則、概念和常用方法,下面將結(jié)合幾種試驗(yàn)設(shè)計類型并運(yùn)用SAS軟件中的PLAN過程具體實(shí)現(xiàn)隨機(jī)分組。
2.1 單因素兩水平設(shè)計及其隨機(jī)分組
【例1】為試驗(yàn)“736”對肉瘤的抑制作用,將16只長出肉瘤的小鼠隨機(jī)分為兩組,試驗(yàn)組注射“736”,對照組注射同量生理鹽水,10天后解剖稱瘤重,觀察兩組瘤重之間的差異是否具有統(tǒng)計學(xué)意義[3-4]。請給出包含隨機(jī)分組的具體設(shè)計方案。
【分析與解答】先將全部小鼠編成1~16號,并設(shè)所需要的SAS程序名為SASDESIGN1.SAS,程序語句如下:
odshtml; procplanseed=20150731; factorsxiaoshu=16; treatmentstreatment=16cyclic(1111111122222222); run; odshtmlclose;
【程序說明】第一句與最后一句分別是打開與關(guān)閉輸出傳輸系統(tǒng)ODS,并采用網(wǎng)頁格式輸出結(jié)果,下同;“proc plan”調(diào)用SAS軟件中的PLAN過程,選項“seed=20150731”的作用是設(shè)置產(chǎn)生隨機(jī)數(shù)的初始種子數(shù)為20150731(通常為編寫此程序的時間,種子數(shù)相同的程序,將永遠(yuǎn)產(chǎn)生出相同的隨機(jī)結(jié)果,即隨機(jī)結(jié)果具有重現(xiàn)性);“factors xiaoshu=16”是該過程中一個重要語句,將生成代表受試對象“編號”的變量名“xiaoshu”及其取值(1~16);“treatments treatment=16 cyclic (1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2)”中的“treatments”是該過程中一個語句,“treatment=16”代表“試驗(yàn)因素treatment有16個水平”,其實(shí)是假定16個受試對象中的每一個接受一種特定的“處理”,“cyclic (1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2)”進(jìn)一步把前面的“16種處理”設(shè)置成“1”與“2”兩種處理,即試驗(yàn)因素“treatments”實(shí)際為具有“1”與“2”兩個水平的單因素,其中,“1”與“2”水平分別出現(xiàn)8次。
【主要輸出結(jié)果及解釋】
PlotFactorsFactorSelectLevelsOrderxiaoshu1616Random
TreatmentFactorsFactorSelectLevelsOrderInitialBlock/Incrementtreatment1616Cyclic(1111111122222222)/1
xiaoshutreatment161338127915614111241051111111122222222
16只小鼠的編號為1~16,從運(yùn)行結(jié)果的第三部分可知:設(shè)計方案中編號(xiaoshu)為16、13、3、8、12、7、9、15的小鼠接受第一種處理;設(shè)計方案中編號(xiaoshu)為6、14、11、1、2、4、10、5的小鼠接受第二種處理。
【思考題】借助例1,如何修改上面的SAS程序,將32只小鼠隨機(jī)均分為4組,即用SAS實(shí)現(xiàn)單因素4水平設(shè)計及其受試對象的隨機(jī)分組。
2.2 隨機(jī)區(qū)組設(shè)計及其隨機(jī)分組
【例2】對未成年大白鼠注射3種不同劑量雌激素,一定時間后觀測其子宮重量,做試驗(yàn)時,取4窩不同種系的大白鼠,每窩3只,隨機(jī)分配到3個劑量組內(nèi)進(jìn)行試驗(yàn)[3-4]。請給出包含隨機(jī)分組的具體設(shè)計方案。
【分析與解答】先將全部大白鼠按窩別編成1~4個區(qū)組,再將每個區(qū)組(即每窩)中的3只大白鼠編成1~3號,并設(shè)所需要的SAS程序名為SASDESIGN2.SAS,程序語句如下:
odshtml;procplanseed=20150731;factorsblock=4ordereddose=3;run;odshtmlclose;
【程序說明】在上述的過程中,有一個關(guān)鍵語句“factors”。該語句產(chǎn)生兩個變量(即因素),分別為“block”與“dose”,它們分別有4個水平與3個水平,它們的水平數(shù)乘積為12,意味著總共有12個受試對象;“ordered”聲明要求將“block”的4個水平按其自然順序排列,而“dose”后面沒有“ordered”,表明要求將“dose”的3個水平(代表三種不同的劑量)隨機(jī)化,而且,“dose”的3個水平必須在“block”的每一個水平條件下被隨機(jī)化。
【主要分析結(jié)果及解釋】
FactorSelectLevelsOrderblock44Ordereddose33Random
blockdose1312213231324321
上述結(jié)果表明,第1個區(qū)組中的3只大鼠注射的劑量大小分別為3、1、2;第2個區(qū)組中的3只大鼠注射的劑量大小分別為1、3、2;第3個區(qū)組中的3只大鼠注射的劑量大小分別為1、3、2;第4個區(qū)組中的3只大鼠注射的劑量大小分別為3、2、1。
【說明】本例的隨機(jī)區(qū)組設(shè)計也可以理解成對12只大鼠進(jìn)行“分層隨機(jī)”分組,相當(dāng)于將12只大鼠按“窩別”作為“分層因素”,先將它們按“窩別”形成4個“區(qū)組”,再在每個“區(qū)組”內(nèi)采用完全隨機(jī)方法,將每個區(qū)組內(nèi)的3只大鼠隨機(jī)分入3個試驗(yàn)組,這就是用“分層隨機(jī)”實(shí)現(xiàn)單因素三水平設(shè)計的隨機(jī)分組。
隨機(jī)區(qū)組設(shè)計與用“分層隨機(jī)”實(shí)現(xiàn)單因素三水平設(shè)計的區(qū)別在哪里?從用SAS軟件實(shí)現(xiàn)隨機(jī)化的做法來看,二者沒有區(qū)別;從設(shè)計類型的名稱和對定量資料統(tǒng)計分析角度看,二者之間是有區(qū)別的。區(qū)別在于:隨機(jī)區(qū)組設(shè)計中包含兩個因素,一個是試驗(yàn)因素(即研究者關(guān)心的因素)、另一個是重要非試驗(yàn)因素(即研究者原本不想關(guān)心,但它確實(shí)會對試驗(yàn)結(jié)果造成不可忽視的影響),當(dāng)需要對所收集的定量資料進(jìn)行差異性分析時,首先應(yīng)按兩個因素來構(gòu)建方差分析或秩和檢驗(yàn)的“統(tǒng)計模型”,僅當(dāng)“區(qū)組因素”對定量結(jié)果的影響無統(tǒng)計學(xué)意義時,可將其忽略,再采用單因素分析模型處理;而用“分層隨機(jī)”實(shí)現(xiàn)單因素三水平設(shè)計的場合下,“區(qū)組因素”是出于“質(zhì)量控制”的考慮,它是研究者基于基本常識和專業(yè)知識,從眾多的非試驗(yàn)因素中找出來的唯一重要的非試驗(yàn)因素(注意:若有多個重要非試驗(yàn)因素,應(yīng)將它們形成復(fù)合型的區(qū)組因素),只是在對受試對象進(jìn)行隨機(jī)分組時發(fā)揮“區(qū)組因素”的“控制作用”,確保分入對比組中的受試對象在“區(qū)組因素”上是高度可比的。在對收集的定量資料進(jìn)行差異性分析時,通常,可以直接將其視為來自“單因素多水平設(shè)計定量資料”,采取相應(yīng)的統(tǒng)計模型進(jìn)行處理。當(dāng)然,若按“隨機(jī)區(qū)組設(shè)計”的統(tǒng)計模型進(jìn)行數(shù)據(jù)處理,則更為合適。
【思考題】借助例2,如何修改上面的SAS程序,將8窩(每窩4只)大白鼠隨機(jī)均分入4個劑量組中去,即用SAS實(shí)現(xiàn)隨機(jī)區(qū)組設(shè)計及其受試對象的隨機(jī)分組。
2.3 具有重復(fù)試驗(yàn)的隨機(jī)區(qū)組設(shè)計及其隨機(jī)分組
【例3】在4家醫(yī)院開展某項臨床試驗(yàn),試以醫(yī)院為分層因素,按照具有重復(fù)試驗(yàn)的隨機(jī)區(qū)組設(shè)計將64例某病患者隨機(jī)均分入4家醫(yī)院,再將每家醫(yī)院接收的16例受試者隨機(jī)分入試驗(yàn)藥物的4個不同劑量組,4組患者例數(shù)相等[5]。
【分析與解答】本例屬于具有重復(fù)試驗(yàn)的隨機(jī)區(qū)組設(shè)計,醫(yī)院為“區(qū)組因素”、藥物劑量為“試驗(yàn)因素”,每家醫(yī)院的每個劑量組中均有4例受試者(即4次獨(dú)立重復(fù)試驗(yàn))。先將全部受試者編成1~64號,每相鄰8位被視為“一個區(qū)組”,將每個區(qū)組中的8位受試者隨機(jī)均分入4個劑量組。設(shè)所需要的SAS程序名為SASDESIGN3.SAS,程序語句如下:
%macro reptblock(seed=,hospital=,block=,length=,p_1=,p_2=,p_3=);
proc plan seed=&seed;
factors hospital=&hospital block=&block length=&length;
output out=a;run;
data b;set a;no=_n_;
if length<=&length*&p_1 then group=' 第一組';
else if &length*&p_1 else if &length*(&p_1+&p_2) else group=' 第四組';run; data c1(rename=(hospital=h1 no=n1 group=g1) drop=block length) c2(rename=(hospital=h2 no=n2 group=g2) drop=block length) c3(rename=(hospital=h3 no=n3 group=g3) drop=block length) c4(rename=(hospital=h4 no=n4 group=g4) drop=block length); set b; if hospital=1 then output c1; else if hospital=2 then output c2; else if hospital=3 then output c3; else output c4; run; data c; merge c1 c2 c3 c4; run; proc print data=c;ods html;run; %mend; %reptblock(seed=20161004,hospital=4,block=2,length=8,p_1=1/4,p_2=1/4,p_3=1/4); 【程序說明】此程序比較復(fù)雜,因篇幅所限,詳細(xì)說明可參閱文獻(xiàn)[4]。 【主要分析結(jié)果及解釋】 Obsh1n1g1h2n2g2h3n3g3h4n4g4111第二組249第一組333第二組417第四組212第一組250第四組334第一組418第三組313第一組251第三組335第四組419第四組414第三組252第二組336第三組420第二組515第二組253第三組337第一組421第一組616第四組254第二組338第二組422第一組717第三組255第四組339第四組423第二組818第四組256第一組340第三組424第三組919第三組257第一組341第四組425第二組10110第一組258第二組342第二組426第四組11111第一組259第一組343第一組427第四組12112第四組260第四組344第四組428第二組13113第四組261第三組345第三組429第三組14114第三組262第四組346第三組430第一組15115第二組263第三組347第一組431第一組16116第二組264第二組348第二組432第三組 上述結(jié)果表明:h1、n1、g1代表第1家醫(yī)院的編號、受試者編號、劑量組編號;……;h4、n4、g4代表第4家醫(yī)院的編號、受試者編號、劑量組編號。也就是說,1~16號受試者被分入第1家醫(yī)院,17~32號受試者被分入第4家醫(yī)院,33~48號受試者被分入第3家醫(yī)院,49~64號受試者被分入第2家醫(yī)院。分入每家醫(yī)院的16例受試者再被隨機(jī)分入4個劑量組,每個劑量組有4例受試者。 2.4 拉丁方設(shè)計及其隨機(jī)分組 【例4】有4種降壓藥(設(shè)為A1,A2,A3,A4)對4只猴進(jìn)行試驗(yàn),每只猴用藥4次,每次7天,間隔1個月,每次以用藥前后舒張壓下降值作為試驗(yàn)效應(yīng),已知因素之間交互作用可忽略不計,假定此藥物的效應(yīng)是短暫的且不會在本質(zhì)上影響血壓的取值[3-4]。請給出包含隨機(jī)分組的具體設(shè)計方案。 【分析與解答】這是一個需要最少樣本含量且可考察三個因素(一個試驗(yàn)因素、兩個區(qū)組因素)的試驗(yàn)設(shè)計類型,但必須滿足兩個重要的前提條件:其一,三因素之間的交互作用可忽略不計;其二,試驗(yàn)因素對評價指標(biāo)的影響是短暫的且不會在本質(zhì)上對其有影響。例子中的試驗(yàn)因素為“降壓藥”,一般是不符合前述第二條假定的。采用拉丁方設(shè)計的試驗(yàn)因素最合適的類似如“體溫計種類”或“天平種類”,次合適的類似如“血壓計種類”,最不合適的類似如“藥物種類”或“計量大小”。本例的主要目的是介紹在拉丁方設(shè)計中如何實(shí)現(xiàn)對受試對象的隨機(jī)分組方法,而僅假定其試驗(yàn)因素“藥物種類”符合此設(shè)計類型的要求。 先將4只猴(houzi)編成1-4號,將試驗(yàn)次序(cishu)編成1~4號,再將試驗(yàn)藥物(yaowu)編成1~4號,并設(shè)所需要的SAS程序名為SASDESIGN4.SAS,程序語句如下: odshtml;procplanseed=20150731;factorshouzi=4orderedcishu=4ordered;treatmentsyaowu=4cyclic;outputout=ayaowucvals=('yaowu1''yaowu2''yaowu3''yaowu4')ran-dom;run;procprintdata=a;run;odshtmlclose; 【程序說明】 第1個過程步調(diào)用PLAN過程構(gòu)造拉丁方設(shè)計的架構(gòu)(橫行安排4只猴、縱列安排4個次序)(它們都按順序排列,不是隨機(jī)的)并將試驗(yàn)因素(yaowu)的4個水平進(jìn)行循環(huán)排列,排成4行4列,即每行上都是1~4種藥物的隨機(jī)排列,共排出4行;“output out=a”是利用“output”語句,產(chǎn)生一個名為“a”的輸出數(shù)據(jù)集,該數(shù)據(jù)集中存放著拉丁方設(shè)計的結(jié)果(包括架構(gòu)和其內(nèi)的隨機(jī)排列);位于“output out=a”之后的一行,目的是對試驗(yàn)因素“yaowu”的4個水平由原先的“循環(huán)排列”再行隨機(jī)化排列。第2個過程步調(diào)用PRINT過程輸出拉丁方設(shè)計的結(jié)果。 【主要分析結(jié)果及解釋】 houzicishuyaowu112341234212342341312343412412344123 這個輸出結(jié)果不太容易看懂,改成下面的形式就一目了然了,見表1。 表1 四種降壓藥用于4只猴的降壓效果 注:假定表體內(nèi)小括號內(nèi)的數(shù)據(jù)為血壓降低值 由表1可看出:猴號與用藥次序號都是按順序排列的,而表體內(nèi)的降壓藥代號1~4是按循環(huán)規(guī)律排列的。以上屬于常規(guī)拉丁方設(shè)計,但最好將表體內(nèi)各行上的“降壓藥代號1~4”隨機(jī)化排列,這就是下面的輸出結(jié)果。 Obshouzicishuyaowu111yaowu2212yaowu1313yaowu3414yaowu4521yaowu1 622yaowu3723yaowu4824yaowu2931yaowu31032yaowu41133yaowu21234yaowu11341yaowu41442yaowu21543yaowu11644yaowu3 上面這個輸出結(jié)果仍然不太容易看懂,改成下面的形式就一目了然了,見表2。 表2 四種降壓藥用于4只猴的降壓效果 注:假定表體內(nèi)小括號內(nèi)的數(shù)據(jù)為血壓降低值 表2的表體內(nèi)4行上的“1~4”號的順序與上面第二部分輸出結(jié)果最后一列相對應(yīng),第1行:yaowu2、yaowu1、yaowu3、yaowu4;…;第4行:yaowu4、yaowu2、yaowu1、yaowu3。 [1] SAS Institute Inc.SAS/STAT 9.3 user’s Guide[M]. Cary, NC: SAS Institnte Inc, 2011: 3252-3347. [2] 楊孟淵, 胡良平. 精神衛(wèi)生科研如何嚴(yán)格遵守試驗(yàn)設(shè)計四原則之隨機(jī)原則[J]. 四川精神衛(wèi)生, 2016, 29(4): 289-294. [3] 胡良平. 統(tǒng)計學(xué)三型理論在實(shí)驗(yàn)設(shè)計中的應(yīng)用[M]. 北京: 人民軍醫(yī)出版社, 2006:44-106. [4] 胡良平. 科研設(shè)計與統(tǒng)計分析[M]. 北京:軍事醫(yī)學(xué)科學(xué)出版社, 2012: 265-276. [5] 胡良平. 課題設(shè)計與數(shù)據(jù)分析—關(guān)鍵技術(shù)與標(biāo)準(zhǔn)模板[M]. 北京: 軍事醫(yī)學(xué)科學(xué)出版社, 2014: 93-103. (本文編輯:吳俊林) Random grouping based on SAS software and its application LUOYan-hong1,2,HULiang-ping2,3* (1.DepartmentofHealthStatistics,AcaelemyofPublicHealth,ShanxiMedicalUniversity,Taiyuan030001,China;2.SpecialtyCommitteeofClinicalScientificResearchStatisticsofWorldFederationofChineseMedicineSocieties,Beijing100029,China;3.ConsultingCenterofBiomedicalStatistics,AcademyofMilitaryMedicalSciences,Beijing100850,China*Correspondingauthor:HULiang-ping,E-mail:lphu812@sina.com) The purpose of this paper is to enable readers to realize random grouping using PLAN procedure in SAS software quickly and easily. Firstly, the PLAN procedure was briefly introduced. Then, implementation of randomization by using SAS was introduced in this paper for a single factor design, a randomized block design, a randomized block design with repeated experiment and a Latin square design. Readers can easily use SAS software to achieve random grouping by modifying a few parameters of SAS programs presented in this paper. In fact, the readers can easily solve a lot of specific problems with the existing SAS programs, although SAS software is very difficult to learn and use. SAS software; Random grouping; Stratification factor; Single factor design; Randomized block design; Latin square design R195.1 A doi:10.11886/j.issn.1007-3256.2016.05.003 2016-10-11)
——平衡不完全區(qū)組設(shè)計定量資料一元方差分析