正如我以前强调,利用SQL总结数据,然后结合某些过程里WEIGHT/FREQ STATEMENT的,使得很多过程的速度大为提高。
NOTE: variable ID was created in SQL procedure because GEE model needs ID variable.
京剧
- data have;
- call streaminit(12345);
- array p[3,2,2,2,1] _temporary_( 0.40 0.40 0.2 0.2
- 0.60 0.60 0.2 0.2
- 0.80 0.40 0.4 0.2
- 0.60 0.30 0.4 0.2
- 0.90 0.30 0.6 0.2
- 0.75 0.25 0.6 0.2);
- do rr =1, 2, 3; /*---------true relative risk---*/
- do r =1, 2; /*-------------------allocation---*/
- do sampsize =100, 200, 500; /*sample size---*/
- do rep =1 to 1000; /*--simulation times---*/
- do i =1 to sampsize;
- exposure =rand('bernoulli', 0.5);
- if exposure =1 then strata =rand('tabled', 0.6);
- else if exposure =0 then strata =rand('tabled', 0.4);
- if strata =1 then do;
- if exposure =1 then event =rand('bernoulli', p[rr,r,1,1,1]);
- else if exposure =0 then event =rand('bernoulli', p[rr,r,1,2,1]);
- end;
- else if strata =2 then do;
- if exposure =1 then event =rand('bernoulli', p[rr,r,2,1,1]);
- else if exposure =0 then event =rand('bernoulli', p[rr,r,2,2,1]);
- end;
- output;
- end;
- end;
- end;
- end;
- end;
- run;
- proc sql;
- create table have2 as
- select rr, r, sampsize, rep, strata, exposure, event, count(*) as count, monotonic() as id
- from have
- group by rr, r, sampsize, rep, strata, exposure, event
- order by rr, r, sampsize, rep, strata, exposure desc, event desc;
- quit;
;



雷达卡



京公网安备 11010802022788号







