1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| data apprent;
input Y x;
cards;
1 415
0 48
0 5
1 89
0 78
0 69
1 104
1 36
;
run;
data valid;
input Y x;
cards;
1 4
0 4
0 50
1 9
0 115
0 899
1 904
1 31
;
run;
proc logistic data=apprent;
model Y(event="1") =x;
score data=apprent out=apprent_score;
score data=valid out=valid_score;
run;
/* cette macro te permet de calculer l'aire sous la courbe sur les données de validation à comparer avec avec celle d'apprentissage pour estimer la robustesse du modèle*/
%MACRO auc (TABLE=, variableScore=, variableY=, out=, event=) ;
PROC SQL ;
%IF &out NE %THEN %DO ;
CREATE TABLE &out AS
%END ;
SELECT (SUM(t1.&variableScore > t0.&variableScore)
+ 0.5*SUM(t1.&variableScore = t0.&variableScore))
/ COUNT(*) AS aire FORMAT = 5.3
FROM &table (WHERE = (&variableY NE &event)) AS t0,
&table (WHERE = (&variableY = &event)) AS t1
;
QUIT ;
%MEND auc ;
%auc(TABLE=valid_score, variableScore=P_1, variableY=Y, out=aire_courbe_valid, event=1);
%auc(TABLE=apprent_score, variableScore=P_1, variableY=Y, out=aire_courbe_apprent, event=1); |
Partager