Publié le :
Statistique CREATION_INTERNE

Analyse de Régression Logistique avec Courbes ROC

En attente de validation
Le script commence par une étape DATA qui lit des données agrégées en ligne (datalines) pour générer des observations individuelles avec une variable de réponse binaire 'y'. Les données sont réparties dans les tables 'train' et 'valid'. Ensuite, plusieurs procédures PROC LOGISTIC sont utilisées : 1) Un modèle est entraîné sur 'train' et ses performances sont évaluées sur 'valid' via l'instruction SCORE, en générant des courbes ROC pour les deux jeux de données. 2) Le script montre comment évaluer des prédictions déjà calculées avec une nouvelle courbe ROC. 3) Une autre exécution génère des prédictions avec des statistiques d'ajustement. 4) Un modèle final est appliqué à l'ensemble des données pour produire des prédictions par validation croisée (cross-validation).
Analyse des données

Type : CREATION_INTERNE


Les données sont entièrement générées au sein de la première étape DATA à l'aide d'une instruction `datalines`. Le code transforme des données agrégées (nombre d'essais 'n' et de succès 'r') en observations individuelles formatées pour une analyse de régression binaire.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc DATA lit des données brutes multilignes (grâce à l'opérateur '@@') et les transforme. Pour chaque ligne lue, deux boucles 'do' génèrent des observations individuelles avec une variable binaire 'y' (1 pour 'r' observations, 0 pour 'n-r' observations). Les données sont réparties dans trois tables : 'alldata' (toutes les données), 'train' (blocs 1-3) et 'valid' (bloc 4).
Copié !
1DATA alldata train valid;
2 INPUT block entry lat lng n r @@;
3 DO i=1 to r;
4 y=1;
5 OUTPUT alldata;
6 IF block<4 THEN OUTPUT train;
7 ELSE OUTPUT valid;
8 END;
9 DO i=1 to n-r;
10 y=0;
11 OUTPUT alldata;
12 IF block<4 THEN OUTPUT train;
13 ELSE OUTPUT valid;
14 END;
15 DATALINES;
16 1 14 1 1 8 2 1 16 1 2 9 1
17 1 7 1 3 13 9 1 6 1 4 9 9
18 1 13 2 1 9 2 1 15 2 2 14 7
19 1 8 2 3 8 6 1 5 2 4 11 8
20 1 11 3 1 12 7 1 12 3 2 11 8
21 1 2 3 3 10 8 1 3 3 4 12 5
22 1 10 4 1 9 7 1 9 4 2 15 8
23 1 4 4 3 19 6 1 1 4 4 8 7
24 2 15 5 1 15 6 2 3 5 2 11 9
25 2 10 5 3 12 5 2 2 5 4 9 9
26 2 11 6 1 20 10 2 7 6 2 10 8
27 2 14 6 3 12 4 2 6 6 4 10 7
28 2 5 7 1 8 8 2 13 7 2 6 0
29 2 12 7 3 9 2 2 16 7 4 9 0
30 2 9 8 1 14 9 2 1 8 2 13 12
31 2 8 8 3 12 3 2 4 8 4 14 7
32 3 7 1 5 7 7 3 13 1 6 7 0
33 3 8 1 7 13 3 3 14 1 8 9 0
34 3 4 2 5 15 11 3 10 2 6 9 7
35 3 3 2 7 15 11 3 9 2 8 13 5
36 3 6 3 5 16 9 3 1 3 6 8 8
37 3 15 3 7 7 0 3 12 3 8 12 8
38 3 11 4 5 8 1 3 16 4 6 15 1
39 3 5 4 7 12 7 3 2 4 8 16 12
40 4 9 5 5 15 8 4 4 5 6 10 6
41 4 12 5 7 13 5 4 1 5 8 15 9
42 4 15 6 5 17 6 4 6 6 6 8 2
43 4 14 6 7 12 5 4 7 6 8 15 8
44 4 13 7 5 13 2 4 8 7 6 13 9
45 4 3 7 7 9 9 4 10 7 8 6 6
46 4 2 8 5 12 8 4 11 8 6 9 7
47 4 5 8 7 11 10 4 16 8 8 15 7
48 ;
2 Bloc de code
PROC LOGISTIC
Explication :
Ce bloc entraîne un modèle de régression logistique sur le jeu de données 'train', où 'y' est la variable dépendante et 'entry' est la variable explicative. L'option 'outroc=troc' sauvegarde les données de la courbe ROC pour l'échantillon d'entraînement. L'instruction 'score' applique ce modèle à l'échantillon 'valid', génère les prédictions dans la table 'valpred' et les données ROC dans 'vroc'. 'roc' et 'roccontrast' affichent et comparent les courbes ROC.
Copié !
1ods graphics on;
2PROC LOGISTIC DATA=train;
3 model y(event="1") = entry / outroc=troc;
4 score DATA=valid out=valpred outroc=vroc;
5 roc;
6 roccontrast;
7RUN;
3 Bloc de code
PROC CONTENTS
Explication :
Affiche la description des variables (métadonnées) de la table 'valpred' créée par l'étape de scoring précédente.
Copié !
1PROC CONTENTS DATA=valpred;
2RUN;
4 Bloc de code
PROC PRINT
Explication :
Tente d'afficher les 100 premières observations de la table 'preds'. Note : à ce stade du script, la table 'preds' n'a pas encore été créée, ce qui provoquerait une erreur d'exécution. Elle est générée dans un bloc ultérieur.
Copié !
1PROC PRINT DATA=preds(obs=100);
2RUN;
5 Bloc de code
PROC LOGISTIC
Explication :
Cette série de procédures logistiques explore différentes techniques d'évaluation :
1. Un modèle nul (intercept-only) est utilisé pour générer une courbe ROC basée sur les probabilités prédites ('p_1') de la table 'valpred'.
2. Le modèle est ré-entraîné et l'instruction 'score' est de nouveau utilisée, cette fois avec l'option 'fitstat' pour obtenir des statistiques d'ajustement sur les données de validation.
3. Un modèle est entraîné sur l'ensemble des données ('alldata') et l'instruction 'output' crée la table 'preds' contenant les probabilités prédites par validation croisée ('crossvalidate').
4. Finalement, une courbe ROC est générée à partir de ces prédictions croisées ('xp_1') pour évaluer le modèle.
Copié !
1PROC LOGISTIC DATA=valpred;
2 model y(event="1")=;
3 roc pred=p_1;
4 roccontrast;
5 RUN;
6PROC LOGISTIC DATA=train;
7 model y(event="1") = entry;
8 score DATA=valid out=valpred fitstat;
9 RUN;
10PROC LOGISTIC DATA=alldata;
11 model y(event="1") = entry;
12 OUTPUT out=preds predprobs=crossvalidate;
13 RUN;
14 PROC LOGISTIC DATA=preds;
15 model y(event="1") = entry;
16 roc pred=xp_1;
17 roccontrast;
18 RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Le script va au-delà de la simple modélisation en utilisant l'instruction ROCCONTRAST. Cela permet de tester statistiquement si les différences entre plusieurs modèles ou entre les performances de validation sont significatives. L'activation d' ODS GRAPHICS transforme ces résultats complexes en diagnostics visuels immédiats, facilitant la prise de décision métier. »