%macro halfnorm(dsn,xvars,pprob,dev,n); %do i=1 %to 19; data _gendat_;set &dsn; bern=ranbin(0,1,&pprob); proc logistic data=_gendat_; model bern(descending)=&xvars; output out=s_gendat_ resdev=berndev; run; data _env%eval(&i)_;set s_gendat_;keep berndev%eval(&i); berndev%eval(&i)=abs(berndev); proc sort data=_env%eval(&i)_ out=_env%eval(&i)_;by berndev%eval(&i); proc delete data=s_gendat_; %end; data _env_;merge _env1_ _env2_ _env3_ _env4_ _env5_ _env6_ _env7_ _env8_ _env9_ _env10_ _env11_ _env12_ _env13_ _env14_ _env15_ _env16_ _env17_ _env18_ _env19_; data _dsn_;set &dsn; absdev=abs(&dev); proc sort data=_dsn_ out=_dsn_;by absdev; data _env_;merge _env_ _dsn_; k+1; expval=probit((k+&n-(1/8))/(2*&n+(1/2))); absdev=abs(&dev); min=min(of berndev1-berndev19); max=max(of berndev1-berndev19); mean=mean(of berndev1-berndev19); median=median(of berndev1-berndev19); *keep k expval berndev1-berndev19 &pprob &dev absdev min max mean median; symbol1 i=join v=circle c=red; symbol2 i=join v=circle c=blue; symbol3 i=join v=circle c=green; symbol4 i=join v=circle c=yellow; symbol5 i=none v=dot c=black; proc gplot; plot (min max mean median absdev)*expval/overlay; title "Half Normal probabiliy and simulated envelope- Red=Min, Blue=Max, Green=Mean Yellow=Median Black=Obs"; run; proc delete data= _env1_ _env2_ _env3_ _env4_ _env5_ _env6_ _env7_ _env8_ _env9_ _env10_ _env11_ _env12_ _env13_ _env14_ _env15_ _env16_ _env17_ _env18_ _env19_; /*proc delete data=_env_;run;*/ %mend;