在医学研究中大多数情况无法对所有整体进行全面研究,往往从中抽取一个具有代表性的样本进行分析,而随机抽样是是确定样本时一个应用最为普遍也是最为简单的方法。包括:单纯随机抽样(simple random sampling)、系统抽样(systematic sampling)、分层抽样(stratified sampling)、整群抽样(clustering sampling),相关概念见有关书籍,在这里利用SAS学习proc surveyselect 过程的用法。
PROC SURVEYSELECT一般形式:
Proc surveyselect data=<原数据集>
Method=<srs|sys|urs| /*抽样方法选择*/
out=<抽取样本存放的数据集>
n=<抽取数量>(or samprate=抽样比例)
seed=n;
strata <指定分层变量>;
id <指定抽取的样本所保留的源数据集变量>;
run;
举例:建立数据集a含1000个数据:data a ;do i = 1 to 1000 ;output ;end ;run ;
1、简单无重复随机抽样,从中抽取100个数据:
proc surveyselect data = a method = srs n = 100 out= b seed = 25070419 ;run ;
2、简单随机抽样,按10%的比例抽取:
proc surveyselect data =a method=srs samprate=0.1 out=b seed=25070419;run ;
3、系统抽样:在 1000 个数据中每隔 10 个抽取 1 个:
proc surveyselect data = a method = sys sampsize =100 out = b seed = 25070416 ;run ;
4、分层等比例随机抽样举例:
proc sort data=test2;
by 分层变量;
run; /**先用分层变量对总体样本进行排序/
proc surveyselect data=test2 out=results2 method=srs samprate=0.1;
strata 分层变量;
run; /*根据分层变量等比例从总体中抽取样本*/
5、分层不等比例抽样举例;
(1)手工设置抽样比例或者抽样数
proc sort data=test3;
by 分层变量;
run; /**先用分层变量对总体样本进行排序/
proc surveyselect data=test3 out=results3 method=srs
samprate=(0.1,0.3,0.5,0.2); /*根据分层情况设置每一层要抽取的比例*/
strata 分层变量;
run; /*根据分层变量不等比例从总体中抽取样本*/
proc surveyselect data=test3 out=results3 method=srs
n=(30,20,50,40); /*根据分层情况设置每一层要抽取的样本数*/
strata 分层变量;
run;
(2)根据抽样表进行不等比例抽样
proc sort data=test3;
by 分层变量;
run; /**先用分层变量对总体样本进行排序/
proc surveyselect data=test3 out=results3 method=SRS
samprate=samp_table; /*通过抽样比例数据集进行抽样,samp_table数据集中要包括分层变量 以及每一分层对应的抽样比例或者数量,如果按比例抽样变量必须用_rate_来命名抽样比例,如果是按数量抽样必须用_nsize_来命名抽样数量*/
strata 分层变量;
run;