Skip to content
Statistical RethinkingStatistical Rethinking

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 a x + z + x:z)
  • y ~ x:z: Solo interacción (sin efectos principales)
  • y ~ (x + z)^2: Todas las interacciones por pares (igual que x * z para dos variables)
  • y ~ (x + z + w)^3: Todas las interacciones hasta orden 3

y∼x∗z≡y∼x+z+x:zy \sim x * z \equiv y \sim x + z + x:z

# 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")
Click Run to execute this code in your browser with WebR

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 3
  • y ~ (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")
Click Run to execute this code in your browser with WebR

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:

yi∼Normal(μi,σ)y_i \sim \text{Normal}(\mu_i, \sigma) μi=α+βxxi+βzzi+βxzxizi\mu_i = \alpha + \beta_x x_i + \beta_z z_i + \beta_{xz} x_i z_i

En el paquete rethinking, esto sería:

y ~ dnorm(mu, sigma)
mu <- a + bx * x + bz * z + bxz * x * z
Rethinking

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 * z incluye efectos principales e interacción (equivalente a x + z + x:z).
  • y ~ x:z incluye solo la interacción (sin efectos principales).
  • y ~ (x + z + w)^2 incluye 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.