R régression linéaire variable catégorielle valeur «cachée»

10

Ceci est juste un exemple que j'ai rencontré plusieurs fois, donc je n'ai pas d'échantillons de données. Exécution d'un modèle de régression linéaire dans R:

a.lm = lm(Y ~ x1 + x2)

x1est une variable continue. x2est catégorique et a trois valeurs, par exemple "Low", "Medium" et "High". Cependant, la sortie donnée par R serait quelque chose comme:

summary(a.lm)
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)   0.521     0.20       1.446   0.19        
x1            -0.61     0.11       1.451   0.17
x2Low         -0.78     0.22       -2.34   0.005
x2Medium      -0.56     0.45       -2.34   0.005

Je comprends que R introduit une sorte de codage fictif sur ces facteurs ( x2étant un facteur). Je me demande simplement comment interpréter la x2valeur "High"? Par exemple, quel effet les «hauts» x2ont-ils sur la variable de réponse dans l'exemple donné ici?

J'ai vu des exemples de cela ailleurs (par exemple ici ) mais je n'ai pas trouvé d'explication que je pourrais comprendre.

ttnphns
la source
3
Vous pouvez obtenir une bonne réponse ici, mais je vais signaler cela pour la migration vers stats.SE, car la réponse à cette question se résume essentiellement à comprendre comment fonctionne la régression linéaire.
joran
Ouais c'est assez juste. Serait-il préférable de le supprimer et de le déplacer moi-même? Ou est-ce inutile?
1
Vous ne devriez rien faire. Je l'ai signalé, mais cela peut prendre une heure ou deux avant qu'un mod n'y arrive, c'est un dimanche et tout.
joran
3
Je ne fournirai pas de réponse ici, car la question sera déplacée. Mais vous pouvez essayer quelques choses pour comprendre ce qui se passe: 1. Exécutez lm (Y ~ x1 + x2 - 1). le "-1" supprimera l'interception. 2. utilisez Relevel pour changer la catégorie de référence de x2.
Manoel Galdino

Réponses:

14

Q: "... comment interpréter la valeur x2" High "? Par exemple, quel effet les" High "x2s ont-ils sur la variable de réponse dans l'exemple donné ici ??

R: Vous avez sans aucun doute remarqué qu'il n'y a aucune mention de x2 = "High" dans la sortie. Pour le moment, x2High est choisi comme "cas de base". C'est parce que vous avez proposé une variable de facteur avec le codage par défaut pour les niveaux malgré un ordre qui aurait été L / M / H plus naturellement pour l'esprit humain. Mais "H" étant lexicalement avant "L" et "M" dans l'alphabet, a été choisi par R comme cas de base.

Puisque 'x2' n'a pas été ordonné, chacun des contrastes rapportés était relatif à x2 = "élevé" et donc x2 == "faible" a été estimé à -0,78 par rapport à x2 = "élevé". Pour le moment, l'interception est la valeur estimée de "Y" lorsque x2 = "High" et x1 = 0. Vous voudrez probablement relancer votre régression après avoir changé l'ordre des niveaux (mais pas fait le facteur ordonné).

x2a = factor(x2, levels=c("Low", "Medium", "High"))

Ensuite, votre estimation «moyenne» et «élevée» sera plus conforme à ce que vous attendez.

Modifier: Il existe d'autres dispositions de codage (ou plus précisément des dispositions de la matrice du modèle.) Le choix par défaut pour les contrastes dans R est "contrastes de traitement" qui spécifie un niveau de facteur (ou une combinaison particulière de niveaux de facteur) comme niveau de référence et rapports. différences moyennes estimées pour d'autres niveaux ou combinaisons. Vous pouvez cependant avoir le niveau de référence comme la moyenne globale en forçant l'interception à 0 (non recommandé) ou en utilisant l'un des autres choix de contraste:

?contrasts
?C   # which also means you should _not_ use either "c" or "C" as variable names.

Vous pouvez choisir différents contrastes pour différents facteurs, bien que cela semble imposer une charge d'interprétation supplémentaire. S-Plus utilise les contrastes Helmert par défaut, et SAS utilise les contrastes de traitement mais choisit le dernier niveau de facteur plutôt que le premier comme niveau de référence.

DWin
la source
Ça a du sens. Je suppose que de toute évidence, x2il ne peut pas avoir "aucune valeur" car il doit s'agir de "élevé", "moyen" ou "bas". Merci pour votre réponse.