Qui peut m’aider à comprendre les sorties de SAS ?

Je m’étais promis que j’évoquerais une bizarrerie rencontrée avec SAS lors d’une formation…. Écrire ce billet permettra à ceux qui auraient des éléments d’explication de poster un commentaire.
Pour cela, comparons une régression logistique faite avec deux outils différents, sous SAS,

  • avec la procédure logistique

Le code pour faire une régression logistique ressemble à ça

PROC LOGISTIC DATA=base_logistq;
FORMAT age_soc f2_ageso.;
CLASS sexe_soc age_soc fract_paiemt;
MODEL SPOCAM = sexe_soc age_soc fract_paiemt / selection=stepwise;
RUN; QUIT;

ce qui donne la sortie suivante (je passe l’introduction pour insister sur les coefficients)

                                 The LOGISTIC Procedure

                   Analyse des estimations de la vraisemblance maximum
                                                     Erreur         Khi 2
  Paramètre                    DF    Estimation         std       de Wald    Pr > Khi 2

  Intercept                     1        1.7833      0.0676      696.9022        <.0001
  sexe_soc     Femme            1       -0.2429      0.0619       15.4237        <.0001
  age_soc      1_AGESOC_-60     1        0.4578      0.0667       47.1020        <.0001
  fract_paiemt Annuel           1        0.6021      0.0997       36.4862        <.0001
  fract_paiemt Mensuel          1       -0.5410      0.0842       41.2342        <.0001
  • avec la procédure genmod (car la régression logistique est un glm)

On peut faire exactement la même chose (théoriquement) en ajustement un modèle GLM,

PROC GENMOD DATA=base_logistq;
FORMAT age_soc f2_ageso.;
CLASS sexe_soc age_soc fract_paiemt;
MODEL SPOCAM = sexe_soc age_soc fract_paiemt / dist = binomial;
RUN;

et la sortie ressemble à ça

                                  The GENMOD Procedure
                      Analyse des résultats estimés de paramètres

                                                  Erreur      Wald 95Limites
Paramètre                     DF   Estimation   standard      de confiance %       Khi 2
Intercept                      1       1.5073     0.1501     1.2131     1.8014    100.85
sexe_soc       Femme           1      -0.4859     0.1237    -0.7284    -0.2434     15.42
sexe_soc       Homme           0       0.0000     0.0000     0.0000     0.0000       .
age_soc        1_AGESOC_-60    1       0.9156     0.1334     0.6542     1.1771     47.10
age_soc        Z_AGESOC_+60    0       0.0000     0.0000     0.0000     0.0000       .
fract_paiemt   Annuel          1       0.6634     0.1770     0.3165     1.0104     14.05
fract_paiemt   Mensuel         1      -0.4798     0.1510    -0.7759    -0.1838     10.09
fract_paiemt   Semestriel      0       0.0000     0.0000     0.0000     0.0000       .
Scale                          0       1.0000     0.0000     1.0000     1.0000
  • comparaison des deux sorties

Si on regarde l’impact du sexe par exemple, dans la première sortie on peut lire

sexe_soc     Femme            1       -0.2429      0.0619       15.4237        <.0001
alors que dans la seconde sortie, on a
sexe_soc       Femme           1      -0.4859     0.1237    -0.7284    -0.2434     15.42
sexe_soc       Homme           0       0.0000     0.0000     0.0000     0.0000

On dira ce qu’on veut, mais moi je trouve cette différence troublante…. Dans la seconde sortie, le coefficient vaut le double de l’autre….
Alors SAS semble s’y retrouver car si on lui demande d’afficher le score prédit pour un individu au hasard (le premier de la base par exemple), les prédictions sont très proches,

                           fract_                                 proba1_       proba1_
  Obs  sexe_soc   age_soc  paiemt      SPOCAM  proba1_logit        
1      Homme          71  Annuel         0      0.10242637    0.10241302

Si quelqu’un sait interpréter ce qui est fait avec cette procédure logistique (car R donne la même chose que la sortie GLM), je suis preneur…..



5 thoughts on “Qui peut m’aider à comprendre les sorties de SAS ?”

  1. au fait, on s’est quand même penché à deux pour trouver la solution. Gilbert Colletaz a trouvé l’intuition, moi, je n’ai fait que fouiller dans l’aide 😉

    a+

    Sébastien Ringuedé

    REPONSE: ça me rassure un peu 🙂
    sinon Avner m’a envoyé des bribes de réponses, que je vais essayer de remettre en forme.
    Merci

  2. Bonjour

    La différence ?

    elle est liée à la manière selon laquelle sont codées les catégories (construites avec les variables CLASS).

    Pour que PROC LOGISTIC et PROC GENMOD donnent les mêmes résultats, il faut ajouter à l’instruction CLASS de PROC GENMOD l’option PARAM=effect

    CLASS sexe_soc age_soc fract_paiemt / PARAM=effect ;

    et on retrouve la même chose 😉

    plus d’info ici :
    http://support.sas.com/documentatio

    a+

    Sébastien Ringuedé

  3. Bonjour,

    En fait, il s’agit juste d’un problème de codage des variables qualitatives. Dans SAS on peut modifier cette codification via l’option PARAM de l’instruction CLASS (l’aide de SAS est assez complète sur ce point, voir la section “CLASS Variable Parameterization” ou directement ici:
    http://support.sas.com/documentatio
    Dans la première estimation avec logistic, par défaut les classes sont codées par autant de variables trinaires (PARAM=EFFECT par défaut) (prenant comme valeurs -1 — pour indiquer la modalité de référence — ou 0 ou 1) que de modalités moins une (du coup la matrice de codage des variables qualitatives — ou ‘design matrix’ — est bien de plein rang).
    Pour la seconde estimation avec genmod (par défaut, PARAM=GLM), c’est codé en autant de variable binaires (prenant comme valeurs 0 ou 1 cette fois) que de modalités (la design matrix n’est donc plus de plein rang mais ça ne gêne pas l’estimation puisque la variable binaire indiquant la modalité de référence ne semble pas être prise en compte — enfin je crois).
    D’une codification à l’autre, seule l’interprétation des paramètres change, pas la probabilité finale.
    Mais j’avoue ne pas trop comprendre la différence entre cette codification et celle désignée par ‘REF’ (la codification “naturelle”) car dans la pratique, que ce soit en GLM ou en REF, la variable binaire indiquant la modalité de référence n’intervient pas dans le calcul de la probabilité finale. La seule différence est qu’avec REF on peut choisir facilement sa modalité de référence tandis qu’avec GLM il faut préalablement trier selon les variables explicatives et SAS comprendra que la dernière modalité sera celle de référence. Pour me convaincre, j’ai calculé les probabilités prédites avec les 2 codifications dans un fichier XL que je vous envoie.

    REPONSE: merci Olivier, je mets ici le fichier que tu m’as envoyé par mail…

  4. Salut,

    Pour répondre à ta question. La principale différence est que ca n’a pas été programmé par la même personne. D’où parfois des résultats différents….

    Amitiés

    Avner

    —————————————————————-

    Comparison of CATMOD, GENMOD, LOGISTIC, and PROBIT Procedures

    The CATMOD, GENMOD, LOGISTIC, and PROBIT procedures can all be used for statistical modeling of categorical data. The CATMOD procedure provides maximum likelihood estimation for logistic regression, including the analysis of logits for dichotomous outcomes and the analysis of generalized logits for polychotomous outcomes. It provides weighted least squares estimation of many other response functions, such as means, cumulative logits, and proportions, and you can also compute and analyze other response functions that can be formed from the proportions corresponding to the rows of a contingency table. In addition, a user can input and analyze a set of response functions and user-supplied covariance matrix with weighted least squares. With the CATMOD procedure, by default, all explanatory (independent) variables are treated as classification variables.

    The GENMOD procedure is also a general statistical modeling tool which fits generalized linear models to data: it fits several useful models to categorical data including logistic regression, the proportional odds model, and Poisson regression. The GENMOD procedure also provides a facility for fitting generalized estimating equations to correlated response data that are categorical, such as repeated dichotomous outcomes. The GENMOD procedure fits models using maximum likelihood estimation, and you include classification variables in your models with a CLASS statement. PROC GENMOD can perform type I and type III tests, and it provides predicted values and residuals.

    The LOGISTIC procedure is specifically designed for logistic regression. It performs the usual logistic regression analysis for dichotomous outcomes and it fits the proportional odds model and the generalized logit model for ordinal and nominal outcomes, respectively, by the method of maximum likelihood. With the CLASS statement, you can include independent CLASS variables in the model. This procedure has capabilities for a variety of model-building techniques, including stepwise, forward, and backward selection. It computes predicted values, the receiver operating characteristics (ROC) curve and the area beneath the curve, and a number of regression diagnostics. It can create output data sets containing these values and other statistics. PROC LOGISTIC can perform a conditional logistic regression analysis (matched-set and case-controlled) for binary response data. For small data sets, PROC LOGISTIC can perform the exact conditional logistic analysis of Hirji, Mehta, and Patel (1987) and Mehta, Patel, and Senchaudhuri (1992).

    The PROBIT procedure is designed for quantal assay or other discrete event data. In additional to performing the logistic regression analysis, it can estimate the threshold response rate. PROC PROBIT can also estimate the values of independent variables that yield a desired response. With the CLASS statement, you can include CLASS variables in the model. PROC PROBIT allows only the less-than-full-rank parameterization for the CLASS variables.

    Stokes, Davis, and Koch (2000) provide substantial discussion of these procedures, particularly the use of the FREQ, LOGISTIC, GENMOD, and CATMOD procedures for statistical modeling.

    REPONSE: merci Avner, il semble effectivement y avoir des éléments de réponse dans le “Categorical Data Analysis Using The SAS® System”, de Stokes, Davis, and Koch (2000). Par exemple, on apprend que l’algorithme d’utilisation est différent,

    mais je laisse les lecteurs intéressés creuser un peu…

  5. Quelle est la fonction de lien par défaut dans proc genmod ?

    REPONSE: comme on fait une régression binomiale, la fonction de lien par défaut est le lien logistique (c’est le lien canonique). En fait, j’ai aussi une régression probit, qui donne par contre une prédiction assez différentes (à quelques pourcentages près, mais en tous les cas différente des deux obtenues ici).

Leave a Reply

Your email address will not be published. Required fields are marked *