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 !!
24 juillet 2008 à 2:48
bonjour;
j’ai un probleme j’ai besoin de tester la linéarité pour un modèle de regression logistique entre la variable a expliquer et la variable explicative j’arrive pas a comprendre vraiment ce que tu as mi dans ta macro !
peux tu m’expliciter un peu !
value max correspond a la valeure maximale de quelle variable ?
merci d’avance
25 juillet 2008 à 10:11
Bonjour à toi,
Voici un peu plus de détails.
La 1ere étape consiste à séparé ton jeu de données en 10 classes selon les valeurs de ta variables explicatives. &max_value est la valeur tout simplement la valeur maximale de ta variable explicative.
Par exemple, si ma valeur maximale est 200, je vais séparer mes 10 classes par groupe de 20, 0-20, 20-40, 40-60 etc….
Ensuite, je veux obtenir la moyenne de chaque classe pour ma variable explicative. Après, j’obtiens le nombre de 0 et de 1 pour pouvoir construire mon logit (axe des ordonnées).
Ainsi, je regroupe mes trois jeu de données en 1 pour pouvoir ensuite faire mon graphique pour tester l’hypothèse de linéarité.
L’autre graphique (plot pred*&var_expl) sert à tester l’hypothèse d’homogénéité de la variance dans le cas d’une variable catégorique.
J’espère que cela t’aidera,
Bon travail,
Simol