Vous êtes sur la page 1sur 15

La rgression logistique gnralise avec la procdure LOGISTIC

Sommaire
I / Rgression logistique gnralise ________________________________________________ 3 a. b. a. b. a. b. a. b. c. Introduction _____________________________________________________________ 3 Prsentation de lexemple tudier__________________________________________ 3 Syntaxe de la proc LOGISTIC dans le cas dune rgression gnralise ___________ 4 Analyse de la sortie _______________________________________________________ 4 Enonc des formules: _____________________________________________________ 8 Ecriture des quations logistiques de notre exemple: ___________________________ 8 Obtention des probabilits prdites: _________________________________________ 9 Retrouver les probabilits prdites, par le calcul: ______________________________ 9 Comment faire des prvisions partir de nouvelles donnes ? __________________ 11 1. Utilisation de loption PREDPROBS= : _______________________________________ 11 2. Utilisation des options OUTEST= et INEST=:__________________________________ 12 3. Le scoring avec SAS System 9: ___________________________________________ 13

II / Modlisation avec la proc LOGISTIC____________________________________________ 4

III / Ecriture des quations logistiques gnralises ___________________________________ 8

IV / Calcul des probabilits et prdiction: ___________________________________________ 9

La rgression logistique gnralise avec la procdure LOGISTIC


I / Rgression logistique gnralise
a. Introduction Depuis la version 8.2 de SAS, la procdure LOGISTIC permet, en plus des rgressions logistiques binaires et ordinales, de raliser des rgressions logistiques gnralises (tout comme la procdure CATMOD). La variable rponse est, dans ce cas, de type nominale et prend un nombre limit (>2) de valeurs. Dans ce document, un exemple, ralis en version 8.2, sera dtaill de lcriture du modle jusqu lobtention de prdictions. Un bref aperu de la proc LOGISTIC dans SAS System 9 sera galement donn.

b. Prsentation de lexemple tudier Ces donnes recensent les prfrences que les enfants et les adolescents filles et garons ont, en matire de sucreries.
data Confiserie; format Type $9.; input Sexe $ Age $ Type $ datalines; garon enfant chocolat 2 garon enfant caramel 13 garon enfant bonbon 13 fille enfant chocolat 23 fille enfant caramel 3 fille enfant bonbon 8 ; run;

count @@; garon ado chocolat garon ado caramel garon ado bonbon fille ado chocolat fille ado caramel fille ado bonbon 10 19 3 6 14 16

Ltude vise exprimer le choix du type de sucrerie en fonction de lge et du sexe du sujet concern. Ces donnes ne proviennent pas dun questionnaire rel, mais ont t fabriques pour les besoins de notre exemple.

II / Modlisation avec la proc LOGISTIC


a. Syntaxe de la proc LOGISTIC dans le cas dune rgression gnralise La syntaxe que utilise est la mme que pour une rgression binaire (variable rponse deux modalits). Par dfaut, loption LINK= de linstruction MODEL est positionne LINK=LOGIT. Pour accder la rgression gnralise, il faut indiquer loption LINK=GLOGIT.
proc logistic data=Confiserie; freq count; class sexe(ref='fille') Age(ref='enfant') / param=ref; model type(ref='chocolat') = sexe Age / link=glogit; run;

Daprs la table Confiserie, la variable rponse type est nominale trois modalits {bonbon, caramel, chocolat}. Pour notre tude, cest chocolat qui a t choisi comme modalit de rfrence, grce loption REF= de linstruction MODEL. Si aucun choix navait t fait, cest la modalit situe en dernire position dans lordre alphabtique qui aurait t la modalit de rfrence . Les modalits de rfrence des variables explicatives catgorielles peuvent galement tre spcifies par une option REF=, au niveau de linstruction CLASS, comme cest le cas ici , pour les variables sexe et age.

b. Analyse de la sortie Comme pour toutes les rgressions, la sortie prsente un bref tableau rcapitulatif de ltude mene, o apparat notamment le type de la rgression demande : generalized logit, dans le cas prsent.
The LOGISTIC Procedure Model Information Data Set Response Variable Number of Response Levels Number of Observations Frequency Variable Sum of Frequencies Model Optimization Technique WORK.CONFISERIE Type 3 12 count 130 generalized logit Fisher's scoring

Vient ensuite le tableau concernant le profil de la variable rponse type : on y retrouve ses trois modalits , et la modalit de rfrence:
Ordered Value 1 2 3 Response Profile Total Frequency 40 41 49

Type bonbon chocolat caramel

Logits modeled use Type='chocolat' as the reference category.

Juste aprs, le tableau Class Level Information doit toujours tre gard en mmoire, puisquil indique les modalits de rfrence choisies pour chacune des variables de classe, et la faon dont ont t gnres les variables indicatrices. (Vous trouverez plus de renseignements dans larticle Allo support N10, intitul La gestion des variables catgorielles dans la proc LOGISTIC).
Class Level Information Design Variables Class Sexe Value fille garon ado enfant 1 0 1 1 0

Age

Les rsultats asymptotiques qui suivent tmoignent de la lgitimit du modle. Le test global BETA=0 prsente une p-value (Pr > ChiSq) infrieure 0.05, ce qui signifie quau moins un des facteurs tudis joue un rle dans le choix du type de sucrerie. La partie Analysis of Effects indique que les deux effets sexe et ge entrent en considration dans le modle (p-value > 0.05).
Model Convergence Status Convergence criterion (GCONV=1E-8) satisfied.

Model Fit Statistics Intercept and Covariates

Criterion

Intercept Only

AIC SC -2 Log L

288.537 294.272 284.537

275.480 292.685 263.480

Testing Global Null Hypothesis: BETA=0 Test Likelihood Ratio Score Wald Chi-Square 21.0577 19.8919 17.5469 DF 4 4 4 Pr > ChiSq 0.0003 0.0005 0.0015

Type III Analysis of Effects Wald Chi-Square 12.2377 7.8266

Effect Sexe Age

DF 2 2

Pr > ChiSq 0.0022 0.0200

Les paramtres estims apparaissent ensuite. Contrairement la rgression logistique binaire, on obtient plusieurs intercept ainsi que plusieurs paramtres (un pour chaque modalit de la variable rponse, sauf pour la modalit de rfrence). A ct de chaque variable de classe figure la modalit concerne.
Parameter Intercept Intercept Sexe Sexe Age Age Analysis of Maximum Likelihood Estimates Standard Error 0.3461 0.4216 0.4736 0.4742 0.4534 0.4685 Wald Chi-Square 1.0856 8.8208 1.1220 11.3522 0.6895 7.3778

Type bonbon caramel bonbon caramel bonbon caramel

DF 1 1 1 1 1 1

Estimate -0.3606 -1.2521 0.5017 1.5977 0.3765 1.2724

Pr > ChiSq 0.2975 0.0030 0.2895 0.0008 0.4063 0.0066

garon garon ado ado

Les estimations des Odds ratio ci-dessous, nous permettent davancer quun garon a environ 5 (4.942) fois plus de chances de choisir une confiserie de type caramel plutt que chocolat par rapport une fille. De mme, un adolescent a 3.5 (3.570) fois plus de chances de choisir une confiserie de type caramel plutt que chocolat, par rapport un enfant.
Effect Sexe Sexe Age Age garon garon ado ado vs vs vs vs fille fille enfant enfant Odds Ratio Estimates Point Estimate 1.651 4.942 1.457 3.570 95% Wald Confidence Limits 0.653 1.951 0.599 1.425 4.178 12.518 3.544 8.941

Type bonbon caramel bonbon caramel

Les odds ratio se calculent habituellement par la formule suivante : exp(2*estimate). Cependant, cette formule dpend de la paramtrisation choisie pour la variable de classe expliquer. Ici, la mthode utilise est REF (reference cell coding), et la formule appliquer est: exp(estimate).

III / Ecriture des quations logistiques gnralises


a. Enonc des formules: La formule gnrale des quations gnralises est donne ci-dessous :

log

pi = i ' X , pk + 1

i { 1,L, k + 1},

o k+1 est le nombre de modalits de la variable Rponse.

b. Ecriture des quations logistiques de notre exemple: Ce sont les paramtres estims, obtenus dans la sortie prcdente, qui vont permettre dcrire les quations logistiques du modle obtenu. Ces mmes paramtres peuvent tre rcuprs dans une table SAS, grce loption OUTEST= . La variable rponse type ayant trois modalits, avec chocolat comme modalit de rfrence, nous obtenons les 2 quations suivantes: Log([Pr(Type=bonbon) / Pr(Type=chocolat)])= -0.3606 + 0.5017 * (Sexe=garon) + 0.3765 * (Age=ado) Log([Pr(Type=caramel)/Pr(Type=chocolat)])= -1.2521 + 1.5977 * (Sexe=garon) + 1.2724 * (Age=ado) Ces quations logistiques sadaptent, pour chaque combinaison des variables explicatives: Pour Sexe=garon et Age=ado: Log([Pr(Type=bonbon) / Pr(Type=chocolat)])= -0.3606 + 0.5017 + 0.3765 = 0.5176 Log([Pr(Type=caramel)/Pr(Type=chocolat)])= -1.2521 + 1.5977 + 1.2724 = 1.618 Pour Sexe=garon et Age=enfant : Log([Pr(Type=bonbon) / Pr(Type=chocolat)])= -0.3606 + 0.5017 = 0.1411 Log([Pr(Type=caramel)/Pr(Type=chocolat)])= -1.2521 + 1.5977 = 0.3456 Pour Sexe=fille et Age=ado: Log([Pr(Type=bonbon) / Pr(Type=chocolat)])= -0.3606 + 0.3765 = 0.0159 Log([Pr(Type=caramel)/Pr(Type=chocolat)])= -1.2521 + 1.2724 = 0.0203 Pour Sexe=fille et Age=enfant: Log([Pr(Type=bonbon) / Pr(Type=chocolat)])= -0. 3606 Log([Pr(Type=caramel)/Pr(Type=chocolat)])= -1.2521

IV / Calcul des probabilits et prdiction:


a. Obtention des probabilits prdites: Pour obtenir les probabilits de choisir chaque rponse, il suffit de prciser loption PREDPROBS=I (Individual), au niveau de linstruction OUTPUT, qui cre une table en sortie:

proc logistic data=Confiserie; freq count; class sexe(ref='fille') Age(ref='enfant') / param=ref; model type(ref='chocolat') = sexe Age / link=glogit; output out=out predprobs = I; run; proc print data=out; run;

La table out en sortie se prsente, comme suit :


Obs Type 1 2 3 4 5 6 7 8 9 10 11 12 chocolat chocolat caramel caramel bonbon bonbon chocolat chocolat caramel caramel bonbon bonbon Sexe garon garon garon garon garon garon fille fille fille fille fille fille Age enfant ado enfant ado enfant ado enfant ado enfant ado enfant ado count 2 10 13 19 13 3 23 6 3 14 8 16 _FROM_ chocolat chocolat caramel caramel bonbon bonbon chocolat chocolat caramel caramel bonbon bonbon _INTO_ caramel caramel caramel caramel caramel caramel chocolat caramel chocolat caramel chocolat caramel IP_bonbon 0.32306 0.21732 0.32306 0.21732 0.32306 0.21732 0.35159 0.33460 0.35159 0.33460 0.35159 0.33460 IP_chocolat 0.28056 0.12951 0.28056 0.12951 0.28056 0.12951 0.50425 0.32932 0.50425 0.32932 0.50425 0.32932 IP_caramel 0.39638 0.65317 0.39638 0.65317 0.39638 0.65317 0.14416 0.33607 0.1441610 0.33607 0.14416 0.33607

Cette table reprend les donnes de dpart, auxquelles viennent sajouter des variables automatiques : - _FROM_: contient la valeur formate de la rponse observe - _INTO_ : contient la valeur formate de la rponse prdite (correspondant la plus forte probabilit) - pour chaque modalit de la variable rponse, des variables _IP_, correspondant aux probabilits individuelles prdites.

Une question qui revient souvent est de savoir comment retrouver, par le calcul, les probabilits prdites.

b. Retrouver les probabilits prdites, par le calcul: La rsolution des quations logistiques gnralises, nous amne la formule des probabilits prdites suivante: 9

pi =

exp( i ' X ) , i { 1,L, k + 1}, i exp( ' X )


i

o k+1 est le nombre de modalits de la variable Rponse

k + 1 tant considr zro (vecteur zro), on en dduit: 1 pk + 1 = exp( i ' X )


i

Pour obtenir les probabilits prdites, il suffit donc dappliquer ces formules, pour chaque combinaison de variables explicatives. Ainsi, pour Sexe=garon et Age=ado, on obtient: Pr(Type=bonbon) = exp(0.5176) = 0.21733 1 + exp(0.5176) + exp(1.618) exp(1.618) 1 + exp(1.618) + exp(0.5176) = 0.65315

Pr(Type=caramel)

Pr(Type=chocolat)

= 1- Pr(Type=caramel) - Pr(Type=bonbon) = 1 1 + exp(0.5176) + exp(1.618) = 0.12952

Plus facilement, cela peut se coder de la faon suivante :


data prob(drop=logbsurc logssurc count); set out; /* Premire quation logistique: */ logbsurc = -0.3606 + 0.5017 * (Sexe='garon') + 0.3765 * (Age='ado'); /* Deuxime quation logistique: */ logssurc = -1.2521 + 1.5977 * (Sexe='garon') + 1.2724 * (Age='ado'); /* Calcul des probabilits prdites: */ PCalc_bonbon = exp(logbsurc)/(1+exp(logbsurc)+exp(logssurc)); PCalc_caramel = exp(logssurc)/(1+exp(logbsurc)+exp(logssurc)); PCalc_chocolat=1-PCalc_bonbon-PCalc_caramel; run; title 'Comparaison entre les probabilits obtenues par l''option PREDPROBS= et celles calcules manuellement'; proc print data=prob; run;

10

On vrifie ainsi aisment que les probabilits calcules partir du modle obtenu sont identiques (aux diffrences darrondis prs) celles calcules par loption PREDPROBS=I :
Comparaison entre les probabilits obtenues par l'option PREDPROBS=et celles calcules manuellement PCalc_ PCalc_ PCalc_ bonbon caramel chocolat

Obs Type chocolat 1 chocolat 2 chocolat 3 caramel 4 caramel 5 bonbon 6 bonbon 7 chocolat 8 chocolat 9 caramel 10 caramel 11 bonbon 12 bonbon

Sexe

Age

_FROM_

_INTO_

IP_bonbon IP_chocolat IP_caramel

garon garon garon garon garon garon fille fille fille fille fille fille

enfant ado enfant ado enfant ado enfant ado enfant ado enfant ado

chocolat chocolat caramel caramel bonbon bonbon chocolat chocolat caramel caramel bonbon bonbon

caramel caramel caramel caramel caramel caramel chocolat caramel chocolat caramel chocolat caramel

0.32306 0.21732 0.32306 0.21732 0.32306 0.21732 0.35159 0.33460 0.35159 0.33460 0.35159 0.33460

0.28056 0.12951 0.28056 0.12951 0.28056 0.12951 0.50425 0.32932 0.50425 0.32932 0.50425 0.32932

0.39638 0.65317 0.39638 0.65317 0.39638 0.65317 0.14416 0.33607 0.14416 0.33607 0.14416 0.33607

0.32307 0.21733 0.32307 0.21733 0.32307 0.21733 0.35159 0.33460 0.35159 0.33460 0.35159 0.33460

0.39638 0.65315 0.39638 0.65315 0.39638 0.65315 0.14417 0.33608 0.14417 0.33608 0.14417 0.33608

0.28055 0.12952 0.28055 0.12952 0.28055 0.12952 0.50425 0.32932 0.50425 0.32932 0.50425 0.32932

c. Comment faire des prvisions partir de nouvelles donnes ? La procdure SCORE nest pas utilisable dans le cas dune rgression multinomiale, mais il reste, malgr tout, deux solutions que nous allons dvelopper : 1. Utilisation de loption PREDPROBS= : Il est possible de faire de la prdiction en ajoutant simplement les nouvelles donnes, pour lesquelles la variable rponse est manquante, aux donnes servant construire le modle. Les observations ainsi ajoutes ne seront pas utilises pour la construction du modle, comme en tmoigne une note dans la sortie:
NOTE: 1 observation was deleted due to missing values for the response or explanatory variables.

Cependant, les prdictions seront calcules pour chacune dentre elles. Ci-dessous, la prdiction calcule pour lobservation 13 est caramel, car la probabilit dobtenir une caramel, pour un adolescent garon (IP_caramel) est plus lve que celle dobtenir bonbon ou chocolat.

11

Prdiction, avec loption PREDPROBS=:


Obs Type 1 2 3 4 5 6 7 8 9 10 11 12 13 chocolat chocolat caramel caramel bonbon bonbon chocolat chocolat caramel caramel bonbon bonbon Sexe garon garon garon garon garon garon fille fille fille fille fille fille garon Age enfant ado enfant ado enfant ado enfant ado enfant ado enfant ado ado count 2 10 13 19 13 3 23 6 3 14 8 16 3 _FROM_ chocolat chocolat caramel caramel bonbon bonbon chocolat chocolat caramel caramel bonbon bonbon _INTO_ caramel caramel caramel caramel caramel caramel chocolat caramel chocolat caramel chocolat caramel caramel IP_bonbon 0.32306 0.21732 0.32306 0.21732 0.32306 0.21732 0.35159 0.33460 0.35159 0.33460 0.35159 0.33460 0.21732 IP_chocolat 0.28056 0.12951 0.28056 0.12951 0.28056 0.12951 0.50425 0.32932 0.50425 0.32932 0.50425 0.32932 0.12951 IP_caramel 0.39638 0.65317 0.39638 0.65317 0.39638 0.65317 0.14416 0.33607 0.1441610 0.33607 0.14416 0.33607 0.65317

2. Utilisation des options OUTEST= et INEST=: Pour cette deuxime solution, la prdiction se fait en deux temps: - une premire proc LOGISTIC est lance sur les donnes servant fabriquer le modle. Les paramtres estims du modle sont stocks, sous forme de table, grce loption OUTEST= - une deuxime proc LOGISTIC ralise les prdictions sur de nouvelles donnes, en appliquant le modle obtenu dans la premire tape, grce loption INEST=. Loption MAXITER est mise zro, afin que le modle ne soit pas recalcul.

proc logistic data=Confiserie outest=outest; freq count; class sexe(ref='fille') Age(ref='enfant') / param=ref; model type(ref='chocolat') = sexe Age/ link=glogit; output out=out predprobs = I; run; proc logistic data=new inest=outest; class sexe(ref='fille') Age(ref='enfant') / param=ref; model type(ref='chocolat') = sexe Age / link=glogit maxiter=0; output out=newout predprobs = I; run;

Loption MAXITER tant positionne 0, lavertissement ci-dessous apparat la fois dans la log et dans la sortie :

12

Iteration limit reached without convergence. WARNING: Convergence was not attained in 0 iterations. You may want to increase the maximum number

iterations (MAXITER= option) or change the convergence criteria (ABSFCONV=, FCONV=, GCONV=, XCONV= options) in the MODEL statement.
of WARNING: The LOGISTIC procedure continues in spite of the above warning. Results shown are based on the last maximum likelihood iteration. Validity of the model fit is questionable.

Cependant, le systme poursuit le traitement, en se servant des paramtres estims fournis (INEST=) pour calculer les prdictions. Prcautions demploi : - Cette mthode doit tre exclusivement utilise pour calculer les probabilits prdites : toutes les statistiques bases sur la matrice de covariance, comme les intervalles de confiance des probabilits prdites, seront incorrectes, puisque la matrice de covariance du modle dorigine nest pas utilise. - En toute logique, les observations de la table, sur laquelle doivent se faire les prdictions (new dans notre exemple), comportent une variable rponse non renseigne. Dans la pratique, il savre que, pour que la prdiction fonctionne, il est obligatoire que cette table contienne au moins quelques observations ayant une variable rponse renseigne. 3. Le scoring avec SAS System 9: A partir de SAS System 9, quelques modifications de syntaxe apparaissent dans la proc LOGISTIC. Les prdictions peuvent maintenant tre obtenues grce linstruction SCORE et les paramtres du modle sont dsormais stocks, grce loption OUTMODEL= .
proc logistic data=Confiserie outmodel=sasuser.ConfModel; freq count; class sexe(ref='fille') Age(ref='enfant') / param=ref; model type(ref='chocolat') = sexe Age / link=glogit; score out=Score1; run;

Le modle est rutilisable grce loption INMODEL= pour calculer les prdictions sur de nouvelles donnes:
proc logistic inmodel=sasuser.ConfModel; score data=Confiserie out=Score2; run;

Pour plus de renseignements, un exemple est prsent dans la documentation en ligne de SAS System 9 (Example 40.13: Scoring Data Sets with the SCORE Statement).

13

Depuis la version 8, lutilisation de la procdure LOGISTIC tend se simplifier: les variables de classe peuvent maintenant tre traites lintrieur de la procdure, grce linstruction CLASS, et des rgressions logistiques gnralises peuvent tre menes sur des variables rponses nominales. Laperu de la proc LOGISTIC sous SAS System 9 volue dans ce sens, en proposant une syntaxe de plus en plus intuitive et simplifie. Blandine Colas Ingnieur Consultant

14

15