/* STEP - 1 Modeling for Development Dataset */
proc logistic data=DEV outmodel=logist_param descending;
model depvar=&var_r. /
outroc=roc
stb
scale=none
lackfit
selection=stepwise sle=.05 sls=.001;
output out=est_dev P=score;
run;
/* KS */
proc npar1way edf data=devscr;
class depvar;
var score;
run;
/* STEP - 2 Modeling for Validation Dataset */
proc logistic descending inmodel =logist_param;
score data = VAL out = est_val;
run;
/* KS */
proc npar1way data = est_val edf;
class depvar;
var P_1;
run;
/* STEP - 3 Modeling for OOT Validation Dataset */
proc logistic descending inmodel =logist_param;
score data = OOT out = est_val_OOT;
run;
/* KS */
ODS GRAPHICS on;
proc npar1way data = est_val_OOT edf;
class depvar;
var P_1;
run;
/* STEP - 4 C Statistic for Validation and Out of Time Sample DataSet */
%macro C_stat(input,var1,var2,output);
data d nd (rename=(&var1.=&var1._2 &var2.=&var2._2));
set &input.;
if &var1. then output d; else output nd;
run;
proc sql;
create table pairs as select a.&var1.,a.&var2.,b.&var1._2,b.&var2._2
from d as a, nd as b;
quit;
data class;
set pairs;
if &var2. gt &var2._2 then concordant =1; else concordant =0;
if &var2. = &var2._2 then tied =1; else tied =0;
if &var2. lt &var2._2 then discordant =1; else discordant =0;
proc summary data = class;
output out = sum
sum(concordant)=concordant
sum(tied)=tied;
run;
data &output.;set sum;
C = (concordant+tied)/_freq_;
run;
%mend;
%C_stat(est_val,depvar,p_1,C_for_val_data);
%C_stat(est_val_OOT,depvar,p_1,C_for_oot_data);
proc logistic data=DEV outmodel=logist_param descending;
model depvar=&var_r. /
outroc=roc
stb
scale=none
lackfit
selection=stepwise sle=.05 sls=.001;
output out=est_dev P=score;
run;
/* KS */
proc npar1way edf data=devscr;
class depvar;
var score;
run;
/* STEP - 2 Modeling for Validation Dataset */
proc logistic descending inmodel =logist_param;
score data = VAL out = est_val;
run;
/* KS */
proc npar1way data = est_val edf;
class depvar;
var P_1;
run;
/* STEP - 3 Modeling for OOT Validation Dataset */
proc logistic descending inmodel =logist_param;
score data = OOT out = est_val_OOT;
run;
/* KS */
ODS GRAPHICS on;
proc npar1way data = est_val_OOT edf;
class depvar;
var P_1;
run;
/* STEP - 4 C Statistic for Validation and Out of Time Sample DataSet */
%macro C_stat(input,var1,var2,output);
data d nd (rename=(&var1.=&var1._2 &var2.=&var2._2));
set &input.;
if &var1. then output d; else output nd;
run;
proc sql;
create table pairs as select a.&var1.,a.&var2.,b.&var1._2,b.&var2._2
from d as a, nd as b;
quit;
data class;
set pairs;
if &var2. gt &var2._2 then concordant =1; else concordant =0;
if &var2. = &var2._2 then tied =1; else tied =0;
if &var2. lt &var2._2 then discordant =1; else discordant =0;
proc summary data = class;
output out = sum
sum(concordant)=concordant
sum(tied)=tied;
run;
data &output.;set sum;
C = (concordant+tied)/_freq_;
run;
%mend;
%C_stat(est_val,depvar,p_1,C_for_val_data);
%C_stat(est_val_OOT,depvar,p_1,C_for_oot_data);
No comments:
Post a Comment