Skip to content
Statistical RethinkingStatistical Rethinking

7.3 Interacciones continuas

Cuando ambas variables interactuantes son continuas, la interacción es un término de producto en el modelo lineal. La interpretación requiere cuidado porque el efecto de una variable es una función lineal de la otra.

7.3.1 El desafío de las interacciones continuas

Con dos predictores continuos, la interacción crea un plano retorcido — el resultado esperado es una función bilineal de ambos predictores:

μi=α+βxxi+βzzi+βxzxizi\mu_i = \alpha + \beta_x x_i + \beta_z z_i + \beta_{xz} x_i z_i

La pendiente de xx es βx+βxzz\beta_x + \beta_{xz} z, que varía continuamente con zz. Esto hace que los coeficientes sean difíciles de interpretar directamente — necesita evaluar la pendiente en valores específicos de zz.

# Continuous interaction: the effect of temperature depends on rainfall
set.seed(42)
n <- 200

# Temperature (Celsius) and rainfall (mm)

temp <- rnorm(n, mean = 20, sd = 5)
rain <- rnorm(n, mean = 50, sd = 15)

# Crop yield: positive effect of temp, but only when rain is high

yield <- 100 + 2 _ temp + 0.5 _ rain + 0.05 _ temp _ rain + rnorm(n, sd = 10)

# Standardize for easier interpretation

temp_s <- (temp - mean(temp)) / sd(temp)
rain_s <- (rain - mean(rain)) / sd(rain)

m_int <- lm(yield ~ temp_s * rain_s)

cat("Continuous interaction model:\n")
cat(" beta_temp:", round(coef(m_int)[2], 3), "\n")
cat(" beta_rain:", round(coef(m_int)[3], 3), "\n")
cat(" beta_temp:rain:", round(coef(m_int)[4], 3), "\n")

cat("\nSlope of temp at different rain levels:\n")
cat(" Rain = -1 SD:", round(coef(m*int)[2] + coef(m_int)[4] * (-1), 3), "\n")
cat(" Rain = 0 (mean):", round(coef(m*int)[2], 3), "\n")
cat(" Rain = +1 SD:", round(coef(m_int)[2] + coef(m_int)[4] * 1, 3), "\n")
Click Run to execute this code in your browser with WebR

7.3.2 Visualización de interacciones continuas

La mejor forma de entender una interacción continua es graficar el resultado predicho en varios valores del moderador.

# Visualize the continuous interaction
set.seed(42)
n <- 200
temp <- rnorm(n, mean = 20, sd = 5)
rain <- rnorm(n, mean = 50, sd = 15)
yield <- 100 + 2 * temp + 0.5 * rain + 0.05 * temp * rain + rnorm(n, sd = 10)

m_int <- lm(yield ~ temp * rain)

# Plot predicted yield vs temp at different rain levels

temp_seq <- seq(10, 30, length.out = 100)
rain_vals <- c(30, 50, 70)
colors <- c("firebrick", "steelblue", "darkgreen")

plot(NULL, xlim = c(10, 30), ylim = c(80, 200),
xlab = "Temperature (C)", ylab = "Crop yield",
main = "Continuous interaction: temp x rain")
for (i in 1:3) {
pred <- coef(m*int)[1] + coef(m_int)[2] * temp*seq +
coef(m_int)[3] * rain*vals[i] +
coef(m_int)[4] * temp*seq * rain_vals[i]
lines(temp_seq, pred, lwd = 2, col = colors[i])
}
legend("topleft", legend = paste("Rain =", rain_vals, "mm"), col = colors, lwd = 2)

cat("At low rain (30mm), temp has a smaller effect\n")
cat("At high rain (70mm), temp has a larger effect\n")
cat("The interaction (0.05) quantifies this difference\n")
Click Run to execute this code in your browser with WebR

7.3.3 Centrado para interpretación

Centrar ambos predictores hace que los efectos principales sean interpretables como el efecto en el valor promedio del otro predictor, no en cero.

# Centering for interpretation
set.seed(42)
n <- 200
temp <- rnorm(n, mean = 20, sd = 5)
rain <- rnorm(n, mean = 50, sd = 15)
yield <- 100 + 2 * temp + 0.5 * rain + 0.05 * temp * rain + rnorm(n, sd = 10)

# Uncentered

m_raw <- lm(yield ~ temp * rain)
cat("Uncentered:\n")
cat(" beta_temp:", round(coef(m_raw)[2], 3),
"(effect of temp when rain = 0, which is meaningless)\n")
cat(" beta_rain:", round(coef(m_raw)[3], 3),
"(effect of rain when temp = 0, which is meaningless)\n")

# Centered

temp_c <- temp - mean(temp)
rain_c <- rain - mean(rain)
m_cen <- lm(yield ~ temp_c * rain_c)
cat("\nCentered:\n")
cat(" beta_temp:", round(coef(m_cen)[2], 3),
"(effect of temp at average rain)\n")
cat(" beta_rain:", round(coef(m_cen)[3], 3),
"(effect of rain at average temp)\n")
cat(" beta_interaction:", round(coef(m_cen)[4], 3),
"(same as uncentered)\n")
Click Run to execute this code in your browser with WebR
Rethinking

Grafique, no solo lea coeficientes. Las interacciones continuas son casi imposibles de interpretar solo con los coeficientes. Los efectos principales dependen de dónde está el cero, y el efecto de interacción depende de la escala de ambas variables. La única forma confiable de entender una interacción continua es graficar el resultado predicho en varios valores significativos del moderador. Esto no es un atajo — es el enfoque correcto. Los coeficientes son parámetros de un modelo; las gráficas son el significado.

Resumen de la Sección 7.3

  • Las interacciones continuas crean un plano retorcido donde la pendiente de una variable varía continuamente con la otra.
  • La pendiente de xx es βx+βxzz\beta_x + \beta_{xz} z — evalúela en valores significativos de zz.
  • Centrar hace que los efectos principales sean interpretables como el efecto en el promedio del otro predictor.
  • Grafique predicciones en varios valores del moderador — los coeficientes solos no son suficientes.
  • El coeficiente de interacción es el mismo se centre o no, pero los efectos principales cambian.