1、 系统抽样
它是首先将总体中各单位按一定顺序排列,根据样本容量要求确定抽选间隔,然后随机确定起点,每隔一定的间隔抽取一个单位的一种抽样方式。
Sas代码(1):
data quan;
set sashelp.prdsale;
if mod(_n_,4)=0 then output ;
run;
Sas代码(2):
data quan1;
do i= 1 tonumber by 10;
set sashelp.prdsale nobs=number point=i;
output ;
end;
stop;
run;
sas代码(3):利用过程步surveyselect ,其中方法为systematic sampling(简写为sys)
proc surveyselect data=sashelp.prdsalen=100 method=sys out=quan;
run;
2、 简单抽样
随即抽取分为重复抽样和不重复抽样。在重复抽样中,每次抽中的单位仍放回总体,样本中的单位可能不止一次被抽中。不重复抽样中,抽中的单位不再放回总体,样本中的单位只能抽中一次。
sas代码(1):
data quan2;
set sashelp.prdsalenobs=number;
x=uniform(0);
run;
proc sort data=quan2 out=quan3;
by x;
run;
data quan;
set quan3;
if _n_<30 then output;drop x;
run;
这个代码很有意思的,产生一组随即数,然后根据随机数排序进行选择。
Sas代码(2):
data quan;
do i =1 to 50;
p=ceil(1440*ranuni(0));
set sashelp.prdsale point=p;
output;
end;
stop;
drop p;
run;
这个例子也是通过随机数来产生随机的位置,然后抽取相应的数据。
另外如果不知道初始样本的数据量,可以使用nobs设置。
data quan;
do i =1 to 50;
p=ceil(number*ranuni(0));/*向上取整,这样就可以使p指在【1,number】中。
set sashelp.prdsale point=p nobs=number;
output;
end;
stop;
drop p;
run;
Sas代码(3):利用过程步surveyselect,其中method= srs(即simple random sampling)
proc surveyselect data=sashelp.prdsale n=100 method=srs out=quan;
run;
3、 分层抽样
分层抽样先将总体的单位按某种特征分为若干次级总体(层),然后再从每一层内进行单纯随机抽样,组成一个样本的方法。
Sas代码(1):
proc sort data=sashelp.prdsale out=quan;
by country region;
run;
proc surveyselect data=quan rate=0.1 method=srs out=quan1;
strata country region;
run;
这里有一点要提醒:就是必须先排序。排序后在进行抽样。
总结:
Data步虽然可以做一些抽样工作,但是不如surveyselect简洁、方便。
参考:
几种简单抽样方法的SAS实现–surveyselecthttp://yanyk.dxyer.cn/8215_10/
如何利用SAS进行随机抽样?http://blog.sina.com.cn/s/blog_5fc375650102dszz.html;Sas advance programmingSas编程与商业数据挖掘