如何使用proc surveyselect随机选择样本,而变量需要保持相同的意思?

时间:2015-01-12 23:20:52

标签: sampling sas

我无法使用proc surveyselect从群体中随机选择样本。 这是场景: 我有一个样本池,比方说,1000个观察,具有可变ID,性别,收入。我的目标是随机选择400个样本组成1组,其余组成2组。但是,组1和组2的收入平均值应与样本池中的平均值相同。我还需要第1组和第2组中男性和女性的比例与池中相同。在proc surveyselect(SAS)中有没有办法做到这一点? 任何人都可以共享示例语法吗?

2 个答案:

答案 0 :(得分:1)

您可以通过使用分层语句来控制性别,告诉proc surveyselect分别对每个性别进行抽样,然后为每个性别组合单独的样本。我认为应该可以使用proc stdize根据proc surveyselect和原始数据集的输出重新调整样本平均收入。我现在没有时间提供全部细节,因为这是一个非常复杂的过程,但我认为这是你最好的调查线。

答案 1 :(得分:0)

如果你的收入是(或可以被视为)一个离散变量,你真的只是在谈论在这里使用strata。一个例子:

data population;
  call streaminit(7);
  do _n_ = 1 to 1000;
    if rand('Uniform') > 0.6 then sex='M';
    else sex='F';
    income = ceil(6*rand('Uniform'));
    output;
  end;
run;

proc freq data=population;
  tables sex income;
run;

proc sort data=population;
  by sex income;
run;

proc surveyselect data=population out=sample samprate=0.4 outall;
  strata sex income;
run;

proc sort data=sample;
  by selected;
run;


proc freq data=sample;
  by selected;
  tables sex income;
run;

分别给出了每个性别和收入阶层40%的样本(因此40%的'男性收入= 1'40%的'女性收入= 3'等),这将最终达到您的整体期望分配。

这对于作为连续变量的收入不起作用;您可以尝试在那里使用control,在这种情况下,您不会具有特定的分布,但它仍然应该在球场。

在样本概率与采集整个人口样本和独立控制两个变量方面存在一些差异 - 两个变量中每个桶的40%,而整个人口的样本具有相同收入和性别分组的人可能会有更多的“女性3”而不是“男性3”,但更多的是“男性2”而不是“男性2”。