¿Es posible la interacción entre dos variables continuas?

Respuestas:

31

¿Si por qué no? La misma consideración que para las variables categóricas se aplicaría en este caso: el efecto de en el resultado Y no es el mismo dependiendo del valor de X 2 . Para ayudar a visualizarlo, puede pensar en los valores tomados por X 1 cuando X 2 toma valores altos o bajos. Contrariamente a las variables categóricas, aquí la interacción solo está representada por el producto de X 1 y X 2 . Es de destacar que es mejor centrar sus dos variables primero (de modo que el coeficiente para decir X 1 se lea como el efecto de X 1 cuando XX1YX2X1X2X1X2X1X1 está en su media muestral).X2

Como sugirió amablemente @whuber, una manera fácil de ver cómo varía con Y en función de X 2 cuando se incluye un término de interacción, es escribir el modelo E ( Y | X ) = β 0 + β 1 X 1 + β 2 X 2 + β 3 X 1 X 2 .X1YX2E(Y|X)=β0+β1X1+β2X2+β3X1X2

Entonces, se puede ver que el efecto de un aumento de una unidad en cuando X 2 se mantiene constante puede expresarse como:X1X2

mi(YEl |X1+1,X2)-mi(YEl |X1,X2)=β0 0+β1(X1+1)+β2X2+β3(X1+1)X2-(β0 0+β1X1+β2X2+β3X1X2)=β1+β3X2

Del mismo modo, el efecto cuando aumenta en una unidad mientras se mantiene constante X 1 es β 2 + β 3 X 1 . Esto demuestra por qué es difícil interpretar los efectos de X 1 ( β 1 ) y X 2 ( β 2 ) de forma aislada. Esto incluso será más complicado si ambos predictores están altamente correlacionados. También es importante tener en cuenta el supuesto de linealidad que se está haciendo en un modelo tan lineal.X2X1β2+β3X1X1β1X2β2

Puede echar un vistazo a Regresión múltiple: probar e interpretar interacciones , por Leona S. Aiken, Stephen G. West y Raymond R. Reno (Sage Publications, 1996), para obtener una visión general de los diferentes tipos de efectos de interacción en la regresión múltiple . (Probablemente este no sea el mejor libro, pero está disponible a través de Google)

Aquí hay un ejemplo de juguete en R:

library(mvtnorm)
set.seed(101)
n <- 300                      # sample size
S <- matrix(c(1,.2,.8,0,.2,1,.6,0,.8,.6,1,-.2,0,0,-.2,1), 
            nr=4, byrow=TRUE) # cor matrix
X <- as.data.frame(rmvnorm(n, mean=rep(0, 4), sigma=S))
colnames(X) <- c("x1","x2","y","x1x2")
summary(lm(y~x1+x2+x1x2, data=X))
pairs(X)

donde la salida realmente lee:

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.01050    0.01860  -0.565    0.573    
x1           0.71498    0.01999  35.758   <2e-16 ***
x2           0.43706    0.01969  22.201   <2e-16 ***
x1x2        -0.17626    0.01801  -9.789   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.3206 on 296 degrees of freedom
Multiple R-squared: 0.8828, Adjusted R-squared: 0.8816 
F-statistic: 743.2 on 3 and 296 DF,  p-value: < 2.2e-16 

Y así es como se ven los datos simulados:

texto alternativo

Para ilustrar el segundo comentario de @ whuber, siempre puede ver las variaciones de en función de X 2 a diferentes valores de X 1 (por ejemplo, terciles o deciles); Las pantallas de enrejado son útiles en este caso. Con los datos anteriores, procederíamos de la siguiente manera:YX2X1

library(Hmisc)
X$x1b <- cut2(X$x1, g=5) # consider 5 quantiles (60 obs. per group)
coplot(y~x2|x1b, data=X, panel = panel.smooth)

texto alternativo

chl
fuente
55
(+1) Si tiene el tiempo y la inclinación, puede fortalecer esta respuesta al ampliar su afirmación de que incluir X1 * X2 hace que el efecto de X1 en Y varíe con X2. Específicamente, un modelo Y = b0 + b1 * X1 + b2 * X2 + b3 * (X1 * X2) + error también puede verse como que tiene la forma Y = b0 + (b1 + b3 * X2) * X1 + b2 * X2 + error, que muestra con precisión cómo el coeficiente de X1, que es igual a b1 + b3 * X2, varía con X2 (y, simétricamente, el coeficiente de X2 varía con X1). Esa es una forma simple y natural de "interacción".
whuber
1
@chl - Gracias por la respuesta. El problema que tengo es que tengo un gran n(11K) y estoy usando MiniTab para hacer un diagrama de interacciones y me lleva una eternidad calcularlo, pero no muestra nada. No estoy seguro de cómo veo si hay interacción con este conjunto de datos.
TheCloudlessSky
3
@TheCloudlessSky: Un enfoque es dividir los datos en contenedores de acuerdo con los valores de X1. Trace Y frente a X2 bin por bin, buscando cambios en la pendiente a medida que varían los contenedores. Haga lo mismo con los roles de X1 y X2 invertidos.
whuber
3
@chl La pantalla del enrejado es una buena ilustración. Cortar una variable en cuantiles de igual intervalo es atractivo. Hay otros enfoques. Por ejemplo, Tukey recomendó cortar por la mitad las colas: es decir, cortar los valores de X2 en mitades en la mediana, luego cortar esas mitades por sus medianas, luego cortar la mitad inferior del grupo más bajo en su mediana y la mitad superior de la más alta grupo en su mediana, y así sucesivamente, mientras los nuevos grupos tengan suficientes datos.
whuber
1
@whuber Eso es nuevamente un buen punto. Echaré un vistazo a la posible implementación de R, o lo intentaré yo mismo.
chl