|
Data defines the model by dint of genetic programming, producing the best decile table.
|
|
Decile Analysis - Sales Bruce Ratner, Ph.D. |
|

%let _2vars= Gender_M1 AD_Dollars ; title2' Decile Analysis - SALES based on Predictor Variables:'; title3" &_2vars ";
data IN; input Gender_M1 AD_Dollars SALES; cards; 1 0.64417 14212.99 0 0.05839 908.11 0 0.06754 538.77 1 0.21690 1548.25 1 0.50600 11701.12 0 0.02847 13.70 0 0.26161 1575.19 0 0.29051 1602.65 0 0.04119 528.26 0 0.05310 618.37 1 0.44417 12312.99 0 0.06839 978.11 0 0.07754 738.77 1 0.31690 1348.25 1 0.51600 11901.12 0 0.04847 17.70 0 0.28161 1595.19 0 0.31051 1662.65 0 0.05119 578.26 0 0.06310 698.37 ; run;
data IN; set IN; wt=1; run;
proc reg data=IN outest=coeff; estimate:model SALES = &_2vars ; run;
PROC SCORE data=IN out=score (keep= wt estimate SALES ) predict SCORE=coeff TYPE=PARMS;var &_2vars ; 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 SALES wt; output out=sum_dec sum=sum_SALES sum_wt;
data sum_dec; set sum_dec; avg_SALES=sum_SALES/sum_wt; run;
data avg_fix; set sum_dec; if dec ne .; keep sum_SALES sum_wt;
proc summary data=avg_fix; var sum_SALES sum_wt; output out=fix_dec sum=num_SALES tot_cus; run;
data avg_ss; set fix_dec; avg_SALES=num_SALES/tot_cus; keep avg_SALES; run;
data sum_dec1; set sum_dec; if dec=. or dec=10 then delete; cum_n +sum_wt; s =sum_SALES; cum_s +sum_SALES; cum_ss=(cum_s/cum_n); avg_SALESS=avg_SALES; run;
data scoresam ; set avg_ss sum_dec1; retain n; if _n_=1 then n=avg_SALES; if _n_=1 then delete; lift=(cum_ss/n)*100; 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;
proc print data=scoresam d split='*' noobs; var decc sum_wt s avg_SALESS cum_ss lift; label decc='DECILE' sum_wt ='NUMBER OF*CUSTOMERS' s ='TOTAL*SALES' cum_s ='CUM No. CUSTOMERS w/* SALES' avg_SALESS =' DECILE* MEAN SALES' cum_ss ='DECILE* CUM SALES' lift =' C U M * LIFT ' ; sum sum_wt s; format s dollar14.2; format sum_wt cum_n cum_s comma10.; format avg_SALESS cum_ss dollar10.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. |
|
|