R regresión lineal variable categórica valor "oculto"


10

Este es solo un ejemplo que he encontrado varias veces, por lo que no tengo ningún dato de muestra. Ejecutar un modelo de regresión lineal en R:

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

x1Es una variable continua. x2es categórico y tiene tres valores, por ejemplo, "Bajo", "Medio" y "Alto". Sin embargo, la salida dada por R sería algo así como:

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

Entiendo que R introduce algún tipo de codificación ficticia en dichos factores ( x2siendo un factor). Me pregunto, ¿cómo interpreto el x2valor "Alto"? Por ejemplo, ¿qué efecto tiene "Alto" x2en la variable de respuesta en el ejemplo dado aquí?

He visto ejemplos de esto en otros lugares (por ejemplo, aquí ) pero no he encontrado una explicación que pueda entender.

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
Puede obtener una buena respuesta aquí, pero voy a marcar esto para la migración a las estadísticas. SE, ya que la respuesta a esta pregunta se reduce esencialmente a comprender cómo funciona la regresión lineal.
joran

Sí, eso es lo suficientemente justo. ¿Sería mejor si lo eliminara y lo moviera yo mismo? ¿O es eso innecesario?

1
No deberías necesitar hacer nada. Lo marqué, pero puede pasar una o dos horas antes de que un mod llegue, ya que es un domingo y todo.
joran

3
No proporcionaré una respuesta aquí, porque la pregunta se moverá. Pero puede intentar algunas cosas para comprender lo que está sucediendo: 1. ejecute lm (Y ~ x1 + x2 - 1). el "-1" eliminará la intersección. 2. use relevel para cambiar la categoría de referencia de x2.
Manoel Galdino

Respuestas:


14

P: "... ¿cómo interpreto el valor de x2" Alto "? Por ejemplo, ¿qué efecto tiene" alto "x2 en la variable de respuesta en el ejemplo que se muestra aquí?

R: Sin duda ha notado que no se menciona x2 = "High" en la salida. Por el momento se elige x2High como el "caso base". Esto se debe a que ofreció una variable de factor con la codificación predeterminada para los niveles a pesar de un orden que habría sido L / M / H de forma más natural para la mente humana. Pero "H", siendo léxico antes de "L" y "M" en el alfabeto, fue elegido por R como el caso base.

Dado que 'x2' no estaba ordenado, cada uno de los contrastes informados era relativo a x2 = "Alto", por lo que x2 == "Bajo" se estimó en -0.78 en relación a x2 = "Alto". Por el momento, la Intercepción es el valor estimado de "Y" cuando x2 = "Alto" yx1 = 0. Probablemente desee volver a ejecutar su regresión después de cambiar el orden de los niveles (pero no ordenar el factor).

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

Entonces su estimación 'Media' y 'Alta' estará más en línea con lo que espera.

Editar: Existen arreglos de codificación alternativos (o arreglos más precisos de la matriz del modelo). La opción predeterminada para los contrastes en R es "contrastes de tratamiento" que especifica un nivel de factor (o una combinación particular de niveles de factor) como nivel de referencia e informes diferencias medias estimadas para otros niveles o combinaciones. Sin embargo, puede hacer que el nivel de referencia sea la media general obligando a la Intercepción a ser 0 (no recomendado) o utilizando una de las otras opciones de contraste:

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

Puede elegir diferentes contrastes para diferentes factores, aunque hacerlo parecería imponer una carga interpretativa adicional. S-Plus usa los contrastes de Helmert de manera predeterminada, y SAS usa los contrastes de tratamiento, pero elige el último nivel de factor en lugar del primero como nivel de referencia.


Eso tiene sentido. Supongo que obviamente x2no podría tener "ningún valor", ya que debe ser uno de "Alto", "Medio" o "Bajo". Gracias por tu respuesta.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.