|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Futur Membre du Club
![]() Inscription : mars 2007 Messages : 101 ![]() |
Bonjour,
je suis tombé sur cet article qui traite d'une régression logistique selon un modèle additif : y = x1 + x2 avec x1 et x2 des variables catégorielles de 3 niveaux (1 à 3) et y la variable de réponse binaire. L'article traite de contrastes, mais honnêtement je n'arrive pas à comprendre les 3 exemples de contrastes, pouvez-vous m'aider ? Exemple : Code :
Code :
Merci beaucoup!! ci-après les data : Code :
|
||||||
|
|
00
|
|
|
#2 | ||||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Bonjour.
Oui, ton idée est correcte ; mais non, ton code serait faux. C'est assez fourbe, ça tient à la manière dont SAS code en interne ses coefficients. Car CONTRAST est une série de pondérations à appliquer au tableau des coefficients du modèle : la rédaction du CONTRAST dépend donc beaucoup de la forme de ce tableau de coeffs. Avec PARAM=REF, la modalité de référence est omise dans le tableau des coefficients. D'un point de vue CONTRAST, elle n'existe donc pas. La variable X2, qui vaut 1 (référence), 2 ou 3 n'a que 2 pondérations possibles en CONTRAST, sur la valeur 2 ou la 3. nous raconte l'histoire suivante : on ne donne aucun poids à X1 --> donc X1 est à sa valeur de référence (1) et on donne un poids de 1 au 1er coefficient affiché de X2, c'est à dire le coeff de X2=2. Comme il est défini par écart à la référence, ce coeff de X2 est la différence entre moyenne(Y|X2=2) et moyenne(Y|X2=1). D'où le libellé du CONTRAST. Tous les autres suivent la même logique. Cependant, je trouve ta syntaxe bien plus naturelle, et c'est celle qu'on trouverait si le tableau des coefficients mentionnait bien toutes les modalités : c'est l'option PARAM=GLM. Mais (si c'était aussi simple ce ne serait pas vraiment du SAS) avec PARAM=GLM les options (REF=) sont ignorées. Il faudrait bricoler (format, option DESC dans CLASS) pour qu'au lieu d'être 3 par défaut, la valeur de référence devienne 1. Et il faudrait alors faire attention à l'ordre des coefficients dans le tableau. Par exemple, si tu fais Code :
Mais (ouf, reprenons nos esprits) si tu te moques du tableau de coeffs (tu as raison puisqu'on peut faire des CONTRASTs, justement), tu mets PARAM=GLM et tu suis ton idée. Par contre, inclure X1 dans le CONTRAST alors qu'il n'y a pas d'effet croisé X1*X2, je ne vois pas l'intérêt. Sans interaction, X1 et X2 sont supposées indépendantes, le modèle les a traitées comme telles, et du coup, ton CONTRAST sur X2 est le même quelle que soit la valeur de X1. Code :
|
||||
|
|
10
|
|
|
#3 | ||
|
Futur Membre du Club
![]() Inscription : mars 2007 Messages : 101 ![]() |
Bonjour Olivier, merci pour ces explications plus que claires, c'est vraiment appréciable !
Pour le cas Code :
contrast 'x1 = 1 x2 2 v 3' x2 1 -1 /e estimate = parm; Si on va plus loin dans l'article, on a les contrastes suivants sur un modèle interactif (et là pour le coup je n'y comprends rien Code :
|
||
|
|
00
|
|
|
#4 | ||||||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Pour le CONTRAST de x2=2 vs x2=3, il y a un peu de maths à faire. On cherche l'écart de moyennes de Y entre les profils X2=2 et X2=3.
Or coeff(X2=2) = moy(Y|X2=2)-moy(Y|X2=1) et coeff(X2=3) = moy(Y|X2=3)-moy(Y|X2=1), puisque X2=1 est la référence : les coefficients des autres modalités traduisent l'écart à la référence. Note aux puristes : oui, j'ai omis la transformation logit pour simplifier les formules, et faire ressortir l'idée. Donc moy(Y|X2=3)-moy(Y|X2=2) = l'écart que l'on cherche = coeff(X2=3) - coeff(X2=2). D'où un CONTRAST qui serait 0 -1 1 si on avait l'option PARAM=GLM, et -1 1 avec PARAM=REF. J'y ai repensé cette nuit, et ta vision initiale pourrait se coder si tu mettais à la fois les options PARAM=GLM et NOINT (pas de constante). Tous les coefficients traduisent alors les moyennes conditionnelles de Y pour leur modalité, et on retrouve bien des écritures plus "naturelles". Code :
Avec les interactions, la logique reste toujours la même, il faut avoir bien en tête le tableau de coefficients. Dans le modèle X1 X2 X1*X2 il est organisé comme ceci, avec PARAM=REF : Code :
C'est la présentation du modèle qui est un peu alambiquée, les CONTRASTs sont logiques comparés à cela ! Si on prend Code :
contrast 'x1 = 3 x2 1 v 2' x2 1 x1*x2 0 0 1 /estimate = parm; Mais en relisant ce paragraphe, je ne me trouve pas clair du tout, donc probablement pas convainquant du tout. Si tu dois écrire des contrastes "intuitifs" Code :
Euh... j'ai déjà dit "bon courage", non ? ![]() Olivier |
||||||
|
|
00
|
|
|
#5 | ||||||||||||
|
Futur Membre du Club
![]() Inscription : mars 2007 Messages : 101 ![]() |
Bonjour Olivier. Déjà, merci beaucoup pour le temps que vous passez à me répondre, ça m'aide énormément!
![]() Ensuite, j'ai quelques questions (en bleu dans le texte) Citation:
Citation:
En spécifiant MODEL y = x1*x2 on ne sous entend pas MODEL y = x1 + x2 + x1*x2 comme sous R ? On ne teste que l'interaction et pas les effets principaux ? Si oui je comprends le contrastes, mais si c'est le modèle "parapluie' qui est sous-entendu, dans ce cas le contraste ne devrait-il pas être : Code :
Pour les interactions, la matrice de contrastes est-elle toujours construite de la même manière ? Par exemple si je parle de l'interaction x1*x2, on a la matrice de coefficient suivante (arrêtez moi si je dis une bêtise) Code :
Finalement n'est-il pas plus simple de coder les variables catégorielles directement en indicatrices de classes dans une étape DATA puis d'intégrer ces indicatrices de classe dans le modèle ? Exemple : Code :
dans ce cas précis, chaque indicatrice est comparée à la référence désirée non ? Si je souhaite tester une interaction, il faudrait construire des variables dans l'étape DATA (exemple : x1=2 VS x2=3 impliquerait la création d'une variable x1_2_x2_3 = x1_2*x2_3 qu'il faudrait ajouter au modèle. Est-ce que ce raisonnement tient la route et surtout est-il limitant par rapport aux méthodes 'classiques' discutées plus haut ? Merci encore de votre aide, j'avance bien. Mais je pense que le param=REF est trop obscure pour moi... |
||||||||||||
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Bon, alors déjà une boulette pour moi : j'ai laissé traîner les (REF=) en copiant/collant. Ils sont ignorés avec PARAM=GLM.
L'idée c'était qu'avec PARAM=GLM et NOINT, chaque coefficient traduit directement une moyenne conditionnelle de Y, comme dans un LSMEANS. Citation:
Ce n'est qu'une question d'écriture, il y a de toute façon très souvent trop de coefficients, d'où des forçages à zéro et des choix arbitraires de modalités de référence. Citation:
Je pense que le plus crispant dans cette histoire c'est qu'il y a toujours plusieurs manières de rédiger le même modèle et les mêmes comparaisons. Donc on ne peut tirer aucune "recette" générale (en tout cas je n'en trouve pas et pour les CONTRASTs je travaille au feeling, ce qui ne fait pas très professionnel). |
||
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() Inscription : mars 2007 Messages : 101 ![]() |
Merci, je vais continuer à potasser ça
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com