SAS - 调查 Select - Select 每层样本量不同

SAS - Survey Select - Selecting Different Sample Size per Stratum

我有一份财务顾问名单,我需要为每个顾问提取 4 个样本,但要注意的是这 4 个样本我需要强制执行 2 笔抵押贷款、1 笔贷款、1 张信用卡。

Survey select 语句中是否有办法设置每层抽取的具体样本数?我知道您可以对 1 个类别进行分层并将其设置为相等的数字。我希望我可以使用员工姓名的映射 + 为每个类别抽取的样本数量,并让调查 select 利用它以动态方式抽取。

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

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

谢谢,我知道这听起来可能很复杂,但如果我知道它可能,那么我可以 google 剩下的

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

  • 包含分层变量以及一个变量SAMPSIZE_NSIZE_,编号为select
  • 与分层变量具有相同的类型和长度
  • 按层变量排序
  • 每个分层变量值都有一个条目

有关详细信息,请参阅 documentation

data sample_counts;
length sex ;
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 ;
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;