En regresión, tenemos interacción cuando el producto de dos o más regresores también es incluido como regresor (además de los regresores considerados individualmente). Supongamos que tenemos dos regresores \(x_1\) y \(x_2\) y queremos incluir su interacción en la regresión. El modelo sería:
\[\begin{equation} y_i = \beta_0 + \beta_1 x_{1i} + \beta_2 x_{2i} + \beta_3 x_{1i}x_{2i} + \epsilon_i \end{equation}\]
El término \(\beta_3 x_{1i}x_{2i}\) es conocido como término de interacción. La fórmula en R para este modelo es:
Cuando escribimos \(y \sim x1*x2\), R automáticamente incluye \(x_1\) y \(x_2\) y su producto. Esto es así porque la teoría nos dice que si incluimos un término de interacción en el modelo también deberíamos incluir los regresores individuales.
Otra manera de incluir los términos de interacción sería:
Si tenemos tres regresores y queremos incluir todas las interacciones posibles (es decir, productos de regresores), el modelo sería:
\[\begin{equation} y_i = \beta_0 + \beta_1 x_{1i} + \beta_2 x_{2i} + \beta_3 x_{3i} + \beta_4 x_{1i}x_{2i} + \beta_5 x_{1i}x_{3i} + \beta_6 x_{2i}x_{3i} + \beta_7 x_{1i}x_{2i}x_{3i} + \epsilon_i \end{equation}\]
Tenemos tres interacciones de primer orden como \(\beta_5 x_{1i} x_{3i}\) y una interacción de segundo orden, \(\beta_7 x_{1i} x_{2i} x_{3i}\). En R sería:
Podemos especificar solo unos términos de interacción determinados mediante el operador (:). Por ejemplo, el modelo
\[\begin{equation} y_i = \beta_0 + \beta_1 x_{1i} + \beta_2 x_{2i} + \beta_3 x_{3i} + \beta_4 x_{1i}x_{2i}x_{3i} + \epsilon_i \end{equation}\]
en R se escribe:
Esta fórmula incluye los regresores individuales y todas las interacciones de primer orden.
Esta fórmula incluye los regresores individuales, todas las interacciones de primer orden, y todas las interacciones de segundo orden. Y así para otros valores del exponente.
El asterisco () y los dos puntos (:) siguen una ley distributiva*:
es equivalente a
que es lo mismo que
El modelo
es equivalente a
Por ejemplo, estos tres modelos son equivalentes
Vamos a incluir la interacción de primer orden entre Area y Elevation:
d = faraway::gala
m = lm(Species ~ 0 + Area * Elevation + Nearest + Scruz + Adjacent, data = d)
summary(m)
##
## Call:
## lm(formula = Species ~ 0 + Area * Elevation + Nearest + Scruz +
## Adjacent, data = d)
##
## Residuals:
## Min 1Q Median 3Q Max
## -77.234 -12.792 0.218 28.929 113.547
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## Area 5.759e-01 1.027e-01 5.608 8.99e-06 ***
## Elevation 1.699e-01 3.922e-02 4.332 0.000227 ***
## Nearest -5.999e-01 6.816e-01 -0.880 0.387521
## Scruz 3.278e-02 1.361e-01 0.241 0.811713
## Adjacent -4.324e-02 1.230e-02 -3.514 0.001778 **
## Area:Elevation -3.272e-04 5.527e-05 -5.920 4.15e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 38.99 on 24 degrees of freedom
## Multiple R-squared: 0.9391, Adjusted R-squared: 0.9239
## F-statistic: 61.69 on 6 and 24 DF, p-value: 2.108e-13
Observamos que el \(R^2\) es ha subido con respecto al modelo sin términos de interacción.