在 SAS 中,我创建了一个程序,该程序将从数据集中随机获取 50 个观测值,并计算观测值的平均值。
data subset (drop=i samplesize);
samplesize=50;
obsleft=totobs;
do i=1 to samplesize;
obsnum=ceil(ranuni(0)*totobs);
set sashelp.baseball point=obsnum nobs=totobs;
output;
end;
stop;
run;
proc sql;
select mean(nHome) from subset;
quit;
我想编辑代码,以便它将生成 10 个独立的随机样本,而不是一个(我知道 Proc SurveySelect 中的 reps=,但我不应该在这里使用它)。谢谢
k/n 算法选择固定数量的样本,每个样本的概率为 1/n。
%let SEED = 1234;
data mySurveySelection;
retain k 10; drop k;
length select_n_ 8;
set sashelp.baseball nobs=n;
if (ranuni(&SEED) <= k/n) then do;
k = k - 1;
select_n_ = _n_;
output;
end;
n = n - 1;
if n = 0 then stop;
run;
您没有要求证明选择确实是 1/n,所以我不会展示这一点。
SurveySelect
通常用于任何生产级别的研究或代码库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)