Régression sur variables catégorielles avec la PROC LOGISTIC

Lorsque l'on souhaite effectuer une régression sur une variable qualitative, la régression linéaire classique (voir PROC REG) n'est plus adaptée. Il faut mettre en oeuvre d'autres méthodes. L'une d'elle est la régression logistique.

Considérons y une variable dichotomique, y vaut 0 ou 1, et x1 x2 x3 des régresseurs (variables quantitatives continues). Le modèle logistique correspondant à l'instruction suivante :

MODEL y = x1 x2 x3 ;

Correspond au modèle suivant :

ln[P(y=0)/P(y=1)]=b0+b1.x1+b2.x2+b3.x3

Par défaut, SAS modélise la probabilité de l'événement correspondant à la plus basse des modalités de y. La méthode utilisée est la maximisation de la vraisemblance de y sachant x.

Les tests réalisés relativement à la nullité des coefficients sont des tests de Wald. Concernant la validité globale du modèle, le test du score et le test du rapport des maxima de vraisemblance sont édités (on rappelle qu'ils sont équivalents asymptotiquement), en plus des critères d'Aikaike et de Schwartz. On rappelle que parmi une liste de modèles emboîtés, un modèle est d'autant meilleur que ces critères sont faibles.

Par défaut, la fonction de lien utilisée est une loi logistique (fonction logit). On pourrait demander une loi normale centrée réduite (fonction de type probit) ou une loi de Gompertz (fonction de type gompit), mais outre que la logit donne des résultats proches de la probit, elle est plus facile à interpréter, notamment en termes d'odds ratios.
Les odds ratios sont des quantités calculées pour chacun des paramètres. Pour une variable dichotomique et avec une fonction de lien de type probit, un odd ratio égal à w pour la variable xi s'interprète comme suit :
"Lorsque xi augmente d'une unité, les chances Y equal a / Y not equal a sont multipliées par w"

Enfin notons que la procédure calcule le nombre de paires concordantes (dont la prévision concorde avec la vraie valeur) ainsi que quatre statistiques obtenues à partir du nombre de paires concordantes, discordantes et tied : D de Sommer, g, ta et c. Plus ces valeurs sont grandes, et meilleure est l'adéquation du modèle aux données.

Remarque : La PROC LOGISTIC permet aussi de faire de la régression sur variable polytomique (comprenant plus de 2 modalités). La syntaxe est exactement la même que pour une variable dichotomique, l'interprétation des coefficients est seulement un peu plus acrobatique... Toutefois, la PROC LOGISTIC sur variable polytomique suppose l'égalité des pentes, à savoir que le modèle régissant P(y=2)/P(y=1) est le même que celui qui régit P(y=1)/P(y=0), etc. Cette hypothèse forte fait l'objet d'un "test d'égalité des pentes" édité en début de sortie. Si l'hypothèse nulle est rejetée, cela signifie qu'on ne peut accepter raisonnablement l'hypothèse d'égalité des pentes, et il faut alors utilisé une autre procédure, comme la PROC CATMOD.
Dans le cas où l'on accepte l'égalité des pentes, ou dans le cas dichotomiques, on préfèrera la PROC LOGISTIC car elle édite les odds-ratios, ce que n'autorise pas la PROC CATMOD

Remarque 2 : Lorsqu'on ne dispose pas de données individuelles, mais uniquement de données de comptage (nombre de cas selon certains profils), on peut également utiliser la PROC LOGISTIC. Dans ce cas, on fait un modèle dit "events/trials" où la variable "events" est le nombre de cas recensés par classe, et la variable "trials" le nombre d'individus par classe. On ne détaille pas ce type de modèle ici.

PROC LOGISTIC data= <options> ;
  < CLASS var_quali ; >
  MODEL y = variables </options> ;
  MODEL events / trials = variables </options> ;
  < CONTRAST 'label' l11 l12 ... l1n ... lm1 ... lmn </options> ; >

Les instructions :

Une instruction MODEL doit être spécifiée. Elle sera précédée d'une instruction CLASS si le modèle comporte des variables qualitatives.

Comme dans la PROC REG, l'instruction TEST permet de faire des tests sur les paramètres estimés. Par exemple, si l'on veut tester si b1 = b2 , on écrit :

TEST x1=x2 ;

L'instruction CONTRAST permet également d'effectuer des tests sur les paramètres estimés. Plus exactement, elle permet de tester (H0) : Lb = 0 où L est la matrice dont lij est l'élément à la ligne i, colonne j ; n est le nombre de variables du modèle et m le nombre d'équations du système testé.

L'instruction BY permet toujours de définir des sous-populations. Dans ce cas, la modélisation est réalisée pour chacune de ces sous-populations.

L'instruction FREQ permet de définir une variable entière dont les valeurs indique le nombre de fois que l'observation courante doit être comptée.

L'instruction WEIGHT permet toujours de pondérer les observations.

L'instruction OUTPUT permet de récupérer certaines des grandeurs calculées dans une table qui est celle indiquée dans OUT= . Il suffit d'en donner la suite sous la forme mot_clé = noms_variables.
Par exemple :

OUTPUT OUT=resultat P=yhat H=hatdiag1 hatdiag2 hatdiag3 ;

stocke dans la table resultat la valeur estimée de y (variable nommée yhat) ainsi que la valeur du levier pour chacun des régresseurs (variables nommée yres) - voir paragraphe sur les observations atypiques dans la description de la PROC REG.


Les options :

L'option simple permet d'éditer des statistiques descriptives simples sur les variables du modèle.

L'option outest= permet de spécifier le nom d'une table dans laquelle on récupère les paramètres estimés.

L'option descending permet de considérer la probabilité de réalisation de la modalité la plus élevée (par défaut c'est la plus basse).

L'option order= permet de choisir l'ordre des modalités de y dans le traitement. order=data ordonne selon l'ordre dans lequel les modalités apparaissent dans la table. order=freq ordonne de la modalité la plus fréquente à la plus rare.

Quelques options de l'instruction MODEL :

L'option link= permet de choisir la fonction de lien (probit, normit ou cloglog).

L'option waldcl calcule des intervalles de confiance pour les paramètres estimés avec la méthode de Wald.

Comme dans la PROC REG, l'option influence sert à repérer les observations influentes. On peut la coupler avec l'option iplots qui génère des graphiques.

Comme dans la PROC REG, on peut utiliser l'option selection= .


Lecture de sorties standards :

proc logistic data=malib.employe descending;
 model prime= anciennete subor;
run;
                                     The LOGISTIC Procedure

                                       Model Information
                         Data Set                      MALIB.EMPLOYE
                         Response Variable             prime
                         Number of Response Levels     2
                         Number of Observations        115
                         Link Function                 Logit
                         Optimization Technique        Fisher's scoring

                                        Response Profile
                                 Ordered                   Total
                                   Value     prime     Frequency

                                       1     O                24
                                       2     N                91

                                    Model Convergence Status
                         Convergence criterion (GCONV=1E-8) satisfied.

                                      Model Fit Statistics
                                                           Intercept
                                            Intercept         and
                             Criterion        Only        Covariates

                             AIC              119.811         89.664
                             SC               122.556         97.898
                             -2 Log L         117.811         83.664


                             Testing Global Null Hypothesis: BETA=0

                     Test                 Chi-Square       DF     Pr > ChiSq

                     Likelihood Ratio        34.1477        2         <.0001
                     Score                   27.9854        2         <.0001
                     Wald                    19.4717        2         <.0001

                           
                            Analysis of Maximum Likelihood Estimates

                                              Standard
              Parameter     DF    Estimate       Error    Chi-Square    Pr > ChiSq

              Intercept      1     -3.3874      0.6221       29.6486        <.0001
              anciennete     1      0.1828      0.0613        8.8792        0.0029
              subor          1      0.1444      0.0487        8.7776        0.0030


                                      Odds Ratio Estimates

                                          Point          95% Wald
                         Effect        Estimate      Confidence Limits

                         anciennete       1.201       1.065       1.354
                         subor            1.155       1.050       1.271


                  Association of Predicted Probabilities and Observed Responses

                        Percent Concordant     90.0    Somers' D    0.802
                        Percent Discordant      9.8    Gamma        0.804
                        Percent Tied            0.3    Tau-a        0.267
                        Pairs                  2184    c            0.901

La sortie standard est composée de 7 tableaux :

  1. Informations sur le modèle : variable régressée, son nombre de modalités, la fonction de lien... Ici on régresse la variable prime de la table malib.employe, qui a deux modalités.
  2. Les modalités de la variable régressée et la fréquence de chacune d'elles. 24 employés ont eu une prime cette année et 91 n'en ont pas eu. C'est la probabilité d'avoir une prime qui est analysée par le modèle, ceci grâce à l'option descending.
    Le modèle estimé est :

    Modèle de l'exemple num 1

    Un message informe de ce que le modèle est convergent.
  3. Critères d'Aikaike, de Schwartz et du rapport des maxima de vraisemblance calculés pour le modèle avec la seule constante comme régresseur et pour le modèle spécifié dans la procédure. Les valeurs de ces critères étant inférieures pour notre modèle que dans le cas de la constante seule, notre modèle n'est a priori pas trop mauvais.
  4. Les trois tests effectués pour la validité globale du modèle. Ici le modèle est globalement valide puisqu'on rejette l'hypothèse de nullité simultanée des paramètres.
  5. Les paramètres estimés et leur significativité. Ici tous les coefficients sont significativement différents de zéro. Il est à noter qu'on n'utilise pas directement la valeur de ces coefficients. La manière dont on les interprète dépend uniquement de leur signe et de leurs ordres de grandeur comparés. Ici on conclut que plus on a d'ancienneté et plus on a de chances d'avoir une prime. De même plus on a de subordonnés, plus on a de chances d'avoir une prime. Les effets de ces deux variables étant comparables.
  6. Les odds ratio. Dans le cas qui nous intéresse ici l'interprétation en est simple : lorsqu'on gagne un an d'ancienneté, le rapport des chances d'avoir une prime sur les risques de ne pas avoir de prime est multiplié par 1,201.
  7. Adaptation du modèle aux données. Ici les prévisions coïncident à 90% avec la réalité observée, donc le modèle est bien adapté.

Un exemple avec options :

proc logistic data=malib.employe order=data outest=param noprint;
 class poste diplome sexe ;
 model prime=sexe diplome poste anciennete subor /selection=stepwise ;
run;

Voici ce que contient la table param :

Table param obtenue avec le programme ci-dessus

L'option de sélection a aboutit au modèle constitué des variables sexe, diplôme et ancienneté. On a récupéré les valeurs des paramètres estimés, ainsi que certains renseignements comme la fonction de lien, le nom de la variable, le résultat du test de convergence et le log de la vraisemblance. Par contre on n'a aucun résultat de tests de significativité des coefficients. Il faudrait les demander explicitement dans une instruction output ou alors renoncer à l'option noprint et regarder la sortie output.