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
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…..
OpenEdition suggests that you cite this post as follows:
Arthur Charpentier (September 22, 2010). Qui peut m’aider à comprendre les sorties de SAS ? Freakonometrics. Retrieved October 3, 2024 from https://doi.org/10.58079/oueu
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
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é
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…
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…
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).