<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Split Data Set in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Split-Data-Set/m-p/155506#M40843</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Would anyone be able to assist me with the following test results?&amp;nbsp; I was attempting to split my data into a 70/30 training/test data set, but when I run the results, the only set that comes up for me is the "70%" training results even though I can see that it removed 200+ observations for the test data set. How do I get SAS to produce the remaining data set of results for me?&amp;nbsp; I was told it would do so automatically, but all that comes up is the first set.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks so much&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;title ;&lt;/P&gt;&lt;P&gt;proc contents data=mydata.credit_approval; &lt;/P&gt;&lt;P&gt;run; &lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc print data=mydata.credit_approval;&lt;/P&gt;&lt;P&gt;run; &lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data temp;&lt;/P&gt;&lt;P&gt;set mydata.credit_approval;&lt;/P&gt;&lt;P&gt;* Training/testing observations;&lt;/P&gt;&lt;P&gt;u=uniform(123);&lt;/P&gt;&lt;P&gt;if (u&amp;lt;0.7) then train=1; else train=0;&lt;/P&gt;&lt;P&gt;if A16='+' then Y=1;&lt;/P&gt;&lt;P&gt;else if A16='-' then Y=0;&lt;/P&gt;&lt;P&gt;else Y=.;&lt;/P&gt;&lt;P&gt;* Create a response indicator based on the training/testing split;&lt;/P&gt;&lt;P&gt;if (train=1) then Y_train=Y; else Y_train=.;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Dummy Variables from Assignment 5 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A1 Base category is A1='a';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A1='b') then A1_b=1; else A1_b=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A4 Base category is: l,y;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A4='u') then A4_u=1; else A4_u=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A5 Base caetgory is: gg,p;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A5='g') then A5_g=1; else A5_g=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A6 Base category is: d,e,j,r;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='aa') then A6_aa=1; else A6_aa=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='c')&amp;nbsp; then A6_c=1; else A6_c=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='cc') then A6_cc=1; else A6_cc=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='ff') then A6_ff=1; else A6_ff=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='i')&amp;nbsp; then A6_i=1; else A6_i=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='k')&amp;nbsp; then A6_k=1; else A6_k=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='m')&amp;nbsp; then A6_m=1; else A6_m=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='q')&amp;nbsp; then A6_q=1; else A6_q=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='w')&amp;nbsp; then A6_w=1; else A6_w=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='x')&amp;nbsp; then A6_x=1; else A6_x=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A7 Base category is: dd,j,n,o,z;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A7='bb') then A7_bb=1; else A7_bb=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A7='ff') then A7_ff=1; else A7_ff=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A7='h')&amp;nbsp; then A7_h=1; else A7_h=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A7='v')&amp;nbsp; then A7_v=1; else A7_v=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A9='t')&amp;nbsp; then A9_t=1; else A9_t=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A10='t') then A10_t=1; else A10_t=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A12='t') then A12_t=1; else A12_t=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A13 Base category is: p,s;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A13='g') then A13_g=1; else A13_g=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *Discretize the Continuous Variables;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A2 &amp;lt; 20) then A2_discrete=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A2 &amp;lt; 25) then A2_discrete=2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A2 &amp;lt; 35) then A2_discrete=3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A2 &amp;lt; 45) then A2_discrete=4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else A2_discrete=5;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A3 &amp;lt; 1) then A3_discrete=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A3 &amp;lt; 2) then A3_discrete=2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A3 &amp;lt; 5) then A3_discrete=3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A3 &amp;lt; 10) then A3_discrete=4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else A3_discrete=5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A8 &amp;lt; 0.5) then A8_discrete=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A8 &amp;lt; 1) then A8_discrete=2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A8 &amp;lt; 2) then A8_discrete=3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A8 &amp;lt; 5) then A8_discrete=4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A8 &amp;lt; 10) then A8_discrete=5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else A8_discrete=6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A11 &amp;lt; 1) then A11_discrete=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A11 &amp;lt; 3.01) then A11_discrete=2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else A11_discrete=3;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A14 &amp;lt; 100) then A14_discrete=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A14 &amp;lt; 150) then A14_discrete=2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A14 &amp;lt; 250) then A14_discrete=3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A14 &amp;lt; 350) then A14_discrete=4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else A14_discrete=5;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A15 &amp;lt; 1.5) then A15_discrete=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A15 &amp;lt; 50) then A15_discrete=2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A15 &amp;lt; 100) then A15_discrete=3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A15 &amp;lt; 200) then A15_discrete=4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A15 &amp;lt; 4000) then A15_discrete=5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else A15_discrete=6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;* Delete the observations with missing values;&lt;/P&gt;&lt;P&gt;if (A1='?') or (A4='?') or (A5='?') or (A6='?') or (A7='?')&lt;/P&gt;&lt;P&gt;or (A2=.) or (A3=.) or (A8=.) or (A11=.) or (A14=.) or (A15=.)&lt;/P&gt;&lt;P&gt;then delete;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc logistic data=temp descending;&lt;/P&gt;&lt;P&gt;model Y_train = A2 A3 A8 A11 A14 A15&lt;/P&gt;&lt;P&gt;A1_b A4_u A5_g&lt;/P&gt;&lt;P&gt;A6_aa A6_c A6_cc A6_ff A6_i A6_k A6_m A6_q A6_w A6_x&lt;/P&gt;&lt;P&gt;A7_bb A7_ff A7_h A7_v&lt;/P&gt;&lt;P&gt;A9_t A10_t A12_t A13_g / selection=backward;&lt;/P&gt;&lt;P&gt;output out=model_data pred=yhat;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc logistic data=temp descending;&lt;/P&gt;&lt;P&gt;model Y_train = A9_t A2 A3 ;&lt;/P&gt;&lt;P&gt;output out=model_data2 pred=yhat;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;* The descending option assigns the highest model scores to the lowest score_decile;&lt;/P&gt;&lt;P&gt;proc rank data=model_data2 out=training_scores descending groups=10;&lt;/P&gt;&lt;P&gt;var yhat;&lt;/P&gt;&lt;P&gt;ranks score_decile;&lt;/P&gt;&lt;P&gt;where train=1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;* To create the lift chart run this exact code;&lt;/P&gt;&lt;P&gt;proc means data=training_scores sum;&lt;/P&gt;&lt;P&gt;class score_decile;&lt;/P&gt;&lt;P&gt;var Y;&lt;/P&gt;&lt;P&gt;output out=pm_out sum(Y)=Y_Sum;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc print data=pm_out; run;&lt;/P&gt;&lt;P&gt;data lift_chart;&lt;/P&gt;&lt;P&gt;set pm_out (where=(_type_=1));&lt;/P&gt;&lt;P&gt;by _type_;&lt;/P&gt;&lt;P&gt;Nobs=_freq_;&lt;/P&gt;&lt;P&gt;score_decile = score_decile+1;&lt;/P&gt;&lt;P&gt;if first._type_ then do;&lt;/P&gt;&lt;P&gt;cum_obs=Nobs;&lt;/P&gt;&lt;P&gt;model_pred=Y_Sum;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;else do;&lt;/P&gt;&lt;P&gt;cum_obs=cum_obs+Nobs;&lt;/P&gt;&lt;P&gt;model_pred=model_pred+Y_Sum;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;retain cum_obs model_pred;&lt;/P&gt;&lt;P&gt;* 201 represents the number of successes;&lt;/P&gt;&lt;P&gt;* This value will need to be changed with different samples;&lt;/P&gt;&lt;P&gt;pred_rate=model_pred/249;&lt;/P&gt;&lt;P&gt;base_rate=score_decile*0.1;&lt;/P&gt;&lt;P&gt;lift = pred_rate-base_rate;&lt;/P&gt;&lt;P&gt;drop _freq_ _type_ ;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc print data=lift_chart; run;&lt;/P&gt;&lt;P&gt;ods graphics on;&lt;/P&gt;&lt;P&gt;axis1 label=(angle=90 '% Captured from Target Population');&lt;/P&gt;&lt;P&gt;axis2 label=('Total Population');&lt;/P&gt;&lt;P&gt;legend1 label=(color=black height=1 '')&lt;/P&gt;&lt;P&gt;value=(color=black height=1 'Model #2' 'Random Guess');&lt;/P&gt;&lt;P&gt;title 'Model #2: In-Sample Lift Chart';&lt;/P&gt;&lt;P&gt;symbol1 color=green interpol=join w=2 value=dot height=1;&lt;/P&gt;&lt;P&gt;symbol2 color=black interpol=join w=2 value=dot height=1;&lt;/P&gt;&lt;P&gt;proc gplot data=lift_chart;&lt;/P&gt;&lt;P&gt;plot pred_rate*base_rate base_rate*base_rate / overlay&lt;/P&gt;&lt;P&gt;legend=legend1 vaxis=axis1 haxis=axis2;&lt;/P&gt;&lt;P&gt;run; quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ods graphics off;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 12 May 2014 17:19:04 GMT</pubDate>
    <dc:creator>NicolePKitten</dc:creator>
    <dc:date>2014-05-12T17:19:04Z</dc:date>
    <item>
      <title>Split Data Set</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Split-Data-Set/m-p/155506#M40843</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Would anyone be able to assist me with the following test results?&amp;nbsp; I was attempting to split my data into a 70/30 training/test data set, but when I run the results, the only set that comes up for me is the "70%" training results even though I can see that it removed 200+ observations for the test data set. How do I get SAS to produce the remaining data set of results for me?&amp;nbsp; I was told it would do so automatically, but all that comes up is the first set.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks so much&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;title ;&lt;/P&gt;&lt;P&gt;proc contents data=mydata.credit_approval; &lt;/P&gt;&lt;P&gt;run; &lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc print data=mydata.credit_approval;&lt;/P&gt;&lt;P&gt;run; &lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data temp;&lt;/P&gt;&lt;P&gt;set mydata.credit_approval;&lt;/P&gt;&lt;P&gt;* Training/testing observations;&lt;/P&gt;&lt;P&gt;u=uniform(123);&lt;/P&gt;&lt;P&gt;if (u&amp;lt;0.7) then train=1; else train=0;&lt;/P&gt;&lt;P&gt;if A16='+' then Y=1;&lt;/P&gt;&lt;P&gt;else if A16='-' then Y=0;&lt;/P&gt;&lt;P&gt;else Y=.;&lt;/P&gt;&lt;P&gt;* Create a response indicator based on the training/testing split;&lt;/P&gt;&lt;P&gt;if (train=1) then Y_train=Y; else Y_train=.;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Dummy Variables from Assignment 5 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A1 Base category is A1='a';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A1='b') then A1_b=1; else A1_b=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A4 Base category is: l,y;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A4='u') then A4_u=1; else A4_u=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A5 Base caetgory is: gg,p;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A5='g') then A5_g=1; else A5_g=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A6 Base category is: d,e,j,r;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='aa') then A6_aa=1; else A6_aa=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='c')&amp;nbsp; then A6_c=1; else A6_c=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='cc') then A6_cc=1; else A6_cc=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='ff') then A6_ff=1; else A6_ff=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='i')&amp;nbsp; then A6_i=1; else A6_i=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='k')&amp;nbsp; then A6_k=1; else A6_k=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='m')&amp;nbsp; then A6_m=1; else A6_m=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='q')&amp;nbsp; then A6_q=1; else A6_q=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='w')&amp;nbsp; then A6_w=1; else A6_w=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A6='x')&amp;nbsp; then A6_x=1; else A6_x=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A7 Base category is: dd,j,n,o,z;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A7='bb') then A7_bb=1; else A7_bb=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A7='ff') then A7_ff=1; else A7_ff=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A7='h')&amp;nbsp; then A7_h=1; else A7_h=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A7='v')&amp;nbsp; then A7_v=1; else A7_v=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A9='t')&amp;nbsp; then A9_t=1; else A9_t=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A10='t') then A10_t=1; else A10_t=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A12='t') then A12_t=1; else A12_t=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * A13 Base category is: p,s;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A13='g') then A13_g=1; else A13_g=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *Discretize the Continuous Variables;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A2 &amp;lt; 20) then A2_discrete=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A2 &amp;lt; 25) then A2_discrete=2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A2 &amp;lt; 35) then A2_discrete=3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A2 &amp;lt; 45) then A2_discrete=4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else A2_discrete=5;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A3 &amp;lt; 1) then A3_discrete=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A3 &amp;lt; 2) then A3_discrete=2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A3 &amp;lt; 5) then A3_discrete=3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A3 &amp;lt; 10) then A3_discrete=4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else A3_discrete=5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A8 &amp;lt; 0.5) then A8_discrete=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A8 &amp;lt; 1) then A8_discrete=2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A8 &amp;lt; 2) then A8_discrete=3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A8 &amp;lt; 5) then A8_discrete=4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A8 &amp;lt; 10) then A8_discrete=5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else A8_discrete=6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A11 &amp;lt; 1) then A11_discrete=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A11 &amp;lt; 3.01) then A11_discrete=2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else A11_discrete=3;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A14 &amp;lt; 100) then A14_discrete=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A14 &amp;lt; 150) then A14_discrete=2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A14 &amp;lt; 250) then A14_discrete=3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A14 &amp;lt; 350) then A14_discrete=4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else A14_discrete=5;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (A15 &amp;lt; 1.5) then A15_discrete=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A15 &amp;lt; 50) then A15_discrete=2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A15 &amp;lt; 100) then A15_discrete=3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A15 &amp;lt; 200) then A15_discrete=4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (A15 &amp;lt; 4000) then A15_discrete=5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else A15_discrete=6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;* Delete the observations with missing values;&lt;/P&gt;&lt;P&gt;if (A1='?') or (A4='?') or (A5='?') or (A6='?') or (A7='?')&lt;/P&gt;&lt;P&gt;or (A2=.) or (A3=.) or (A8=.) or (A11=.) or (A14=.) or (A15=.)&lt;/P&gt;&lt;P&gt;then delete;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc logistic data=temp descending;&lt;/P&gt;&lt;P&gt;model Y_train = A2 A3 A8 A11 A14 A15&lt;/P&gt;&lt;P&gt;A1_b A4_u A5_g&lt;/P&gt;&lt;P&gt;A6_aa A6_c A6_cc A6_ff A6_i A6_k A6_m A6_q A6_w A6_x&lt;/P&gt;&lt;P&gt;A7_bb A7_ff A7_h A7_v&lt;/P&gt;&lt;P&gt;A9_t A10_t A12_t A13_g / selection=backward;&lt;/P&gt;&lt;P&gt;output out=model_data pred=yhat;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc logistic data=temp descending;&lt;/P&gt;&lt;P&gt;model Y_train = A9_t A2 A3 ;&lt;/P&gt;&lt;P&gt;output out=model_data2 pred=yhat;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;* The descending option assigns the highest model scores to the lowest score_decile;&lt;/P&gt;&lt;P&gt;proc rank data=model_data2 out=training_scores descending groups=10;&lt;/P&gt;&lt;P&gt;var yhat;&lt;/P&gt;&lt;P&gt;ranks score_decile;&lt;/P&gt;&lt;P&gt;where train=1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;* To create the lift chart run this exact code;&lt;/P&gt;&lt;P&gt;proc means data=training_scores sum;&lt;/P&gt;&lt;P&gt;class score_decile;&lt;/P&gt;&lt;P&gt;var Y;&lt;/P&gt;&lt;P&gt;output out=pm_out sum(Y)=Y_Sum;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc print data=pm_out; run;&lt;/P&gt;&lt;P&gt;data lift_chart;&lt;/P&gt;&lt;P&gt;set pm_out (where=(_type_=1));&lt;/P&gt;&lt;P&gt;by _type_;&lt;/P&gt;&lt;P&gt;Nobs=_freq_;&lt;/P&gt;&lt;P&gt;score_decile = score_decile+1;&lt;/P&gt;&lt;P&gt;if first._type_ then do;&lt;/P&gt;&lt;P&gt;cum_obs=Nobs;&lt;/P&gt;&lt;P&gt;model_pred=Y_Sum;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;else do;&lt;/P&gt;&lt;P&gt;cum_obs=cum_obs+Nobs;&lt;/P&gt;&lt;P&gt;model_pred=model_pred+Y_Sum;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;retain cum_obs model_pred;&lt;/P&gt;&lt;P&gt;* 201 represents the number of successes;&lt;/P&gt;&lt;P&gt;* This value will need to be changed with different samples;&lt;/P&gt;&lt;P&gt;pred_rate=model_pred/249;&lt;/P&gt;&lt;P&gt;base_rate=score_decile*0.1;&lt;/P&gt;&lt;P&gt;lift = pred_rate-base_rate;&lt;/P&gt;&lt;P&gt;drop _freq_ _type_ ;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc print data=lift_chart; run;&lt;/P&gt;&lt;P&gt;ods graphics on;&lt;/P&gt;&lt;P&gt;axis1 label=(angle=90 '% Captured from Target Population');&lt;/P&gt;&lt;P&gt;axis2 label=('Total Population');&lt;/P&gt;&lt;P&gt;legend1 label=(color=black height=1 '')&lt;/P&gt;&lt;P&gt;value=(color=black height=1 'Model #2' 'Random Guess');&lt;/P&gt;&lt;P&gt;title 'Model #2: In-Sample Lift Chart';&lt;/P&gt;&lt;P&gt;symbol1 color=green interpol=join w=2 value=dot height=1;&lt;/P&gt;&lt;P&gt;symbol2 color=black interpol=join w=2 value=dot height=1;&lt;/P&gt;&lt;P&gt;proc gplot data=lift_chart;&lt;/P&gt;&lt;P&gt;plot pred_rate*base_rate base_rate*base_rate / overlay&lt;/P&gt;&lt;P&gt;legend=legend1 vaxis=axis1 haxis=axis2;&lt;/P&gt;&lt;P&gt;run; quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ods graphics off;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 May 2014 17:19:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Split-Data-Set/m-p/155506#M40843</guid>
      <dc:creator>NicolePKitten</dc:creator>
      <dc:date>2014-05-12T17:19:04Z</dc:date>
    </item>
    <item>
      <title>Re: Split Data Set</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Split-Data-Set/m-p/155507#M40844</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You've pulled out the non-training data with a WHERE clause on the proc rank step but the results should be there otherwise. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm not 100% sure but changing the where clause to a BY statement for the proc rank may be what you want. This would then calculate your ranks and corresponding lift for each group independently.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 May 2014 17:54:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Split-Data-Set/m-p/155507#M40844</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2014-05-12T17:54:44Z</dc:date>
    </item>
    <item>
      <title>Re: Split Data Set</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Split-Data-Set/m-p/155508#M40845</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Following statement in your syntax removing your testing dataset when you are using temp dataset in proc logistic&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;* Create a response indicator based on the training/testing split;&lt;/P&gt;&lt;P&gt;if (train=1) then Y_train=Y; else Y_train=.;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 May 2014 18:14:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Split-Data-Set/m-p/155508#M40845</guid>
      <dc:creator>stat_sas</dc:creator>
      <dc:date>2014-05-12T18:14:35Z</dc:date>
    </item>
    <item>
      <title>Re: Split Data Set</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Split-Data-Set/m-p/155509#M40846</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That removes them from being used in fitting the model as there isn't a response, but they will be included in the output in other data sets won't they?&lt;/P&gt;&lt;P&gt;This is a common trick for getting predictions from a proc. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 May 2014 18:53:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Split-Data-Set/m-p/155509#M40846</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2014-05-12T18:53:57Z</dc:date>
    </item>
    <item>
      <title>Re: Split Data Set</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Split-Data-Set/m-p/155510#M40847</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Reeza - I was not aware about this.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 May 2014 20:23:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Split-Data-Set/m-p/155510#M40847</guid>
      <dc:creator>stat_sas</dc:creator>
      <dc:date>2014-05-12T20:23:22Z</dc:date>
    </item>
  </channel>
</rss>

