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.

r  regression  categorical-data  regression-coefficients  categorical-encoding  machine-learning  random-forest  anova  spss  r  self-study  bootstrap  monte-carlo  r  multiple-regression  partitioning  neural-networks  normalization  machine-learning  svm  kernel-trick  self-study  survival  cox-model  repeated-measures  survey  likert  correlation  variance  sampling  meta-analysis  anova  independence  sample  assumptions  bayesian  covariance  r  regression  time-series  mathematical-statistics  graphical-model  machine-learning  linear-model  kernel-trick  linear-algebra  self-study  moments  function  correlation  spss  probability  confidence-interval  sampling  mean  population  r  generalized-linear-model  prediction  offset  data-visualization  clustering  sas  cart  binning  sas  logistic  causality  regression  self-study  standard-error  r  distributions  r  regression  time-series  multiple-regression  python  chi-squared  independence  sample  clustering  data-mining  rapidminer  probability  stochastic-processes  clustering  binary-data  dimensionality-reduction  svd  correspondence-analysis  data-visualization  excel  c#  hypothesis-testing  econometrics  survey  rating  composite  regression  least-squares  mcmc  markov-process  kullback-leibler  convergence  predictive-models  r  regression  anova  confidence-interval  survival  cox-model  hazard  normal-distribution  autoregressive  mixed-model  r  mixed-model  sas  hypothesis-testing  mediation  interaction 

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.


Ç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.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.