SAS-调查选择-根据地层选择不同的样本量

SAS-调查选择-根据地层选择不同的样本量,sas,sampling,Sas,Sampling,我有一份财务顾问的名单,我需要每个顾问抽取4个样本,但在这4个样本中,我需要强制执行2个抵押贷款,1个贷款,1个信用卡 在“调查选择”语句中是否有方法设置每个地层要抽取的具体样本数?我知道你可以对一个类别进行分层,并将其设置为一个相等的数字。我希望我可以使用员工姓名+每个类别剩余样本数的映射,并让调查选择以动态方式利用该映射 我用这个作为例子,但这只是对员工的第一个层次,给我每个员工4个。我需要进一步对产品类型进行分层,并将其设置为每个产品的特定样本量 proc surveyselect dat

我有一份财务顾问的名单,我需要每个顾问抽取4个样本,但在这4个样本中,我需要强制执行2个抵押贷款,1个贷款,1个信用卡

在“调查选择”语句中是否有方法设置每个地层要抽取的具体样本数?我知道你可以对一个类别进行分层,并将其设置为一个相等的数字。我希望我可以使用员工姓名+每个类别剩余样本数的映射,并让调查选择以动态方式利用该映射

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

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

谢谢,我知道这听起来可能很复杂,但如果我知道这是可能的,那么我可以在谷歌上搜索其余的

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

  • 包含地层变量以及变量
    SAMPSIZE
    \NSIZE
    ,以及要选择的数字
  • 具有与地层变量相同的类型和长度
  • 按地层变量排序
  • 每个层变量值都有一个条目
有关更多详细信息,请参阅

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;
对于两个变量,它是相同的,在样本计数中只需要两个变量。当然,这会使它变得更加复杂,而且你可能希望以自动化的方式制作它

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;

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

  • 包含地层变量以及变量
    SAMPSIZE
    \NSIZE
    ,以及要选择的数字
  • 具有与地层变量相同的类型和长度
  • 按地层变量排序
  • 每个层变量值都有一个条目
有关更多详细信息,请参阅

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;
对于两个变量,它是相同的,在样本计数中只需要两个变量。当然,这会使它变得更加复杂,而且你可能希望以自动化的方式制作它

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;

感谢您为产品选择提供的帮助。现在我如何对两个变量进行分层?首先必须是贷款人,然后是你发布的产品。如果我只使用上述方法,我将不得不将数据集拆分为每个贷款人的1个数据集,以完成我需要做的事情。@mitoKon将两个变量分层与将一个变量分层相同-只需使用两个变量。嗨,Joe,谢谢你的帮助。解决了我所有的问题。感谢这有助于产品选择。现在我如何对两个变量进行分层?首先必须是贷款人,然后是你发布的产品。如果我只使用上述方法,我将不得不将数据集拆分为每个贷款人的1个数据集,以完成我需要做的事情。@mitoKon将两个变量分层与将一个变量分层相同-只需使用两个变量。嗨,Joe,谢谢你的帮助。解决了我所有的问题。