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;
我有一份财务顾问名单,我需要为每个顾问提取 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;