data test(drop=i);
do i=1 to 200;
y=round(ranuni(9),1);
x=ranuni(3);output;
end;
run;
proc logistic data=test outmodel=logist_param descending;
model y=x;
output out=est_dev P=score;
run;
%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_dev,y,score,out_c);
do i=1 to 200;
y=round(ranuni(9),1);
x=ranuni(3);output;
end;
run;
proc logistic data=test outmodel=logist_param descending;
model y=x;
output out=est_dev P=score;
run;
%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_dev,y,score,out_c);
No comments:
Post a Comment