|
Data defines the model by dint of genetic programming, producing the best decile table.
|
|
Decile Analysis - the Basic Bruce Ratner, Ph.D. |
|
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %let data_in=IN; %let depvar=Y; %let indvars=X1 X2 X3;
data &data_in; input &depvar &indvars wt; cards; 1 63.28405135 -62.89590924 0.31725 1 1 -7.965165127 9.077917498 0.29397 1 1 -40.8721149 41.85990786 0.40705 1 1 108.8084024 -107.6672824 0.25316 1 1 3.071713061 -2.215322147 0.40705 1 1 44.96645653 -44.18664467 0.25316 1 1 2.328170141 -1.89973146 0.24562 1 1 89.08870743 -88.21705972 0.42732 1 1 30.1080088 -29.0253107 0.24562 1 1 -11.14966201 11.97082199 0.25316 1 1 24.6912264 -23.85538734 0.25316 1 1 33.46889223 -32.68556731 0.40705 1 1 51.82377813 -51.4138173 0.40705 1 1 70.28970224 -69.42221865 0.24562 1 1 -95.85890655 97.00002655 0.40705 1 1 77.53692092 -77.19292134 0.26126 1 0 3.309578275 -3.261180349 0.24562 1 0 10.12748375 -9.549172853 0.25316 1 0 -12.88207239 13.97592671 0.29397 1 0 -17.32877567 18.18516658 0.31111 1 0 -70.59773747 71.24695425 0.31111 1 0 43.27915239 -42.13803238 0.24562 1 0 -7.880514668 8.995154718 0.25316 1 0 40.93399103 -40.09173673 0.25316 1 0 81.07550795 -80.35859121 0.24562 1 0 -7.965165127 9.063100546 0.24562 1 0 36.93492473 -35.95553062 0.28211 1 0 23.23610469 -22.80766601 0.25339 1 0 0 1.141120008 0.24562 1 0 0 0.939629385 0.25316 1 0 81.17218438 -80.76633346 0.24562 1 0 21.67949378 -20.97110166 0.24562 1 0 61.36545177 -60.91557128 0.25316 1 0 61.36545177 -60.95549093 0.31725 1 0 77.90838509 -77.58149603 0.28481 1 0 77.90838509 -77.60466917 0.24562 1 0 77.90838509 -77.08023514 0.32738 1 0 16.48495995 -15.88724129 0.40705 1 0 39.74610442 -38.99089853 0.24562 1 0 30.7499237 -29.94045894 0.24562 1 ; run;
proc logistic data=&data_in nosimple des outest=coef; model &depvar = &indvars; freq wt; run;
proc score data=&data_in predict type=parms score=coef out=score; var &indvars; run;
data score; set score; estimate=&depvar.2; run;
data notdot; set score ; if estimate ne .;
proc means data=notdot sum noprint;var wt; output out=samsize (keep=samsize) sum=samsize; run;
data scoresam (drop=samsize); set samsize score; retain n; if _n_=1 then n=samsize; if _n_=1 then delete; run;
proc sort data=scoresam;by descending estimate; run;
data score; set scoresam; if estimate ne . then cum_n+wt; if estimate = . then dec=.; else dec=floor(cum_n*10/(n+1)); run;
proc summary data=score missing;class dec; var &depvar wt; output out=sum_dec sum=sum_can sum_wt;
data sum_dec; set sum_dec; avg_can=sum_can/sum_wt; run;
data avg_rr; set sum_dec; if dec=.; keep avg_can; run;
data sum_dec1; set sum_dec; if dec=. or dec=10 then delete; cum_n +sum_wt; r =sum_can; cum_r +sum_can; cum_rr=(cum_r/cum_n)*100; avg_cann=avg_can*100; run;
data avg_rr; set sum_dec1; if dec=9; keep avg_can; avg_can=cum_rr/100; run;
data scoresam; set avg_rr sum_dec1; retain n; if _n_=1 then n=avg_can; if _n_=1 then delete; lift=(cum_rr/n); if dec=0 then decc=' top '; if dec=1 then decc=' 2 '; if dec=2 then decc=' 3 '; if dec=3 then decc=' 4 '; if dec=4 then decc=' 5 '; if dec=5 then decc=' 6 '; if dec=6 then decc=' 7 '; if dec=7 then decc=' 8 '; if dec=8 then decc=' 9 '; if dec=9 then decc='bottom'; if dec ne .; run;
title1 ' '; title2' Decile Analysis based on '; title3" &depvar (RESPONSE) regressed on &indvars ";
proc print data=scoresam d split='*' noobs; var decc sum_wt r avg_cann cum_rr lift; label decc='DECILE' sum_wt ='NUMBER OF*INDIVIDUALS' r ='NUMBER OF*RESPONDERS' cum_r ='CUM No. CUSTOMERS w/* RESPONSES' avg_cann ='RESPONSE *RATE (%)' cum_rr ='CUM RESPONSE * RATE' lift =' C U M *LIFT (%)' ; sum sum_wt r; format sum_wt r cum_n cum_r comma10.; format avg_cann cum_rr 5.2; format lift 3.0; run;
|
For more information about this article, call Bruce Ratner at 516.791.3544 or 1 800 DM STAT-1; or e-mail at br@dmstat1.com. |
Sign-up for a free GenIQ webcast: Click here. |
|
|