在電子化醫學研究資料庫逐漸流行的時代,利用次級資料庫或是公務行政資料庫進行醫學研究逐漸普及。研究者需要運用許多資料處理的技術在大量資料點中,擷取出適合分析的樣本,再依取出的樣本進行後續的分析處理。一般研究設計中,病例組/治療組因為操作目標明確,通常是容易擷取的,但是對照組範圍很廣,且年齡、性別的分佈往往會跟病例組/治療組有很大差異 (可以想像一般年輕人比較不容易成為病例組,所以病例組的年齡常常是較年長的),造成兩者之間可比較性低。此時有許多技術操作可以挑選出具有可比較性、適合分析的對照組,以下分享一些容易操作的簡單小技巧「抽樣」來達成挑選對照組的任務。
常見的抽樣方式「簡單隨機抽樣(Simple random sampling)」、「分層隨機抽樣(Stratified random sampling)」,其中分層隨機抽樣可再依操作方式分為「等比例隨機抽樣」跟「不等比例隨機抽樣」。以下簡單介紹透過SAS SURVEYSELECT Procedure來達成以上的抽樣操作。以上幾種常見的抽樣方式,在SURVEYSELECT Procedure語法的基本結構如下:
proc surveyselect data=dataname
method=sampling method n=sampling number out=sampling_data seed=any number over than 0 ;
run ;
sampling method:供使用者填入期望的抽樣方式
sampling number:供使用者填入期望的抽樣人數
any number over than 0:當seed=0時,每次抽出的人將會不同,因此建議填入大於0的正數,固定每次程序執行後抽出的人
「簡單隨機抽樣(Simple random sampling)」:以下示範簡單隨機抽100個不重複樣本的寫法,程序中method=srs便是指以簡單隨機抽樣的方式進行抽樣。
proc surveyselect data=dataname
method=srs n=100 out=sampling_data seed=123 ;
run ;
「分層等比例隨機抽樣」:以下示範以男女性別分層,並且各抽50%的樣本。假設母體有200人,其中120人為男性,80人為女性,期望抽出的樣本為60位男性跟40位女性。下面的指令依然是以簡單隨機抽樣的方式進行抽樣,只是抽樣時依照男女性別做分層,由於男性跟女性的50%是不同數值,因此此處無法如同上方的範例用n=來表達預期抽出的樣本數,改以samprate=來表達期望抽出樣本的比例。strata用來指定分層的依據。
proc sort data=dataname ; by sex ; run ; /** 分層的變項必須於抽樣程序執行之前先做好排序 **/
proc surveyselect data=dataname
method=srs samprate=0.5 out=sampling_data seed=123 ;
strata sex ;
run ;
「分層不等比例隨機抽樣」:以下示範以年齡分層,並且希望抽出的樣本中,老年的樣本較多些。假設母體有500人,年齡每20歲分層,共分5層,期望以0.1, 0.1, 0.2, 0.3, 0.3的比例抽出五個年齡層分別為50, 50, 100, 150, 150的人數。
範例一:以samprate=()的方式指定各層期望抽出的比例。
proc sort data=dataname ; by age_group ; run ; /** 分層的變項必須於抽樣程序執行之前先做好排序 **/
proc surveyselect data=dataname
method=srs samprate=(0.1, 0.1, 0.2, 0.3, 0.3) out=sampling_data seed=123 ;
strata age_group ;
run ;
範例二:以n=()的方式直接輸入各層期望抽出的人數。
proc sort data=dataname ; by age_group ; run ; /** 分層的變項必須於抽樣程序執行之前先做好排序 **/
proc surveyselect data=dataname
method=srs n=(50, 50, 100, 150, 150) out=sampling_data seed=123 ;
strata age_group ;
run ;
範例三:建立抽樣表(sampling_sheet),讓程序從抽樣表中自動擷取各層應抽樣的比例或人數。抽樣表形式如下圖所示,需包含分層的欄位及各層期望抽出的比例(限定以_rate_命名)或人數(限定以_nsize_命名),程序指令寫法如下。
proc sort data=dataname ; by age_group ; run ; /** 分層的變項必須於抽樣程序執行之前先做好排序 **/
proc surveyselect data=dataname
method=srs samprate=sampling_sheet out=sampling_data seed=123 ;
strata age_group ;
run ;
關鍵字:SAS, SURVEYSELECT Procedure, 抽樣, 簡單隨機抽樣, simple random sampling, 分層隨機抽樣, stratified random sampling, 分層等比例隨機抽樣, 分層不等比例隨機抽樣
留言列表