郵便番号に比例してサンプリングしたい 600,000 以上の観測データがあります (データ内の郵便番号の数は人口密度に比例します)。データの主要な変数は、ZIP CODE、ID、およびGROUPです。
SAS が郵便番号を選択するときに、そのGROUP内のすべてのレコードを選択するように、既存の SAS コードを修正する必要があります。たとえば、ID=2を選択した場合、 ID=1とID=3も必要です。したがって、すべての郵便番号がGROUP=1にあります。
ID GROUP ZIP
1 1 46227
2 1 46227
3 1 46227
4 2 47620
5 3 47433
6 3 47433
7 3 47433
8 4 46135
9 4 46135
10 5 46202
11 5 46202
12 5 46202
13 5 46202
14 6 46793
15 6 46793
16 7 46202
17 7 46202
18 7 46202
19 8 46409
20 8 46409
21 9 46030
22 9 46030
23 9 46030
24 10 46383
25 10 46383
26 10 46383
データから 1000 個の obs をサンプリングする次の SAS コードがありますが、 GROUP変数を考慮せずに郵便番号をランダムに選択します。
proc freq data=sample;
tables zip / out=outfreq noprint;
run;
data newfreq error; set outfreq;
sampnum=(percent*1000)/100;
_NSIZE_=round(sampnum, 1);
sampnum=round(sampnum, .01);
if _NSIZE_=0 then output error;
if _NSIZE_=0 then delete;
output newfreq;
run;
data newfreq2; set newfreq error;
by zip;
keep zip _NSIZE_;
run;
proc sort data=newfreq2;
by zip;
run;
proc sort data=sample;
by zip;
run;
/* proportional stratified sampling */
proc surveyselect data=sample seed=2020 out=sampout sampsize=newfreq2;
strata zip;
id id zip;
run;
私の問題を明確に説明していることを願っています。そうでない場合は、不明な点を明確にしたり、詳しく説明したりします。
前もって感謝します。