/* Bootstrap resampling and logistic regression */ data mydata; input BAD VAR1 VAR2 VAR3 GOOD; cards; 1 20 97 2 0 1 20 97 2 0 1 20 97 2 0 1 20 76 1 0 0 30 88 1 1 0 30 88 1 1 0 30 88 1 1 1 10 59 2 0 1 10 59 2 0 1 10 59 2 0 1 10 55 2 0 1 10 55 2 0 1 10 55 2 0 1 10 55 2 0 1 10 55 2 0 1 10 55 2 0 1 20 68 1 0 1 20 68 1 0 1 20 68 1 0 1 20 68 1 0 1 20 68 1 0 1 20 68 1 0 1 20 67 1 0 1 20 67 1 0 1 20 67 1 0 1 20 66 1 0 1 20 66 1 0 1 20 66 1 0 1 30 77 1 0 1 30 77 1 0 1 30 77 1 0 0 30 76 2 1 1 30 76 1 0 1 30 76 1 0 1 30 76 1 0 1 10 49 2 0 1 10 49 2 0 1 10 49 2 0 1 10 49 2 0 1 20 59 2 0 1 20 49 2 0 1 20 49 2 0 1 20 49 2 0 1 10 33 4 0 1 30 59 2 0 1 30 59 2 0 1 30 59 2 0 1 30 59 2 0 0 20 45 5 1 0 20 45 5 1 0 20 45 5 1 0 10 30 3 1 0 10 30 3 1 0 10 30 3 1 0 10 30 3 1 0 10 30 3 1 0 10 30 3 1 0 30 56 2 1 0 30 56 2 1 0 30 56 2 1 1 30 55 2 0 1 30 55 2 0 1 30 55 2 0 1 10 28 2 0 0 10 24 5 1 0 10 24 5 1 0 10 24 5 1 0 10 23 4 1 0 30 49 2 1 0 30 49 2 1 0 30 49 2 1 0 30 49 2 1 0 20 33 4 1 0 20 33 4 1 0 20 33 4 1 0 20 32 5 1 0 20 32 5 1 0 20 32 5 1 0 30 45 5 1 0 30 45 2 1 0 30 45 2 1 0 30 45 2 1 0 20 29 3 1 0 20 29 3 1 0 20 29 3 1 0 20 29 3 1 0 20 29 3 1 0 20 29 3 1 0 20 28 3 1 0 20 28 3 1 0 20 28 3 1 0 20 26 2 1 0 20 26 2 1 0 20 26 2 1 0 20 24 3 1 0 20 24 3 1 0 20 24 3 1 0 20 23 4 1 0 20 23 4 1 0 20 23 4 1 0 20 22 2 1 0 20 21 3 1 0 30 31 2 1 0 30 31 2 1 0 30 31 2 1 0 30 29 3 1 0 30 29 3 1 0 30 29 3 1 0 30 25 4 1 0 30 25 4 1 0 30 25 4 1 0 30 24 3 1 0 30 23 4 1 0 30 23 4 1 0 30 23 4 1 0 30 22 3 1 1 30 22 1 0 0 30 22 3 1 1 30 22 1 0 0 30 22 3 1 1 30 22 1 0 0 30 21 4 1 ; /* THIS PROGRAM WILL CREATE A BOOTSTRAPING DATASET AND RUN A LOGISTIC REGRESSION EACH TIME A DATASET IS CREATED. THE TABLE 'MEANS_ALL' CREATE THE MEANS OF EACH DATASET SINCE EACH DATASET ISN'T SAVED TO A TABLE. THE TABLE 'PARMS' IS CREATED TO HOUSE THE RESULTS OF EACH LOGISTIC REGRESSION. THE PURPOSE OF THIS EXERCISE IS TO COMPUTE A MEASURE OF ACCURACY ON YOU ORIGINAL DATASET FROM A BOOTSTRAPPING PROCESS. */ %macro boot(DATASET,NUMBER); %do i=1 %to &NUMBER; data bootstrap; /* next statement selects new observation wo replacement*/ my_obs_with_replacement=int(ranuni(64387+&i)*totobs)+1; set &DATASET nobs=totobs point=my_obs_with_replacement ; m+1; if m>totobs then stop;/* needed to keep selection process from going whacky */ run; %if i=1 %then %do; proc means noprint; output out=means_all; run; data means_all; retain iter; set means_all; iter=&i; run; %end; %if i>1 %then %do; proc means noprint; output out=mymeans; run; data mymeans; retain iter; set mymeans; iter=&i; run; %end; proc logistic data=bootstrap descending NOPRINT outest=mycoeff; model bad=var1 var2 var3; run; proc append base=parms data=mycoeff; proc append base=means_all data=mymeans; run; %end; %mend; %boot(MYDATA, 10);