Proc logistic inmodel

Fermé
mo - 15 avril 2005 à 17:38
 mo - 24 avril 2005 à 17:46
bonjour,

j'utilise la version 9 de sas et j'ai des petits soucis avec la proc logistic en particulier avec l'option inmodel.
c'est dans le cadre de la conception d'un score d'octroi.
je cherche à appliquer le score obtenu sur un autre echantillon afin de le valider.
la macro s'execute bien mais qd je fais tourner la proc gplot pour avoir les courbes roc j'obtiens des coubres assez bizarres.
besoin d'aide merci par avance.
voila le prog :

%macro test(fic,liste,modele,i);
/*fic nom du fichier, liste liste des variables, modele modele obtenu à la suite d'une proc
logistic, i indice pour les modeles*/
data mo.tot&i;
set mo.&fic(keep=&liste solva);
proc logistic inmodel=mo.&modele;
score data=mo.tot&i outroc=mo.rocp&i out=mo.pred&i;
run;

data mo.rocp&i;
set mo.rocp&i(keep=_sensit_ _1mspec_);
base="&fic";
run;

data mo.roc&i;
set mo.roc&i(keep=base _sensit_ _1mspec_)
mo.rocp&i(keep=base _sensit_ _1mspec_);
run;

data mo.pred&i;
set mo.pred&i;
rename P_0=phat;
run;

title"fichier complet &fic";
proc freq data=mo.pred&i;
table f_solva*i_solva/measures;
run;

%graphscore(solva,pred&i,&i);/*on effectue la macro un plus hau
au moment de la comparaison des modèles*/

%mend;

/*création d'un autre écantillon afin de tester le modèle obtenu sur un autre échantillon avant
de le tester sur la totalité de la base*/
proc surveyselect data=mo.sco method=srs/*sans remise*/
sampsize=(300,300)/*300 solvable et 300 non solvable*/
seed=7894561 /*générateur de pseudo tirage aléatoire*/
out=mo.scoechan2;
strata solva;/*fait une stratification solvable non solvable*/
run;

/*test sur un autre échantillon pour chaque modèle établi*/
/*%test(scoechan2,&va,modscoechan,1);
%test(scoechan2,&va2,modscoechan3,3);
/*en utilisant la comparaison faite préalablement on peut appliquer la
macro test uniquement sur le modèle que l'on retient*/

/*test sur l'échantillon total pour chaque modèle établi*/
%test(sco,&va,modscoechan,1);
%test(sco,&va2,modscoechan3,3);


/***********graphe de la courbe roc**********************/
symbol1 i=join v=none c=blue;
symbol2 i=join v=none c=red;
symbol3 i=join v=none c=green;
symbol4 i=join v=none c=pink;
symbol5 i=join v=none c=orange;
proc gplot data=mo.roc1;/*il faudra remplacer la valeur de i par
l'indice du modèle retenu*/
title "Courbe ROC ";
legend;
plot _sensit_*_1mspec_=base/vaxis=0 to 1 by 0.1 cframe=ligr;
run;
quit;

proc gplot data=mo.roc3;/*il faudra remplacer la valeur de i par
l'indice du modèle retenu*/
title "Courbe ROC ";
legend;
plot _sensit_*_1mspec_=base/vaxis=0 to 1 by 0.1 cframe=ligr;
run;
quit;

1 réponse

en fait quand je faisais une proc logistic avec une selection backward ou stepwise et que je gardais les resultats dans une table et bien la table contenait toutes les lignes des differentes etapes de la convergence.

pour tracer la courbe roc il faut alors supprimer de la table roc toutes les ligne ne correspondant pas a la derniere etape de convergence.

solution transmise par une prof.
0