7.4 Interacciones en fórmulas de diseño
La sintaxis de fórmulas de R proporciona una forma compacta de especificar interacciones. Esta sección revisa la notación estándar de fórmulas de diseño y muestra cómo traducirla a una definición de modelo.
7.4.1 Notación de fórmulas en R
R proporciona varias formas de especificar interacciones en fórmulas de modelo:
y ~ x + z: Solo efectos principales (sin interacción)y ~ x * z: Efectos principales más interacción (equivalente ax + z + x:z)y ~ x:z: Solo interacción (sin efectos principales)y ~ (x + z)^2: Todas las interacciones por pares (igual quex * zpara dos variables)y ~ (x + z + w)^3: Todas las interacciones hasta orden 3
# R formula notation for interactions
set.seed(42)
n <- 100
x <- runif(n, 0, 10)
z <- runif(n, 0, 10)
y <- 1 + 2 * x + 3 * z + 0.5 * x * z + rnorm(n, sd = 2)
# Different formula notations
m1 <- lm(y ~ x + z) # main effects only
m2 <- lm(y ~ x * z) # main effects + interaction
m3 <- lm(y ~ x + z + x:z) # explicit: same as m2
m4 <- lm(y ~ (x + z)^2) # same as m2
cat("Main effects only (x + z):\n")
cat(" Coefficients:", length(coef(m1)), "\n")
cat("\nWith interaction (x * z):\n")
cat(" Coefficients:", length(coef(m2)), "\n")
cat(" Names:", paste(names(coef(m2)), collapse = ", "), "\n")
cat("\nExplicit (x + z + x:z):\n")
cat(" Same as x * z?", identical(coef(m2), coef(m3)), "\n")
cat("\nFormula notation (x + z)^2:\n")
cat(" Same as x * z?", identical(coef(m2), coef(m4)), "\n")7.4.2 Interacciones de orden superior
Para tres o más predictores, la notación de fórmulas de R escala:
y ~ x * z * w: Todos los efectos principales, todas las interacciones de orden 2, y la interacción de orden 3y ~ (x + z + w)^2: Efectos principales y todas las interacciones de orden 2 (sin interacción de orden 3)y ~ x * z + x * w: Solo interacciones seleccionadas
# Higher order interactions
set.seed(42)
n <- 100
x <- runif(n, 0, 10)
z <- runif(n, 0, 10)
w <- runif(n, 0, 10)
y <- 1 + 2*x + 3*z + 1*w + 0.5*x*z + rnorm(n, sd = 2)
# All interactions (3-way)
m*full <- lm(y ~ x * z _ w)
cat("Full (x _ z _ w):", length(coef(m_full)), "coefficients\n")
cat(" ", paste(names(coef(m_full)), collapse = ", "), "\n")
# Up to 2-way interactions
m_2way <- lm(y ~ (x + z + w)^2)
cat("\n2-way only ((x+z+w)^2):", length(coef(m_2way)), "coefficients\n")
cat(" ", paste(names(coef(m_2way)), collapse = ", "), "\n")
# Selected interactions
m_sel <- lm(y ~ x * z + w)
cat("\nSelected (x*z + w):", length(coef(m_sel)), "coefficients\n")
cat(" ", paste(names(coef(m_sel)), collapse = ", "), "\n")7.4.3 Traducción a notación de modelo
La fórmula de R y ~ x * z se traduce a la notación de modelo:
En el paquete rethinking, esto sería:
y ~ dnorm(mu, sigma)
mu <- a + bx * x + bz * z + bxz * x * z
La fórmula es la interfaz, no el modelo. La notación de fórmulas de R es una interfaz conveniente para especificar modelos, pero no es el modelo en sí. El modelo es el conjunto de declaraciones de probabilidad y ecuaciones deterministas. La fórmula es solo una abreviatura. En caso de duda, escriba la notación completa del modelo para asegurarse de entender lo que la fórmula implica. Esto es especialmente importante para las interacciones — el operador * añade efectos principales silenciosamente, lo que puede sorprender si solo quería el término de interacción (:).
Resumen de la Sección 7.4
y ~ x * zincluye efectos principales e interacción (equivalente ax + z + x:z).y ~ x:zincluye solo la interacción (sin efectos principales).y ~ (x + z + w)^2incluye todas las interacciones de orden 2 pero no de orden 3.- Las fórmulas de R son una interfaz conveniente, pero la notación de modelo es la especificación.
- En caso de duda, escriba el modelo completo para verificar lo que la fórmula implica.