|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2006 Messages : 22 ![]() |
Bonjour à tous,
J'ai un petit souci en affichant la courbe ROC issue d'une régression logistique : elle s'affiche à l'envers (graphique attaché). Pourtant, j'ai suivi tout simplement les instructions données par SAS, à savoir exporter les données avec l'instruction SCORE, puis afficher la sensibilité en fonction de (1 - la spécificité). Code :
Merci d'avance, Mark |
||
|
|
00
|
|
|
#2 |
![]() ![]() Stéphane Consultant et formateur SAS et Cognos Inscription : avril 2009 Messages : 1 791 ![]() |
tu as un jeu de données pour tester ?
Là encore tu es en 6.1 ? je te demande car ROC fait partie de l'ODS graphics. (http://support.sas.com/documentation...ic_sect058.htm)
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !Moteur de recherche dans les papiers SAS |
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2006 Messages : 22 ![]() |
Le jeu de données est assez gros, je veux bien tout t'envoyer par mail si tu es chaud pour tester. Mais on peut certainement régler ça simplement.
Oui, je suis en 6.1 (c'est une version si vieille que ça ?) et la syntaxe avec "plots(only)" ne fonctionne pas chez moi. De toutes façons, il faut que j'aie la possibilité de tracer pour la courbe ROC pour l'échantillon d'apprentissage mais aussi pour l'échantillon de validation (que je n'ai pas précisé dans le code ci-dessus). Donc l'export des sensibilités avec l'instruction "score" pour chaque échantillon me convenait très bien. Comme tu peux le voir, j'ai repris exactement le code donné dans l'aide de SAS pour tracer la courbe ROC. Ce que je ne comprends pas, c'est qu'une courbe à l'envers sous-entend que mon modèle discrimine moins bien que le hasard (représenté par la diagonale). Pourtant, l'aire sous la courbe ROC (indice c dans SAS) est élevée... |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Mark, je pense que Stéphane/Datametric te charrie avec la version de SAS. C'est 9.1, car sinon tu n'aurais pas d'instruction SCORE.
La version 6.12 a rendu son dernier soupir vers 2002, je crois. Donc avoir une 6.1 semble totalement impossible (ou alors on ne parle pas de SAS). Moi aussi je suis intrigué par ton problème parce que je n'arrive pas à le reproduire. Mes courbes ROC sont dans le bon sens avec ta syntaxe. |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2006 Messages : 22 ![]() |
Oups, au temps pour moi, je voulais bien entendu dire 9.1 !
Sinon, je viens de redémarrer SAS, de réexécuter le code, et j'ai le même problème. Tu penses que ça peut être un bug lié à la 9.1 ? Au pire, je peux utiliser la macro de Tufféry pour tracer la courbe ROC... |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Un bug de la 9.1 ? Ce serait surprenant et je ne l'ai jamais rencontré.
Est-ce que tu peux transporter ton option OUTROC dans l'instruction MODEL, juste après le SELECTION=FORWARD ? Ça doit rendre le même service et ça nous dira si c'est un souci dans les données. PS : si tu veux m'expédier les données en PJ d'un mail je veux bien tester de mon côté sur ma 9.2. |
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2006 Messages : 22 ![]() |
Bien vu, lorsque je transpose l'option OUTROC au niveau de l'instruction MODEL et que j'exécute la macro d'affichage, ma courbe s'affiche dans le bon sens. Après, plusieurs courbes s'affichent, je ne sais pas trop comment les interpréter.
J'ai inspecté les données exportées dans les 2 cas et elles sont différentes. Je n'ai pas du tout les mêmes niveaux de probabilité associées aux sensibilités. Tu as essayé chez toi de tracer la courbe dans les 2 cas ? Sinon, ok, je peux t'envoyer la base et le code. |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
En 9.2 les deux courbes sont les mêmes. Ma 9.1 ne fonctionne plus donc je ne peux pas tester (peut-être demain chez un client, j'essaye d'y penser).
Pour la superposition des courbes ROC, c'est dû à la présence simultanée du FORWARD. Tu peux conserver la courbe de chaque étape du FORWARD grâce à OUTROC au niveau de MODEL. En théorie, dans SCORE, OUTROC ne te renvoie que les courbes ROC du dernier choix de FORWARD. Un WHERE en plus dans ta proc GPLOT te restreindra à un seul modèle. L'hypothèse de ton problème serait donc : en 9.1, quand tu utilises l'instruction SCORE, SAS fait à son idée sur la modalité "évènement" de Y. Et ignore ce qu'on lui indique dans MODEL. En tout cas ça n'arrive plus en 9.2. Les contournements possibles seraient de spécifier autrement quelle est la valeur à modéliser dans ton Y : soit une option DESC dans l'instruction PROC LOGISTIC (avec DATA et compagnie), soit un (EVENT="1") à côté de ta variable Y, à gauche du = dans MODEL. Peut-être qu'une des deux solutions te conservera ta syntaxe d'origine, avec OUTROC dans SCORE qui est bien pratique (puisqu'on peut ainsi comparer la courbe ROC sur entraînement et validation). Quant au bug, je retire mes propos après réflexion. Il y avait en 9.1 des bugs dans l'instruction SCORE si le modèle faisait appel à des variables quali (CLASS) utilisant des formats utilisateurs. Donc si ça se trouve il y avait d'autres problèmes au niveau de cette instruction. Bon courage. Olivier |
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2006 Messages : 22 ![]() |
Bien joué, ta première solution (l'option DESC) a fonctionné !
J'ai maintenant ma courbe ROC dans le bon sens. J'avais peur que ça crée un conflit avec (ref='0') mais mes coefficients estimés sont restés les mêmes.Donc ce serait bel et bien un bug de la 9.1 : l'instruction SCORE ne prendrait pas en compte le bon événement modélisé dans MODEL. Le tout est de le savoir... Merci (encore) beaucoup pour ton aide ! Mark |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com