54 votos

Diferentes formas de escribir los términos de interacción de la película?

Tengo una pregunta acerca de cuál es la mejor manera de especificar una interacción en un modelo de regresión. Considerar los siguientes datos:

d <- structure(list(r = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
     1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("r1","r2"),
     class = "factor"), s = structure(c(1L, 1L, 1L, 1L, 1L, 
     2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), 
    .Label = c("s1","s2"), class = "factor"), rs = structure(c(1L, 1L,
     1L,1L, 1L,2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L),
    .Label = c("r1s1","r1s2", "r2s1", "r2s2"), class = "factor"), 
     y = c(19.3788027518437, 23.832287726332, 26.2533235300492,
     15.962906892112, 24.2873740664331, 28.5181676764727, 25.2757801195961,
     25.3601044326474, 25.3066440027202, 24.3298865128677, 32.5684219007394,
     31.0048406654209, 31.671238316086, 34.1933764518288, 36.8784821769123,
     41.6691435168277, 40.4669714825801, 39.2664137501106, 39.4884849591932,
     49.247505535468)), .Names = c("r","s", "rs", "y"), 
     row.names = c(NA, -20L), class = "data.frame")

Dos formas equivalentes para especificar el modelo con interacciones son:

lm0 <- lm(y ~ r*s, data=d)
lm1 <- lm(y ~ r + s + r:s, data=d)

Mi pregunta es si yo podría especificar la interacción considerando una nueva variable (rs), con los mismos niveles de interacción:

lm2 <- lm(y ~ r + s + rs, data=d)

¿Qué ventajas/desventajas tiene este enfoque? Y por qué los resultados de estos dos enfoques son diferentes?

summary(lm1)

lm(formula = y ~ r + s + r:s, data = d, x = TRUE)
            coef.est coef.se
(Intercept) 21.94     1.46  
rr2         11.32     2.07  
ss2          3.82     2.07  
rr2:ss2      4.95     2.92  
---
n = 20, k = 4
residual sd = 3.27, R-Squared = 0.87


summary(lm2)

lm(formula = y ~ r + s + rs, data = d, x = TRUE)
            coef.est coef.se
(Intercept) 21.94     1.46  
rr2         11.32     2.07  
ss2          8.76     2.07   # ss2 coef is different from lm1
rsr1s2      -4.95     2.92  
---
n = 20, k = 4
residual sd = 3.27, R-Squared = 0.87

13voto

bheklilr Puntos 113

Los resultados son diferentes porque la forma en la lm establece el modelo con el que la interacción es diferente de la forma en que se configura cuando se establece por sí mismo. Si usted mira el residual de la sd, es el mismo, lo que indica (no definitiva) que los modelos subyacentes son los mismos, sólo se expresa (a la película interna) de manera diferente.

Si se define la interacción como paste(d$s, d$r) en lugar de paste(d$r, d$s) su estimación de parámetros va a cambiar de nuevo, de maneras muy interesantes.

Nota cómo en su resumen del modelo de lm1 el coeficiente estimado para el ss2 es 4.94 menor que en el resumen para lm2, con un coeficiente de rr2:ss2 ser 4.95 (si imprime hasta 3 decimales, la diferencia desaparece). Esta es otra indicación de que un interno de la reordenación de los términos se ha producido.

Yo no puedo pensar en ninguna ventaja para hacerlo usted mismo, pero no puede ser uno con modelos más complejos en los que no desea un completo término de interacción, pero en lugar de sólo algunos de los términos en la "cruz" entre dos o más factores.

12voto

user31634 Puntos 16

Se puede comprender este comportamiento mejor si nos fijamos en el modelo de matrices.

 model.matrix(lm1 <- lm(y ~ r*s, data=d))
 model.matrix(lm2 <- lm(y ~ r + s + rs, data=d))

Cuando nos fijamos en estas matrices, se puede comparar las constelaciones de s2=1 con el resto de variables (es decir, cuando s2=1, que los valores de las otras variables tienen?). Usted verá que estas constelaciones difieren ligeramente, lo que significa que la categoría de base es diferente. Todo lo demás es essientially la misma. En particular, tenga en cuenta que en su lm1, el coeficiente de en ss2 es igual a los coeficientes ss2+rsr1s2 de lm2, es decir, 3.82=8.76-4.95, corto de errores de redondeo.

Por ejemplo, ejecutando el siguiente código da exactamente el mismo resultado que el uso de la configuración automática de R:

  d$rs <- relevel(d$rs, "r1s1")
  summary(lm1 <- lm(y~ factor(r) + factor(s) + factor(rs), data=d))

Esto también proporciona una rápida respuesta a su pregunta: realmente la única razón para cambiar la forma en que los factores son de configurar para proporcionar la claridad expositiva. Considere el siguiente ejemplo: Supongamos que la regresión de los salarios sobre un maniquí para la finalización de la escuela secundaria interactuado con un factor que indica si perteneces a una minoría.

Que es: $wage = \alpha + \beta \ edu + \gamma \ edu*minority + \epsilon $

Si dijo minoría factor toma el valor 1 si perteneces a una minoría, el coeficiente de $\beta$ puede ser interpretado como una diferencia de salario para los no-minoría de individuos que han completado la escuela secundaria. Si este es su coeficiente de interés, entonces usted debe escribir el código como tal. De lo contrario, supongamos que la minoría factor toma el valor de 1 si no pertenecen a una minoría. A continuación, para ver cuánto más no de los individuos de las minorías ganan al completar la escuela secundaria, usted tendría que "manualmente" compute $\beta+\gamma$. Nota a pesar de que toda la información está contenida en las estimaciones, sin embargo, y los resultados importantes no cambian por la configuración de los factores de forma diferente!

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X