proc split data=EMDATA.VIEW_146 criterion=chisq leafsize=298 outtree=outtree excludemiss; input CLAGE/level=interval; target BAD/level=binary; run; data grouped(keep = CLAGE BAD GRP_CLAGE dmign_resp dmign_nresp dmign_indet _weighted_frequency_ ); set varSummary; dmign_resp = 0; dmign_nresp = 0; dmign_indet = 0; if BAD = 1 then dmign_resp = _weighted_frequency_; else if BAD = 0 then dmign_nresp = _weighted_frequency_; else dmign_indet = _weighted_frequency_; if CLAGE = . then GRP_CLAGE = -1; else if CLAGE LT 71 then GRP_CLAGE = 1; else if CLAGE LT 92 then GRP_CLAGE = 2; else if CLAGE LT 112 then GRP_CLAGE = 3; else if CLAGE LT 121 then GRP_CLAGE = 4; else if CLAGE LT 130 then GRP_CLAGE = 5; else if CLAGE LT 150 then GRP_CLAGE = 6; else if CLAGE LT 173 then GRP_CLAGE = 7; else if CLAGE LT 189 then GRP_CLAGE = 8; else if CLAGE LT 201 then GRP_CLAGE = 9; else if CLAGE LT 214 then GRP_CLAGE = 10; else if CLAGE LT 240 then GRP_CLAGE = 11; else if CLAGE LT 262 then GRP_CLAGE = 12; else if CLAGE LT 311 then GRP_CLAGE = 13; else GRP_CLAGE = 14; run; proc means data=grouped(keep=GRP_CLAGE dmign_resp dmign_nresp dmign_indet ) noprint missing; var dmign_resp dmign_nresp dmign_indet ; class GRP_CLAGE; output out=summ sum=dmign_resp dmign_nresp dmign_indet ; run; data infoval(keep=infoval) gini(keep=dmign_resp dmign_nresp groupresprate) stats(keep=GRP_CLAGE dmign_resp dmign_nresp dmign_indet wtev groupresprate ); if _n_=1 then set summ(keep=dmign_resp dmign_nresp rename=(dmign_resp=totresp dmign_nresp=totnresp)); set summ(where=(_type_ = 1) keep=GRP_CLAGE dmign_resp dmign_nresp dmign_indet _type_ ) end=lastobs; respper = dmign_resp / totresp; nrespper = dmign_nresp / totnresp; if ((dmign_resp = 0) OR (dmign_nresp = 0)) then wtev = log(((dmign_nresp + 0.5) * totresp) / ((dmign_resp + 0.5) / totnresp)); else wtev = log(nrespper / respper); infoval + ((nrespper - respper) * wtev); groupresprate = dmign_resp / (dmign_resp + dmign_nresp) * 100; output gini stats; if lastobs then output infoval; format wtev 8.5; format groupresprate 6.2; run; proc sort data=gini nothreads; by descending groupresprate; run; data gini(keep=gini); set gini(keep=dmign_resp dmign_nresp) end=lastobs; between + 2 * cumnresp * dmign_resp; within + dmign_nresp * dmign_resp; cumresp + dmign_resp; cumnresp + dmign_nresp; if lastobs then do; gini = 100 * (1 - (within + between) / (cumnresp * cumresp)); output; end; run; proc split data=EMDATA.VIEW_146 criterion=chisq leafsize=298 outtree=outtree excludemiss; input CLNO/level=interval; target BAD/level=binary; run; data grouped(keep = CLNO BAD GRP_CLNO dmign_resp dmign_nresp dmign_indet _weighted_frequency_ ); set varSummary; dmign_resp = 0; dmign_nresp = 0; dmign_indet = 0; if BAD = 1 then dmign_resp = _weighted_frequency_; else if BAD = 0 then dmign_nresp = _weighted_frequency_; else dmign_indet = _weighted_frequency_; if CLNO = . then GRP_CLNO = -1; else if CLNO LT 10 then GRP_CLNO = 1; else if CLNO LT 13 then GRP_CLNO = 2; else if CLNO LT 15 then GRP_CLNO = 3; else if CLNO LT 17 then GRP_CLNO = 4; else if CLNO LT 21 then GRP_CLNO = 5; else if CLNO LT 24 then GRP_CLNO = 6; else if CLNO LT 27 then GRP_CLNO = 7; else if CLNO LT 30 then GRP_CLNO = 8; else if CLNO LT 33 then GRP_CLNO = 9; else if CLNO LT 39 then GRP_CLNO = 10; else GRP_CLNO = 11; run; proc means data=grouped(keep=GRP_CLNO dmign_resp dmign_nresp dmign_indet ) noprint missing; var dmign_resp dmign_nresp dmign_indet ; class GRP_CLNO; output out=summ sum=dmign_resp dmign_nresp dmign_indet ; run; data infoval(keep=infoval) gini(keep=dmign_resp dmign_nresp groupresprate) stats(keep=GRP_CLNO dmign_resp dmign_nresp dmign_indet wtev groupresprate ); if _n_=1 then set summ(keep=dmign_resp dmign_nresp rename=(dmign_resp=totresp dmign_nresp=totnresp)); set summ(where=(_type_ = 1) keep=GRP_CLNO dmign_resp dmign_nresp dmign_indet _type_ ) end=lastobs; respper = dmign_resp / totresp; nrespper = dmign_nresp / totnresp; if ((dmign_resp = 0) OR (dmign_nresp = 0)) then wtev = log(((dmign_nresp + 0.5) * totresp) / ((dmign_resp + 0.5) / totnresp)); else wtev = log(nrespper / respper); infoval + ((nrespper - respper) * wtev); groupresprate = dmign_resp / (dmign_resp + dmign_nresp) * 100; output gini stats; if lastobs then output infoval; format wtev 8.5; format groupresprate 6.2; run; proc sort data=gini nothreads; by descending groupresprate; run; data gini(keep=gini); set gini(keep=dmign_resp dmign_nresp) end=lastobs; between + 2 * cumnresp * dmign_resp; within + dmign_nresp * dmign_resp; cumresp + dmign_resp; cumnresp + dmign_nresp; if lastobs then do; gini = 100 * (1 - (within + between) / (cumnresp * cumresp)); output; end; run; proc split data=EMDATA.VIEW_146 criterion=chisq leafsize=298 outtree=outtree excludemiss; input DEBTINC/level=interval; target BAD/level=binary; run; data grouped(keep = DEBTINC BAD GRP_DEBTINC dmign_resp dmign_nresp dmign_indet _weighted_frequency_ ); set varSummary; dmign_resp = 0; dmign_nresp = 0; dmign_indet = 0; if BAD = 1 then dmign_resp = _weighted_frequency_; else if BAD = 0 then dmign_nresp = _weighted_frequency_; else dmign_indet = _weighted_frequency_; if DEBTINC = . then GRP_DEBTINC = -1; else if DEBTINC LT 23 then GRP_DEBTINC = 1; else if DEBTINC LT 26 then GRP_DEBTINC = 2; else if DEBTINC LT 29 then GRP_DEBTINC = 3; else if DEBTINC LT 31 then GRP_DEBTINC = 4; else if DEBTINC LT 33 then GRP_DEBTINC = 5; else if DEBTINC LT 34 then GRP_DEBTINC = 6; else if DEBTINC LT 36 then GRP_DEBTINC = 7; else if DEBTINC LT 38 then GRP_DEBTINC = 8; else if DEBTINC LT 39 then GRP_DEBTINC = 9; else if DEBTINC LT 40 then GRP_DEBTINC = 10; else if DEBTINC LT 42 then GRP_DEBTINC = 11; else GRP_DEBTINC = 12; run; proc means data=grouped(keep=GRP_DEBTINC dmign_resp dmign_nresp dmign_indet ) noprint missing; var dmign_resp dmign_nresp dmign_indet ; class GRP_DEBTINC; output out=summ sum=dmign_resp dmign_nresp dmign_indet ; run; data infoval(keep=infoval) gini(keep=dmign_resp dmign_nresp groupresprate) stats(keep=GRP_DEBTINC dmign_resp dmign_nresp dmign_indet wtev groupresprate ); if _n_=1 then set summ(keep=dmign_resp dmign_nresp rename=(dmign_resp=totresp dmign_nresp=totnresp)); set summ(where=(_type_ = 1) keep=GRP_DEBTINC dmign_resp dmign_nresp dmign_indet _type_ ) end=lastobs; respper = dmign_resp / totresp; nrespper = dmign_nresp / totnresp; if ((dmign_resp = 0) OR (dmign_nresp = 0)) then wtev = log(((dmign_nresp + 0.5) * totresp) / ((dmign_resp + 0.5) / totnresp)); else wtev = log(nrespper / respper); infoval + ((nrespper - respper) * wtev); groupresprate = dmign_resp / (dmign_resp + dmign_nresp) * 100; output gini stats; if lastobs then output infoval; format wtev 8.5; format groupresprate 6.2; run; proc sort data=gini nothreads; by descending groupresprate; run; data gini(keep=gini); set gini(keep=dmign_resp dmign_nresp) end=lastobs; between + 2 * cumnresp * dmign_resp; within + dmign_nresp * dmign_resp; cumresp + dmign_resp; cumnresp + dmign_nresp; if lastobs then do; gini = 100 * (1 - (within + between) / (cumnresp * cumresp)); output; end; run; proc split data=EMDATA.VIEW_146 criterion=chisq leafsize=298 outtree=outtree excludemiss; input DELINQ/level=interval; target BAD/level=binary; run; data grouped(keep = DELINQ BAD GRP_DELINQ dmign_resp dmign_nresp dmign_indet _weighted_frequency_ ); set varSummary; dmign_resp = 0; dmign_nresp = 0; dmign_indet = 0; if BAD = 1 then dmign_resp = _weighted_frequency_; else if BAD = 0 then dmign_nresp = _weighted_frequency_; else dmign_indet = _weighted_frequency_; if DELINQ = . then GRP_DELINQ = -1; else if DELINQ LT 1 then GRP_DELINQ = 1; else if DELINQ LT 2 then GRP_DELINQ = 2; else GRP_DELINQ = 3; run; proc means data=grouped(keep=GRP_DELINQ dmign_resp dmign_nresp dmign_indet ) noprint missing; var dmign_resp dmign_nresp dmign_indet ; class GRP_DELINQ; output out=summ sum=dmign_resp dmign_nresp dmign_indet ; run; data infoval(keep=infoval) gini(keep=dmign_resp dmign_nresp groupresprate) stats(keep=GRP_DELINQ dmign_resp dmign_nresp dmign_indet wtev groupresprate ); if _n_=1 then set summ(keep=dmign_resp dmign_nresp rename=(dmign_resp=totresp dmign_nresp=totnresp)); set summ(where=(_type_ = 1) keep=GRP_DELINQ dmign_resp dmign_nresp dmign_indet _type_ ) end=lastobs; respper = dmign_resp / totresp; nrespper = dmign_nresp / totnresp; if ((dmign_resp = 0) OR (dmign_nresp = 0)) then wtev = log(((dmign_nresp + 0.5) * totresp) / ((dmign_resp + 0.5) / totnresp)); else wtev = log(nrespper / respper); infoval + ((nrespper - respper) * wtev); groupresprate = dmign_resp / (dmign_resp + dmign_nresp) * 100; output gini stats; if lastobs then output infoval; format wtev 8.5; format groupresprate 6.2; run; proc sort data=gini nothreads; by descending groupresprate; run; data gini(keep=gini); set gini(keep=dmign_resp dmign_nresp) end=lastobs; between + 2 * cumnresp * dmign_resp; within + dmign_nresp * dmign_resp; cumresp + dmign_resp; cumnresp + dmign_nresp; if lastobs then do; gini = 100 * (1 - (within + between) / (cumnresp * cumresp)); output; end; run; proc split data=EMDATA.VIEW_146 criterion=chisq leafsize=298 outtree=outtree excludemiss; input DEROG/level=ordinal; target BAD/level=binary; run; data grouped(keep = DEROG BAD GRP_DEROG dmign_resp dmign_nresp dmign_indet _weighted_frequency_ ); set varSummary; dmign_resp = 0; dmign_nresp = 0; dmign_indet = 0; if BAD = 1 then dmign_resp = _weighted_frequency_; else if BAD = 0 then dmign_nresp = _weighted_frequency_; else dmign_indet = _weighted_frequency_; if DEROG = . then GRP_DEROG = -1; else if trim(left(put(DEROG, BEST12.))) LE "1" then GRP_DEROG = 1; else GRP_DEROG = 2; run; proc means data=grouped(keep=GRP_DEROG dmign_resp dmign_nresp dmign_indet ) noprint missing; var dmign_resp dmign_nresp dmign_indet ; class GRP_DEROG; output out=summ sum=dmign_resp dmign_nresp dmign_indet ; run; data infoval(keep=infoval) gini(keep=dmign_resp dmign_nresp groupresprate) stats(keep=GRP_DEROG dmign_resp dmign_nresp dmign_indet wtev groupresprate ); if _n_=1 then set summ(keep=dmign_resp dmign_nresp rename=(dmign_resp=totresp dmign_nresp=totnresp)); set summ(where=(_type_ = 1) keep=GRP_DEROG dmign_resp dmign_nresp dmign_indet _type_ ) end=lastobs; respper = dmign_resp / totresp; nrespper = dmign_nresp / totnresp; if ((dmign_resp = 0) OR (dmign_nresp = 0)) then wtev = log(((dmign_nresp + 0.5) * totresp) / ((dmign_resp + 0.5) / totnresp)); else wtev = log(nrespper / respper); infoval + ((nrespper - respper) * wtev); groupresprate = dmign_resp / (dmign_resp + dmign_nresp) * 100; output gini stats; if lastobs then output infoval; format wtev 8.5; format groupresprate 6.2; run; proc sort data=gini nothreads; by descending groupresprate; run; data gini(keep=gini); set gini(keep=dmign_resp dmign_nresp) end=lastobs; between + 2 * cumnresp * dmign_resp; within + dmign_nresp * dmign_resp; cumresp + dmign_resp; cumnresp + dmign_nresp; if lastobs then do; gini = 100 * (1 - (within + between) / (cumnresp * cumresp)); output; end; run; proc split data=EMDATA.VIEW_146 criterion=chisq leafsize=298 outtree=outtree excludemiss; input JOB/level=nominal; target BAD/level=binary; run; data grouped(keep = JOB BAD GRP_JOB dmign_resp dmign_nresp dmign_indet _weighted_frequency_ ); set varSummary; dmign_resp = 0; dmign_nresp = 0; dmign_indet = 0; if BAD = 1 then dmign_resp = _weighted_frequency_; else if BAD = 0 then dmign_nresp = _weighted_frequency_; else dmign_indet = _weighted_frequency_; if JOB = "" then GRP_JOB = -1; else if trim(left(put(JOB, $7.))) = "Sales" then GRP_JOB = 1; else if trim(left(put(JOB, $7.))) = "Self" then GRP_JOB = 1; else if trim(left(put(JOB, $7.))) = "Other" then GRP_JOB = 2; else if trim(left(put(JOB, $7.))) = "Mgr" then GRP_JOB = 3; else if trim(left(put(JOB, $7.))) = "ProfExe" then GRP_JOB = 4; else if trim(left(put(JOB, $7.))) = "Office" then GRP_JOB = 5; else GRP_JOB = 6; run; proc means data=grouped(keep=GRP_JOB dmign_resp dmign_nresp dmign_indet ) noprint missing; var dmign_resp dmign_nresp dmign_indet ; class GRP_JOB; output out=summ sum=dmign_resp dmign_nresp dmign_indet ; run; data infoval(keep=infoval) gini(keep=dmign_resp dmign_nresp groupresprate) stats(keep=GRP_JOB dmign_resp dmign_nresp dmign_indet wtev groupresprate ); if _n_=1 then set summ(keep=dmign_resp dmign_nresp rename=(dmign_resp=totresp dmign_nresp=totnresp)); set summ(where=(_type_ = 1) keep=GRP_JOB dmign_resp dmign_nresp dmign_indet _type_ ) end=lastobs; respper = dmign_resp / totresp; nrespper = dmign_nresp / totnresp; if ((dmign_resp = 0) OR (dmign_nresp = 0)) then wtev = log(((dmign_nresp + 0.5) * totresp) / ((dmign_resp + 0.5) / totnresp)); else wtev = log(nrespper / respper); infoval + ((nrespper - respper) * wtev); groupresprate = dmign_resp / (dmign_resp + dmign_nresp) * 100; output gini stats; if lastobs then output infoval; format wtev 8.5; format groupresprate 6.2; run; proc sort data=gini nothreads; by descending groupresprate; run; data gini(keep=gini); set gini(keep=dmign_resp dmign_nresp) end=lastobs; between + 2 * cumnresp * dmign_resp; within + dmign_nresp * dmign_resp; cumresp + dmign_resp; cumnresp + dmign_nresp; if lastobs then do; gini = 100 * (1 - (within + between) / (cumnresp * cumresp)); output; end; run; proc split data=EMDATA.VIEW_146 criterion=chisq leafsize=298 outtree=outtree excludemiss; input LOAN/level=interval; target BAD/level=binary; run; data grouped(keep = LOAN BAD GRP_LOAN dmign_resp dmign_nresp dmign_indet _weighted_frequency_ ); set varSummary; dmign_resp = 0; dmign_nresp = 0; dmign_indet = 0; if BAD = 1 then dmign_resp = _weighted_frequency_; else if BAD = 0 then dmign_nresp = _weighted_frequency_; else dmign_indet = _weighted_frequency_; if LOAN LT 6050 then GRP_LOAN = 1; else if LOAN LT 8750 then GRP_LOAN = 2; else if LOAN LT 10050 then GRP_LOAN = 3; else if LOAN LT 11450 then GRP_LOAN = 4; else if LOAN LT 12650 then GRP_LOAN = 5; else if LOAN LT 13950 then GRP_LOAN = 6; else if LOAN LT 15050 then GRP_LOAN = 7; else if LOAN LT 21050 then GRP_LOAN = 8; else if LOAN LT 23450 then GRP_LOAN = 9; else if LOAN LT 25050 then GRP_LOAN = 10; else if LOAN LT 27650 then GRP_LOAN = 11; else if LOAN LT 37950 then GRP_LOAN = 12; else GRP_LOAN = 13; run; proc means data=grouped(keep=GRP_LOAN dmign_resp dmign_nresp dmign_indet ) noprint missing; var dmign_resp dmign_nresp dmign_indet ; class GRP_LOAN; output out=summ sum=dmign_resp dmign_nresp dmign_indet ; run; data infoval(keep=infoval) gini(keep=dmign_resp dmign_nresp groupresprate) stats(keep=GRP_LOAN dmign_resp dmign_nresp dmign_indet wtev groupresprate ); if _n_=1 then set summ(keep=dmign_resp dmign_nresp rename=(dmign_resp=totresp dmign_nresp=totnresp)); set summ(where=(_type_ = 1) keep=GRP_LOAN dmign_resp dmign_nresp dmign_indet _type_ ) end=lastobs; respper = dmign_resp / totresp; nrespper = dmign_nresp / totnresp; if ((dmign_resp = 0) OR (dmign_nresp = 0)) then wtev = log(((dmign_nresp + 0.5) * totresp) / ((dmign_resp + 0.5) / totnresp)); else wtev = log(nrespper / respper); infoval + ((nrespper - respper) * wtev); groupresprate = dmign_resp / (dmign_resp + dmign_nresp) * 100; output gini stats; if lastobs then output infoval; format wtev 8.5; format groupresprate 6.2; run; proc sort data=gini nothreads; by descending groupresprate; run; data gini(keep=gini); set gini(keep=dmign_resp dmign_nresp) end=lastobs; between + 2 * cumnresp * dmign_resp; within + dmign_nresp * dmign_resp; cumresp + dmign_resp; cumnresp + dmign_nresp; if lastobs then do; gini = 100 * (1 - (within + between) / (cumnresp * cumresp)); output; end; run; proc split data=EMDATA.VIEW_146 criterion=chisq leafsize=298 outtree=outtree excludemiss; input MORTDUE/level=interval; target BAD/level=binary; run; data grouped(keep = MORTDUE BAD GRP_MORTDUE dmign_resp dmign_nresp dmign_indet _weighted_frequency_ ); set varSummary; dmign_resp = 0; dmign_nresp = 0; dmign_indet = 0; if BAD = 1 then dmign_resp = _weighted_frequency_; else if BAD = 0 then dmign_nresp = _weighted_frequency_; else dmign_indet = _weighted_frequency_; if MORTDUE = . then GRP_MORTDUE = -1; else if MORTDUE LT 23934 then GRP_MORTDUE = 1; else if MORTDUE LT 35010 then GRP_MORTDUE = 2; else if MORTDUE LT 42369 then GRP_MORTDUE = 3; else if MORTDUE LT 47567 then GRP_MORTDUE = 4; else if MORTDUE LT 55072 then GRP_MORTDUE = 5; else if MORTDUE LT 59985 then GRP_MORTDUE = 6; else if MORTDUE LT 64313 then GRP_MORTDUE = 7; else if MORTDUE LT 70151 then GRP_MORTDUE = 8; else if MORTDUE LT 89203 then GRP_MORTDUE = 9; else if MORTDUE LT 104655 then GRP_MORTDUE = 10; else if MORTDUE LT 124070 then GRP_MORTDUE = 11; else if MORTDUE LT 147149 then GRP_MORTDUE = 12; else GRP_MORTDUE = 13; run; proc means data=grouped(keep=GRP_MORTDUE dmign_resp dmign_nresp dmign_indet ) noprint missing; var dmign_resp dmign_nresp dmign_indet ; class GRP_MORTDUE; output out=summ sum=dmign_resp dmign_nresp dmign_indet ; run; data infoval(keep=infoval) gini(keep=dmign_resp dmign_nresp groupresprate) stats(keep=GRP_MORTDUE dmign_resp dmign_nresp dmign_indet wtev groupresprate ); if _n_=1 then set summ(keep=dmign_resp dmign_nresp rename=(dmign_resp=totresp dmign_nresp=totnresp)); set summ(where=(_type_ = 1) keep=GRP_MORTDUE dmign_resp dmign_nresp dmign_indet _type_ ) end=lastobs; respper = dmign_resp / totresp; nrespper = dmign_nresp / totnresp; if ((dmign_resp = 0) OR (dmign_nresp = 0)) then wtev = log(((dmign_nresp + 0.5) * totresp) / ((dmign_resp + 0.5) / totnresp)); else wtev = log(nrespper / respper); infoval + ((nrespper - respper) * wtev); groupresprate = dmign_resp / (dmign_resp + dmign_nresp) * 100; output gini stats; if lastobs then output infoval; format wtev 8.5; format groupresprate 6.2; run; proc sort data=gini nothreads; by descending groupresprate; run; data gini(keep=gini); set gini(keep=dmign_resp dmign_nresp) end=lastobs; between + 2 * cumnresp * dmign_resp; within + dmign_nresp * dmign_resp; cumresp + dmign_resp; cumnresp + dmign_nresp; if lastobs then do; gini = 100 * (1 - (within + between) / (cumnresp * cumresp)); output; end; run; proc split data=EMDATA.VIEW_146 criterion=chisq leafsize=298 outtree=outtree excludemiss; input NINQ/level=interval; target BAD/level=binary; run; data grouped(keep = NINQ BAD GRP_NINQ dmign_resp dmign_nresp dmign_indet _weighted_frequency_ ); set varSummary; dmign_resp = 0; dmign_nresp = 0; dmign_indet = 0; if BAD = 1 then dmign_resp = _weighted_frequency_; else if BAD = 0 then dmign_nresp = _weighted_frequency_; else dmign_indet = _weighted_frequency_; if NINQ = . then GRP_NINQ = -1; else if NINQ LT 1 then GRP_NINQ = 1; else if NINQ LT 2 then GRP_NINQ = 2; else if NINQ LT 3 then GRP_NINQ = 3; else if NINQ LT 4 then GRP_NINQ = 4; else GRP_NINQ = 5; run; proc means data=grouped(keep=GRP_NINQ dmign_resp dmign_nresp dmign_indet ) noprint missing; var dmign_resp dmign_nresp dmign_indet ; class GRP_NINQ; output out=summ sum=dmign_resp dmign_nresp dmign_indet ; run; data infoval(keep=infoval) gini(keep=dmign_resp dmign_nresp groupresprate) stats(keep=GRP_NINQ dmign_resp dmign_nresp dmign_indet wtev groupresprate ); if _n_=1 then set summ(keep=dmign_resp dmign_nresp rename=(dmign_resp=totresp dmign_nresp=totnresp)); set summ(where=(_type_ = 1) keep=GRP_NINQ dmign_resp dmign_nresp dmign_indet _type_ ) end=lastobs; respper = dmign_resp / totresp; nrespper = dmign_nresp / totnresp; if ((dmign_resp = 0) OR (dmign_nresp = 0)) then wtev = log(((dmign_nresp + 0.5) * totresp) / ((dmign_resp + 0.5) / totnresp)); else wtev = log(nrespper / respper); infoval + ((nrespper - respper) * wtev); groupresprate = dmign_resp / (dmign_resp + dmign_nresp) * 100; output gini stats; if lastobs then output infoval; format wtev 8.5; format groupresprate 6.2; run; proc sort data=gini nothreads; by descending groupresprate; run; data gini(keep=gini); set gini(keep=dmign_resp dmign_nresp) end=lastobs; between + 2 * cumnresp * dmign_resp; within + dmign_nresp * dmign_resp; cumresp + dmign_resp; cumnresp + dmign_nresp; if lastobs then do; gini = 100 * (1 - (within + between) / (cumnresp * cumresp)); output; end; run; proc split data=EMDATA.VIEW_146 criterion=chisq leafsize=298 outtree=outtree excludemiss; input REASON/level=nominal; target BAD/level=binary; run; data grouped(keep = REASON BAD GRP_REASON dmign_resp dmign_nresp dmign_indet _weighted_frequency_ ); set varSummary; dmign_resp = 0; dmign_nresp = 0; dmign_indet = 0; if BAD = 1 then dmign_resp = _weighted_frequency_; else if BAD = 0 then dmign_nresp = _weighted_frequency_; else dmign_indet = _weighted_frequency_; if REASON = "" then GRP_REASON = -1; else if trim(left(put(REASON, $7.))) = "HomeImp" then GRP_REASON = 1; else if trim(left(put(REASON, $7.))) = "DebtCon" then GRP_REASON = 2; else GRP_REASON = 3; run; proc means data=grouped(keep=GRP_REASON dmign_resp dmign_nresp dmign_indet ) noprint missing; var dmign_resp dmign_nresp dmign_indet ; class GRP_REASON; output out=summ sum=dmign_resp dmign_nresp dmign_indet ; run; data infoval(keep=infoval) gini(keep=dmign_resp dmign_nresp groupresprate) stats(keep=GRP_REASON dmign_resp dmign_nresp dmign_indet wtev groupresprate ); if _n_=1 then set summ(keep=dmign_resp dmign_nresp rename=(dmign_resp=totresp dmign_nresp=totnresp)); set summ(where=(_type_ = 1) keep=GRP_REASON dmign_resp dmign_nresp dmign_indet _type_ ) end=lastobs; respper = dmign_resp / totresp; nrespper = dmign_nresp / totnresp; if ((dmign_resp = 0) OR (dmign_nresp = 0)) then wtev = log(((dmign_nresp + 0.5) * totresp) / ((dmign_resp + 0.5) / totnresp)); else wtev = log(nrespper / respper); infoval + ((nrespper - respper) * wtev); groupresprate = dmign_resp / (dmign_resp + dmign_nresp) * 100; output gini stats; if lastobs then output infoval; format wtev 8.5; format groupresprate 6.2; run; proc sort data=gini nothreads; by descending groupresprate; run; data gini(keep=gini); set gini(keep=dmign_resp dmign_nresp) end=lastobs; between + 2 * cumnresp * dmign_resp; within + dmign_nresp * dmign_resp; cumresp + dmign_resp; cumnresp + dmign_nresp; if lastobs then do; gini = 100 * (1 - (within + between) / (cumnresp * cumresp)); output; end; run; proc split data=EMDATA.VIEW_146 criterion=chisq leafsize=298 outtree=outtree excludemiss; input VALUE/level=interval; target BAD/level=binary; run; data grouped(keep = VALUE BAD GRP_VALUE dmign_resp dmign_nresp dmign_indet _weighted_frequency_ ); set varSummary; dmign_resp = 0; dmign_nresp = 0; dmign_indet = 0; if BAD = 1 then dmign_resp = _weighted_frequency_; else if BAD = 0 then dmign_nresp = _weighted_frequency_; else dmign_indet = _weighted_frequency_; if VALUE = . then GRP_VALUE = -1; else if VALUE LT 47504 then GRP_VALUE = 1; else if VALUE LT 60033 then GRP_VALUE = 2; else if VALUE LT 65512 then GRP_VALUE = 3; else if VALUE LT 71684 then GRP_VALUE = 4; else if VALUE LT 78048 then GRP_VALUE = 5; else if VALUE LT 86410 then GRP_VALUE = 6; else if VALUE LT 92908 then GRP_VALUE = 7; else if VALUE LT 104626 then GRP_VALUE = 8; else if VALUE LT 114209 then GRP_VALUE = 9; else if VALUE LT 124946 then GRP_VALUE = 10; else if VALUE LT 140392 then GRP_VALUE = 11; else if VALUE LT 172299 then GRP_VALUE = 12; else if VALUE LT 202928 then GRP_VALUE = 13; else GRP_VALUE = 14; run; proc means data=grouped(keep=GRP_VALUE dmign_resp dmign_nresp dmign_indet ) noprint missing; var dmign_resp dmign_nresp dmign_indet ; class GRP_VALUE; output out=summ sum=dmign_resp dmign_nresp dmign_indet ; run; data infoval(keep=infoval) gini(keep=dmign_resp dmign_nresp groupresprate) stats(keep=GRP_VALUE dmign_resp dmign_nresp dmign_indet wtev groupresprate ); if _n_=1 then set summ(keep=dmign_resp dmign_nresp rename=(dmign_resp=totresp dmign_nresp=totnresp)); set summ(where=(_type_ = 1) keep=GRP_VALUE dmign_resp dmign_nresp dmign_indet _type_ ) end=lastobs; respper = dmign_resp / totresp; nrespper = dmign_nresp / totnresp; if ((dmign_resp = 0) OR (dmign_nresp = 0)) then wtev = log(((dmign_nresp + 0.5) * totresp) / ((dmign_resp + 0.5) / totnresp)); else wtev = log(nrespper / respper); infoval + ((nrespper - respper) * wtev); groupresprate = dmign_resp / (dmign_resp + dmign_nresp) * 100; output gini stats; if lastobs then output infoval; format wtev 8.5; format groupresprate 6.2; run; proc sort data=gini nothreads; by descending groupresprate; run; data gini(keep=gini); set gini(keep=dmign_resp dmign_nresp) end=lastobs; between + 2 * cumnresp * dmign_resp; within + dmign_nresp * dmign_resp; cumresp + dmign_resp; cumnresp + dmign_nresp; if lastobs then do; gini = 100 * (1 - (within + between) / (cumnresp * cumresp)); output; end; run; proc split data=EMDATA.VIEW_146 criterion=chisq leafsize=298 outtree=outtree excludemiss; input YOJ/level=interval; target BAD/level=binary; run; data grouped(keep = YOJ BAD GRP_YOJ dmign_resp dmign_nresp dmign_indet _weighted_frequency_ ); set varSummary; dmign_resp = 0; dmign_nresp = 0; dmign_indet = 0; if BAD = 1 then dmign_resp = _weighted_frequency_; else if BAD = 0 then dmign_nresp = _weighted_frequency_; else dmign_indet = _weighted_frequency_; if YOJ = . then GRP_YOJ = -1; else if YOJ LT 2 then GRP_YOJ = 1; else if YOJ LT 4 then GRP_YOJ = 2; else if YOJ LT 6 then GRP_YOJ = 3; else if YOJ LT 9 then GRP_YOJ = 4; else if YOJ LT 12 then GRP_YOJ = 5; else if YOJ LT 14 then GRP_YOJ = 6; else if YOJ LT 17 then GRP_YOJ = 7; else if YOJ LT 21 then GRP_YOJ = 8; else GRP_YOJ = 9; run; proc means data=grouped(keep=GRP_YOJ dmign_resp dmign_nresp dmign_indet ) noprint missing; var dmign_resp dmign_nresp dmign_indet ; class GRP_YOJ; output out=summ sum=dmign_resp dmign_nresp dmign_indet ; run; data infoval(keep=infoval) gini(keep=dmign_resp dmign_nresp groupresprate) stats(keep=GRP_YOJ dmign_resp dmign_nresp dmign_indet wtev groupresprate ); if _n_=1 then set summ(keep=dmign_resp dmign_nresp rename=(dmign_resp=totresp dmign_nresp=totnresp)); set summ(where=(_type_ = 1) keep=GRP_YOJ dmign_resp dmign_nresp dmign_indet _type_ ) end=lastobs; respper = dmign_resp / totresp; nrespper = dmign_nresp / totnresp; if ((dmign_resp = 0) OR (dmign_nresp = 0)) then wtev = log(((dmign_nresp + 0.5) * totresp) / ((dmign_resp + 0.5) / totnresp)); else wtev = log(nrespper / respper); infoval + ((nrespper - respper) * wtev); groupresprate = dmign_resp / (dmign_resp + dmign_nresp) * 100; output gini stats; if lastobs then output infoval; format wtev 8.5; format groupresprate 6.2; run; proc sort data=gini nothreads; by descending groupresprate; run; data gini(keep=gini); set gini(keep=dmign_resp dmign_nresp) end=lastobs; between + 2 * cumnresp * dmign_resp; within + dmign_nresp * dmign_resp; cumresp + dmign_resp; cumnresp + dmign_nresp; if lastobs then do; gini = 100 * (1 - (within + between) / (cumnresp * cumresp)); output; end; run;