不惧困难 发表于 2019-9-18 15:36:37

用SAS编程实现分层随机抽样


分层随机抽样也是一种常用的抽样方法,可以分为等比例分层随机抽样和不等比例分层随机抽样,以下是这两种抽样方法的SAS编程简单实现过程!

先生成一个用于抽样的数据集(如果已经有数据集,就不需要生成数据集了,直接跳到下一步):
data all;
input name$ sex$ age$ height weight;
cards;
a F 13-14 56.5 84
b F 13-14 65.3 98
c F 13-14 56.5 84
d F 13-14 65.3 98
e F <12 59.8 84.5
f F <12 51.3 50.5
g F <12 56.3 77
h F <12 59.8 84.5
i F <12 51.3 50.5
j F <12 56.3 77
k F >15 62.8 102.5
l F >15 62.5 112.5
m F >15 64.3 90
n F >15 66.5 112
o F >15 62.8 102.5
p F >15 62.5 112.5
q F >15 64.3 90
r F >15 66.5 112
s M 13-14 62.5 84
t M 13-14 62.5 84
u M <12 57.3 83
v M <12 59 99.5
w M <12 64.8 128
x M <12 57.5 85
y M <12 57.3 83
z M <12 59 99.5
aa M <12 64.8 128
bb M <12 57.5 85
cc M >15 69 112.5
dd M >15 63.5 102.5
ee M >15 72 150
ff M >15 67 133
gg M >15 66.5 112
hh M >15 69 112.5
ii M >15 63.5 102.5
jj M >15 72 150
kk M >15 67 133
ll M >15 66.5 112
;
run;

按照分层变量,对数据集进行排序:
proc sort data=all out=new1;
   by sex age;/*这里选择先按性别分层之后,再按照年龄进行分层*/
run;

等比例分层随机抽样:
proc surveyselect
   data=new1 noprint method=srs rate=0.5 out=new2;
   strata sex age;
run;

不等比例分层随机抽样:
proc surveyselect
   data=new1 noprint method=srs rate=(0.5,0.8,0.3,0.5,0.7,0.1) out=new3;
   strata sex age;
run;
页: [1]
查看完整版本: 用SAS编程实现分层随机抽样