Regresión lineal con factores en R

10

Estoy tratando de entender cómo funcionan exactamente los factores en R. Digamos que quiero ejecutar una regresión usando algunos datos de muestra en R:

> data(CO2)
> colnames(CO2)
[1] "Plant"     "Type"      "Treatment" "conc"      "uptake"   
> levels(CO2$Type)
[1] "Quebec"      "Mississippi"
> levels(CO2$Treatment)
[1] "nonchilled" "chilled"   
> lm(uptake ~ Type + Treatment, data = CO2)

Call:
lm(formula = uptake ~ Type + Treatment, data = CO2)

Coefficients:
 (Intercept)   TypeMississippi  Treatmentchilled  
       36.97            -12.66             -6.86  

Entiendo eso TypeMississippiy Treatmentchilledson tratados como booleanos: para cada fila, la absorción inicial es 36.97, y restamos 12.66si es del tipo Mississippi y 6.86si se enfrió. Tengo problemas para entender algo como esto:

 > lm(uptake ~ Type * Treatment, data = CO2)

 Call:
 lm(formula = uptake ~ Type * Treatment, data = CO2)

 Coefficients:
                 (Intercept)                   TypeMississippi  
                      35.333                            -9.381  
            Treatmentchilled  TypeMississippi:Treatmentchilled  
                      -3.581                            -6.557  

¿Qué significa multiplicar dos factores juntos en un lm?

sylowtheorems
fuente

Respuestas:

17

Para ampliar la respuesta de @ John: en las fórmulas de R, tiene algunos operadores que puede aplicar a los términos: "+" simplemente los agrega, ":" significa que agrega un término (o varios términos) que se refieren a su interacción ( ver más abajo), "*" significa ambos, es decir: se agregan los "efectos principales" y también se agregan los términos de interacción.

Entonces, ¿qué significa esta interacción? Bueno, en el caso de las variables continuas, de hecho es un término que se agrega que es simplemente el múltiplo de las dos variables. Si tuviera la altura y el peso como predictores, y los usara out ~ height * weightcomo fórmula, el modelo lineal contendrá así tres 'variables', a saber, el peso, la altura y su producto (también contiene la interacción, pero aquí es menos interesante).

Aunque sugiero lo contrario anteriormente: esto funciona exactamente de la misma manera para las variables categóricas, pero ahora el 'producto' se aplica al (conjunto de) variables ficticias para cada variable categórica. Suponga que su altura y peso ahora son categóricos, cada uno con tres categorías (S (centro comercial), M (edium) y L (arge)). Luego, en los modelos lineales, cada uno de estos está representado por un conjunto de dos variables ficticias que son 0 o 1 (existen otras formas de codificación, pero este es el valor predeterminado en R y el más utilizado). Digamos que usamos S como la categoría de referencia para ambos, entonces tenemos cada vez dos dummies height.M y height.L (y similar para peso).

Entonces, el modelo out ~ height * weightahora contiene los 4 dummies + todos los productos de todas las combinaciones ficticias (no estoy escribiendo explícitamente los coeficientes aquí, están implícitos):

(intercept) + height.M + height.L + weight.M + weight.L + height.M * weight.M + height.L * weight.M + height.M * weight.L + height.L * weight.L.

En la línea de arriba, '*' ahora nuevamente se refiere a un producto simple, pero esta vez de los dummies, por lo que cada producto también es 1 (cuando todos los factores son 1) o 0 (cuando al menos uno no lo es).

En este caso, las 8 'variables' permiten diferentes resultados (medios) en todas las combinaciones de las dos variables: el efecto de tener un gran peso ya no es el mismo para las personas pequeñas (para ellas, el término simplemente forma el efecto weight.L) como para personas grandes (aquí, el efecto es weight.L + height.L * weight.L)

Nick Sabbe
fuente
7

Para seguir la respuesta de John, las fórmulas en lm no usan notación aritmética, están usando una notación simbólica compacta para describir modelos lineales (específicamente notación de Wilkinson-Rogers, hay un buen resumen breve aquí http: //www.physiol .ox.ac.uk / ~ raac / R.shtml ).

Básicamente, incluir A * B en la fórmula del modelo significa que estás ajustando A, B y A: B (la interacción de A y B). Si el término de interacción es estadísticamente significativo, sugiere que el efecto del tratamiento es diferente para cada uno de los tipos.

Mario
fuente
3

Quizás buscar 'fórmula' en la ayuda sería de ayuda. No estás multiplicando, estás diciendo que quieres los dos efectos principales y su interacción también.

Juan
fuente
1
(+1) aunque parece más como un comentario para mí.
Dmitrij Celov