/ksͳ�����ļ������ͼ/
    libname loan “d:\2019xyt”;
    /ks����/
    %macro ksstat(dsin,probvar,dvvar,dsks,m_ks);

    proc sort data=&dsin;
    by &probvar;
    run;

    proc sql noprint;
    select sum(&dvvar) into:p from &dsin;
    select count(*) into:ntot from &dsin;
    quit;

    %let n=%eval(&ntot-&p);/total negative(good)/
    /**/

    data &dsks;
    set &dsin nobs=nn;
    by &probvar;
    retain tile 1 totp 0 totn 0;
    tile_size=ceil(nn/100);

    if &dvvar=1 then totp=totp+&dvvar;
    else totn=totn+1;

    pper=totp/&p;
    nper=totn/&n;

    if n=tile*tile_size then do;
    output;
    if tile<100 then do;
    tile=tile+1;
    sumresp=0;
    end;
    end;
    keep tile pper nper;
    run;

    data temp;
    tile=0;
    pper=0;
    nper=0;
    run;

    data &dsks;
    set temp &dsks;
    run;

    data &dsks;
    set &dsks;
    tile=tile/100;
    label pper=”percent of positives”;
    label nper=”percent of negaives”;
    label tile=”percent of population”;
    ks=nper-pper;
    run;

    proc sql noprint;
    select max(ks) into :&m_ks from &dsks;
    run;quit;

    proc datasets library=work nodetails nolist;
    delete temp;
    run;
    quit;

    %mend;

    /��ͼ/
    %macro plotks(dsks);

    symbol1 color=red interpol=join value=dot height=1;
    legend1 position=top;

    symbol2 color=blue interpol=join value=dot height=1;
    symbol3 color=green interpol=join value=dot height=1;
    proc gplot data=&dsks;
    plot(nper pper ks)*tile /overlay legend=legend1;
    run;
    quit;
    goptions reset=all;
    %mend;

    proc contents data=loan.bpractice_2_fa(drop=v_5) out=a noprint;run;
    proc sql noprint;
    select name into:var separated by ‘ ‘ from a;quit;

    %let varlist=&var.;

    proc logistic data=loan.bpractice_2_fa outest=model_parms;
    model v_5(event=’1’)=&var./selection=stepwise sls=0.05 sle=0.05;
    output out=pred_probs p=pred_v_5;
    run;

    /use the macro/

    %let dsin=pred_probs;
    %let probvar=pred_v_5;
    %let dvvar=v_5;
    %let dsks=dsks;
    %let ks=;
    %ksstat(&dsin,&probvar,&dvvar,&dsks,ks);

    %put >>>>>>>>>>>>>>>>>>>>>>>>>>> ks-stat=&ks <<<<<<<<<<<<<<<<<<<<<<<<<;

    %plotks(&dsks);