Skip to content
Statistical RethinkingStatistical Rethinking

5.3 Cuando añadir variables perjudica

Añadir variables no siempre mejora un modelo. Dos problemas comunes son la multicolinealidad (predictores demasiado correlacionados) y el sesgo post-tratamiento (controlar por una consecuencia del tratamiento).

5.3.1 Multicolinealidad

La multicolinealidad ocurre cuando dos o más predictores están altamente correlacionados. Cuando los predictores son casi idénticos, el modelo no puede distinguir sus efectos, y los errores estándar de los coeficientes se vuelven muy grandes.

SE(β^)↗cuandocor(X1,X2)↗1\text{SE}(\hat{\beta}) \nearrow \quad \text{cuando} \quad \text{cor}(X_1, X_2) \nearrow 1

# Demonstrate multicollinearity
set.seed(42)
n <- 100

# Two highly correlated predictors

x1 <- rnorm(n)
x2 <- x1 + rnorm(n, sd = 0.1) # very correlated with x1

# Outcome depends on x1 only

y <- 1 + 2 * x1 + rnorm(n, sd = 1)

# Fit regression with both predictors

fit_multi <- lm(y ~ x1 + x2)
cat("Multivariate model (x1 and x2 correlated):\n")
cat(" beta_x1:", round(coef(fit_multi)[2], 3),
" SE:", round(summary(fit_multi)$coefficients[2, 2], 3), "\n")
cat("  beta_x2:", round(coef(fit_multi)[3], 3),
  "  SE:", round(summary(fit_multi)$coefficients[3, 2], 3), "\n")

# Compare with model using only x1

fit_single <- lm(y ~ x1)
cat("\nSingle predictor model (x1 only):\n")
cat(" beta_x1:", round(coef(fit_single)[2], 3),
" SE:", round(summary(fit_single)$coefficients[2, 2], 3), "\n")

cat("\nCorrelation between x1 and x2:", round(cor(x1, x2), 3), "\n")
cat("Multicollinearity inflates the standard errors.\n")
Click Run to execute this code in your browser with WebR

Los errores estándar son mucho más grandes en el modelo multivariado porque el modelo no puede decir qué predictor es responsable del efecto. Los coeficientes también son inestables — pequeños cambios en los datos pueden causar grandes cambios en las estimaciones.

5.3.2 Sesgo post-tratamiento

El sesgo post-tratamiento ocurre cuando controlamos por una variable que es una consecuencia del tratamiento. Esto bloquea el camino causal que queremos estimar.

# Demonstrate post-treatment bias
set.seed(42)
n <- 200

# Treatment: tutoring program

tutoring <- rbinom(n, 1, 0.5)

# Post-treatment variable: study hours (influenced by tutoring)

study_hours <- 2 + 1.5 * tutoring + rnorm(n, sd = 1)

# Outcome: test score (influenced by both tutoring and study hours)

# Total effect of tutoring = direct + indirect through study hours

score <- 50 + 3 _ tutoring + 2 _ study_hours + rnorm(n, sd = 3)

# Correct model: estimate total effect of tutoring

m_total <- lm(score ~ tutoring)
cat("Total effect model (score ~ tutoring):\n")
cat(" beta_tutoring:", round(coef(m_total)[2], 3), "\n")

# Post-treatment bias: controlling for study hours

m_bias <- lm(score ~ tutoring + study_hours)
cat("\nPost-treatment model (score ~ tutoring + study_hours):\n")
cat(" beta_tutoring:", round(coef(m_bias)[2], 3), "\n")
cat(" beta_study:", round(coef(m_bias)[3], 3), "\n")

cat("\nThe total effect (6.0) is split into direct (3.0) and indirect (3.0)\n")
cat("Controlling for study_hours blocks the indirect path\n")
cat("and underestimates the total effect of tutoring.\n")
Click Run to execute this code in your browser with WebR

El efecto total de la tutoría incluye tanto el efecto directo como el efecto indirecto a través de las horas de estudio. Al condicionar sobre las horas de estudio, bloqueamos el camino indirecto y subestimamos el efecto total.

5.3.3 Cuándo añadir variables

La decisión de añadir una variable debe guiarse por el grafo causal, no por criterios estadísticos:

  • Añada variables que son causas comunes (confusores) del predictor y el resultado.
  • No añada variables que son consecuencias del predictor (variables post-tratamiento).
  • Tenga cuidado con variables que están altamente correlacionadas con otros predictores (multicolinealidad).
  • Añada variables que revelan relaciones enmascaradas (caminos indirectos).
Rethinking

El grafo causal es la estrategia. Los modelos estadísticos son herramientas, pero las herramientas necesitan una estrategia. El grafo causal (DAG) es la estrategia. Le dice qué variables incluir, qué variables excluir y sobre cuáles condicionar. Sin un grafo causal, solo está girando perillas y esperando lo mejor. Con un grafo causal, puede tomar decisiones principiadas sobre la especificación del modelo. Este es el enfoque de los modelos causales estructurales, y es la base de la inferencia causal moderna.

Overthinking

El factor de inflación de la varianza. El factor de inflación de la varianza (VIF) mide cuánto la multicolinealidad infla la varianza de un coeficiente:

VIFj=11−Rj2\text{VIF}_j = \frac{1}{1 - R_j^2}

donde Rj2R_j^2 es el R2R^2 de regresar el predictor jj sobre todos los demás predictores. Un VIF de 1 significa que no hay multicolinealidad. Un VIF de 10 significa que la varianza es 10 veces más grande de lo que sería sin multicolinealidad. Como regla general, VIF > 5 indica multicolinealidad problemática. Sin embargo, la multicolinealidad no siempre es un problema — si solo le interesa la predicción, la multicolinealidad no perjudica. Solo perjudica cuando quiere interpretar coeficientes individuales.

Resumen de la Sección 5.3

  • Multicolinealidad: Predictores altamente correlacionados inflan los errores estándar y hacen los coeficientes inestables.
  • Sesgo post-tratamiento: Controlar por una consecuencia del tratamiento bloquea el camino causal y sesga el efecto total.
  • La decisión de añadir variables debe guiarse por el grafo causal, no por criterios estadísticos.
  • Los confusores deben añadirse; las variables post-tratamiento no.
  • El VIF mide la severidad de la multicolinealidad.