Si une variable de facteur (par exemple, le sexe avec les niveaux M et F) est utilisée dans la formule glm, des variables fictives sont créées et peuvent être trouvées dans le résumé du modèle glm avec leurs coefficients associés (par exemple, genderM)
Si, au lieu de compter sur R pour diviser le facteur de cette manière, le facteur est codé dans une série de variables numériques 0/1 (par exemple, genderM (1 pour M, 0 pour F), genderF (1 pour F, 0 pour M) et ces variables sont ensuite utilisées comme variables numériques dans la formule glm, le résultat du coefficient serait-il différent?
Fondamentalement, la question est: R utilise-t-il un calcul de coefficient différent lorsque vous travaillez avec des variables factorielles par rapport à des variables numériques?
Question de suivi (éventuellement répondue par ce qui précède): outre l'efficacité de laisser R créer des variables fictives, y a-t-il un problème avec les facteurs de recodage en tant que série de variables numériques 0,1 et en utilisant plutôt ceux du modèle?
Réponses:
Les variables catégorielles (appelées « facteurs » dans R) doivent être représentées par des codes numériques dans plusieurs modèles de régression. Il existe de très nombreuses façons de construire des codes numériques de manière appropriée (voir cette grande liste sur le site d'aide des statistiques de l'UCLA). Par défaut, R utilise le codage au niveau de référence (que R appelle "contr.treatment"), et qui est à peu près la statistique par défaut à l'échelle. Cela peut être modifié pour tous les contrastes de votre session R entière en utilisant les options? Ou pour des analyses / variables spécifiques en utilisant les contrastes ou le "C (notez la majuscule). Si vous avez besoin de plus d'informations sur le codage au niveau de référence, je l'explique ici: Régression basée par exemple sur les jours de la semaine.
Certaines personnes trouvent le codage de niveau de référence déroutant, et vous n'avez pas besoin de l'utiliser. Si vous le souhaitez, vous pouvez avoir deux variables pour les hommes et les femmes; cela s'appelle le niveau signifie le codage. Cependant, si vous faites cela, vous devrez supprimer l'ordonnée à l'origine ou la matrice du modèle sera singulière et la régression ne peut pas être ajustée comme les notes @Affine ci-dessus et comme je l'explique ici: le codage des variables qualitatives conduit à des singularités . Pour supprimer l'interception, vous modifiez votre formule en ajoutant
-1
ou+0
comme ceci:y~... -1
ouy~... +0
.Utiliser le codage de niveau signifie au lieu du codage de niveau de référence changera les coefficients estimés et la signification des tests d'hypothèse qui sont imprimés avec votre sortie. Lorsque vous avez un facteur à deux niveaux (par exemple, homme contre femme) et que vous utilisez le codage de niveau de référence, vous verrez l'interception appeléet 0 t 0t 0
(constant)
et une seule variable répertoriée dans la sortie (peut-êtresexM
). L'ordonnée à l'origine est la moyenne du groupe de référence (peut-être des femmes) etsexM
la différence entre la moyenne des hommes et la moyenne des femmes. La valeur de p associée à l'ordonnée à l'origine est un test un échantillon pour déterminer si le niveau de référence a une moyenne de et la valeur de p associée àsexM
vous indique si les sexes diffèrent dans votre réponse. Mais si vous utilisez le codage de niveau signifie à la place, vous aurez deux variables répertoriées et chaque valeur p correspondra à un test à un échantillon pour savoir si la moyenne de ce niveau est . Autrement dit, aucune des valeurs de p ne sera un test pour savoir si les sexes diffèrent.la source
young F
) et les autres niveaux seront dif b / t le niveau donné de facteur 1 w / le niveau de référence de l'autre facteur et le groupe des deux niveaux de référence. Par exempleold
estold F
- «jeune F, &
M» estyoung M
-young F
.R^2
différence substantielle entre les deux approches. Je sais que ce n'est qu'unR^2
, mais y a-t-il une explication à cela?Les coefficients estimés seraient les mêmes sous réserve que vous créiez vos variables fictives (c'est-à-dire les variables numériques) cohérentes avec R. Par exemple: permet de créer de fausses données et d'ajuster une glm de Poisson à l'aide d'un facteur. Notez que la
gl
fonction crée une variable de facteur.Étant donné que le résultat a trois niveaux, je crée deux variables muettes (dummy.1 = 0 si le résultat = 2 et dummy.2 = 1 si le résultat = 3) et le réajustent en utilisant ces valeurs numériques:
Comme vous pouvez le voir, les coefficients estimés sont les mêmes. Mais vous devez être prudent lors de la création de vos variables factices si vous souhaitez obtenir le même résultat. Par exemple, si je crée deux variables muettes comme (dummy.1 = 0 si le résultat = 1 et dummy.2 = 1 si le résultat = 2), les résultats estimés sont différents comme suit:
En effet, lorsque vous ajoutez une
outcome
variable dans glm.1, R crée par défaut deux variables factices, à savoiroutcome2
etoutcome3
et les définit de manière similaire àdummy.1
etdummy.2
dans glm.2, c'est-à-dire que le premier niveau de résultat est lorsque toutes les autres variables factices (outcome2
etoutcome3
) sont définies pour être zéro.la source