我是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 = SRS
和samplesize = 758
进行调查选择之上的代码会有什么不同吗?
非常感谢,
安迪
答案 0 :(得分:0)
我相信你的假设是正确的(没有替换的简单随机抽样)。
使用proc surveyselect
的主要优点是,它使代码更容易让其他人了解它正在做什么。当然,为什么在内置过程完成同样的事情时编写一长段代码。
您应该对代码进行一次添加是添加种子,以便将来可以在必要时复制相同的结果。将这个放入其中是非常糟糕的做法,例如,您将永远无法使用您发布的代码复制相同的758行。
最后一点,如果您决定坚持使用代码,请考虑从ranuni
切换到rand
。 Rand
是ranuni
的更新版本(使用改进的随机数算法),因此SAS可能会支持更长时间。