采样SAS

时间:2015-08-25 14:05:15

标签: sas sampling

我是SAS的新手,我继承了一些代码,它从样本框中选择行并将它们作为样本放入另一个数据集中。 758是它采样的行数。 srno似乎是一个简单的序列号系统。

data FinalSample;
   srno=0;
   SampSize = 758; 
   ObsLeft = Totobs;    
   do while (SampSize > 0); 
      PickIt +1;    
      if ranuni(0) < SampSize / ObsLeft then do;    
         set SampleFrame point = PickIt nobs = TotObs;
         srno = srno + 1;   
         output;    
         SampSize = Sampsize - 1;   
      end;  
      ObsLeft = ObsLeft - 1;    
   end; 
   stop;    
run;

在我看来,这只是一个简单的随机样本。是这样的吗?我想知道如果我要进入Proc SurveySelect命令,代码是否更容易理解。

使用method = SRSsamplesize = 758进行调查选择之上的代码会有什么不同吗?

非常感谢,

安迪

1 个答案:

答案 0 :(得分:0)

我相信你的假设是正确的(没有替换的简单随机抽样)。

使用proc surveyselect的主要优点是,它使代码更容易让其他人了解它正在做什么。当然,为什么在内置过程完成同样的事情时编写一长段代码。

您应该对代码进行一次添加是添加种子,以便将来可以在必要时复制相同的结果。将这个放入其中是非常糟糕的做法,例如,您将永远无法使用您发布的代码复制相同的758行。

最后一点,如果您决定坚持使用代码,请考虑从ranuni切换到randRandranuni的更新版本(使用改进的随机数算法),因此SAS可能会支持更长时间。