Archive de la catégorie «Régression Logistique»

Macro pour le test de linéaire, régression logistique

23 juin 2008

Bonjour tout le monde,

 

Dans ma deuxième chronique, je vais vous montrer ma macro que j’ai créé afin de tester l’hypothèse de linéarité lorsqu’on effectue de la régression logistique.

 

La voici :

 

/*Tester l’hypothèse de linéarité*/

 

%macro linearite(fichier=, ech= , vary=, var_expl= , maxvalue=);

 

proc sort data=&fichier;

 by &ech;

run;

 

data &fichier;

 set &fichier;

 intervalle=&max_value/10;

 if 0<=&var_expl<intervalle then nclasse=1;

 if intervalle<=&var_expl<2*intervalle then nclasse=2;

 if 2*intervalle<=&var_expl<3*intervalle then nclasse=3;

 if 3*intervalle<=&var_expl<4*intervalle then nclasse=4;

 if 4*intervalle<=&var_expl<5*intervalle then nclasse=5;

 if 5*intervalle<=&var_expl<6*intervalle then nclasse=6;

 if 6*intervalle<=&var_expl<7*intervalle then nclasse=7;

 if 7*intervalle<=&var_expl<8*intervalle then nclasse=8;

 if 8*intervalle<=&var_expl<9*intervalle then nclasse=9;

 if 9*intervalle<=&var_expl<=10*intervalle then nclasse=10;

run;

 

proc sort data=&fichier;

 by nclasse;

run;

 

proc means data=&fichier noprint;

 by nclasse;

 var &var_expl;

 output out=moy mean=moyenne;

run;

 

proc sort data=&fichier;

 by nclasse &vary;

run;

 

proc means data=&fichier noprint;

 where &vary=0;

 by nclasse;

 var &vary;

 output out=nombre0 n=nbr0;

run;

 

proc means data=&fichier noprint;

 where &vary=1;

 by nclasse;

 var &vary;

 output out=nombre1 n=nbr1;

run;

 

data nombre;

 merge nombre1 nombre0;

 by nclasse;

 logit_p=log(nbr0/nbr1);

 drop _TYPE_ _FREQ_;

run;

 

data &fichier;

 merge &fichier moy nombre;

 by nclasse;

 drop _TYPE_ _FREQ_ nbr0 nbr1;

run;

 

goptions reset=all;

symbol1 c=blue v=dot;

proc gplot data=&fichier;

  title“&vary*&var_expl”;

  plot pred*&var_expl;

run;quit;title;

 

goptions reset=all;

symbol1 c=green v=dot;

proc gplot data=&fichier;

  title“&vary*&var_expl”;

  plot logit_p*moyenne;

run;quit;title;

 

data &fichier;

 set &fichier;

 drop logit_p moyenne;

run;

 

%mend;

 

Si vous avez des questions, n’hésitez pas  !!!

 

Simon Olivier Fournier

 

P.S. Je vais essayer de vous envoyer d’autres choses que des macros les prochaines fois !!