SAS - 调查选择 - 为每个层选择不同的样本量

时间:2017-03-29 20:02:43

标签: sas sampling

我有一份财务顾问名单,我需要为每位顾问提取4个样本,但是我需要强制获得2个抵押贷款,1个贷款,1个信用卡可以说这4个样本。

Survey select语句中是否有一种方法可以设置每层提取的特定样本数?我知道你可以对1个类别进行分层并将其设置为相同的数字。我希望我可以使用员工姓名的映射+每个类别留下的样本数量,并使用调查选择利用它来动态地进行。

我以此为例,但这只是对员工进行分层,每位员工给我4分。我需要进一步对产品类型进行分层,并将其设置为每个产品的特定样本量。

proc surveyselect data=work.Emp_Table_Final
   method=srs n=4 out=work.testsample SELECTALL;
   strata Employee_No;
run;

谢谢我知道这可能听起来很复杂,但如果我知道它可能,那么我可以谷歌休息

1 个答案:

答案 0 :(得分:0)

是的,您可以将数据集作为n选项的目标。该数据集必须:

  • 包含分层变量以及变量SAMPSIZE_NSIZE_以及要选择的数字
  • 与分层变量具有相同的类型和长度
  • 按地层变量排序
  • 为每个分层变量值都有一个条目

有关详细信息,请参阅documentation

data sample_counts;
length sex $1;
input sex $ _NSIZE_;
datalines;
F 5
M 3
;;;;
run;

proc sort data=sashelp.class out=class;
by sex;
run;

proc surveyselect n=sample_counts method=srs out=samples data=class;
strata sex;
run;

对于两个变量它是相同的,你只需要sample_counts中的两个变量。当然,它会使它变得更加复杂,你可能希望以自动化的方式生成它。

proc sort data=sashelp.class out=class;
by sex age;
run;

data sample_counts;
length sex $1;
input sex $ age _NSIZE_;
datalines;
F 11 1
F 12 1
F 13 1
F 14 1
F 15 1
M 11 1
M 12 1
M 13 1
M 14 1
M 15 1
M 16 0
;;;;
run;

/* or do it in an automated way*/

data sample_counts;
  set class;
  by sex age;            *your strata;
  if first.age then do;  *do this once per stratum level;
    if age le 15 then _NSIZE_ = 1;  *whatever your logic is for defining _NSIZE_;
    else _NSIZE_=0;
    output;
  end;
run;



proc surveyselect n=sample_counts method=srs out=samples data=class;
strata sex age;
run;