Data defines the model by dint of genetic programming, producing the best decile table.


Decile Analysis - Sales
 Bruce Ratner, Ph.D.
Live chat by Boldchat
Live chat by Boldchat


dec-sales

%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.