本帖最后由 bxfly 于 2014-4-15 12:47 编辑  
 
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.prdsale n=100 method=sys out=quan;  run;  
2、         简单抽样 sas代码(1): data quan2;    set sashelp.prdsale nobs=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; 这里有一点要提醒:就是必须先排序。排序后在进行抽样。 4、bootstrap 方法 Bootstrap的思想,是生成一系列bootstrap伪样本,每个样本是初始数据有放回抽样。通过对伪样本的计算,获得统计量的分布。例如,要进行1000次bootstrap,求平均值的置信区间,可以对每个伪样本计算平均值。这样就获得了1000个平均值。对着1000个平均值的分位数进行计算,即可获得置信区间。已经证明,在初始样本足够大的情况下,bootstrap抽样能够无偏得接近总体的分布。 有关bootstrap sas代码可见: http://www.lexjansen.com/phuse/2005/pk/pk02.pdf  
 
  
总结: 
Data步虽然可以做一些抽样工作,但是不如surveyselect简洁、方便。 
  
参考: 
几种简单抽样方法的SAS实现–surveyselect http://yanyk.dxyer.cn/8215_10/ 
如何利用SAS进行随机抽样?http://blog.sina.com.cn/s/blog_5fc375650102dszz.htmlSas advance programming 
Sas编程与商业数据挖掘 
 
 
 |