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.

ttnphns
fuente
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.

DWin
fuente
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.