Skip to content
Statistical RethinkingStatistical Rethinking

5.7 Práctica

Los problemas de práctica del Capítulo 5 le piden ajustar regresiones multivariadas, diagnosticar multicolinealidad y explorar el efecto de añadir o eliminar variables.

Practice

Problemas fáciles

5E1. ¿Cuáles de los modelos lineales a continuación son regresiones múltiples?

(a) yi∼Normal(α+βxi,σ)y_i \sim \text{Normal}(\alpha + \beta x_i, \sigma)

(b) yi∼Normal(α+β1x1,i+β2x2,i,σ)y_i \sim \text{Normal}(\alpha + \beta_1 x_{1,i} + \beta_2 x_{2,i}, \sigma)

(c) yi∼Normal(α+β1x1,i+β2x2,i+β3x3,i,σ)y_i \sim \text{Normal}(\alpha + \beta_1 x_{1,i} + \beta_2 x_{2,i} + \beta_3 x_{3,i}, \sigma)

5E2. Escriba una regresión múltiple para evaluar la afirmación: Ni la cantidad de financiamiento ni las puntuaciones de examen predicen la calidad docente, pero juntas sí.

5E3. Escriba una regresión múltiple para evaluar la afirmación: La cantidad de financiamiento está positivamente asociada con la calidad docente, pero solo cuando se controla por el porcentaje de estudiantes en pobreza.

Problemas medios

5M1. Invente su propio ejemplo de una asociación espuria. Dibuje el grafo causal y simule datos para demostrarlo.

# 5M1: Spurious association example
# Ice cream sales and sunburns are both caused by temperature
set.seed(42)
n <- 100

# Temperature is the common cause

temp <- rnorm(n, mean = 25, sd = 8)

# Ice cream sales increase with temperature

ice_cream <- 10 + 2 * temp + rnorm(n, sd = 5)

# Sunburns increase with temperature

sunburns <- 5 + 1.5 * temp + rnorm(n, sd = 4)

# Bivariate: ice cream vs sunburns (spurious)

m_biv <- lm(sunburns ~ ice_cream)
cat("Bivariate (sunburns ~ ice_cream):\n")
cat(" beta:", round(coef(m_biv)[2], 3), "\n")

# Multivariate: controlling for temperature

m_multi <- lm(sunburns ~ ice_cream + temp)
cat("\nMultivariate (sunburns ~ ice_cream + temp):\n")
cat(" beta_ice_cream:", round(coef(m_multi)[2], 3), "\n")
cat(" beta_temp:", round(coef(m_multi)[3], 3), "\n")

cat("\nThe ice cream effect disappears after controlling for temperature.\n")
Click Run to execute this code in your browser with WebR

5M2. Invente su propio ejemplo de una relación enmascarada. Dibuje el grafo causal y simule datos para demostrarlo.

5M3. Invente su propio ejemplo de sesgo post-tratamiento. Dibuje el grafo causal y simule datos para demostrarlo.

Problemas difíciles

5H1. Ajuste una regresión multivariada con dos predictores. Calcule la distribución a posteriori de ambos coeficientes y sus intervalos creíbles del 95%.

# 5H1: Multivariate regression with posterior intervals
set.seed(42)
n <- 100
x1 <- rnorm(n)
x2 <- 0.5 * x1 + rnorm(n, sd = 0.5)
y <- 1 + 2 * x1 - 1 * x2 + rnorm(n, sd = 1)

fit <- lm(y ~ x1 + x2)
library(MASS)
post <- mvrnorm(1e4, mu = coef(fit), Sigma = vcov(fit))

cat("Posterior summaries:\n")
cat(" alpha: mean =", round(mean(post[,1]), 3),
" 95% CI = [", round(quantile(post[,1], 0.025), 3), ",",
round(quantile(post[,1], 0.975), 3), "]\n")
cat(" beta1: mean =", round(mean(post[,2]), 3),
" 95% CI = [", round(quantile(post[,2], 0.025), 3), ",",
round(quantile(post[,2], 0.975), 3), "]\n")
cat(" beta2: mean =", round(mean(post[,3]), 3),
" 95% CI = [", round(quantile(post[,3], 0.025), 3), ",",
round(quantile(post[,3], 0.975), 3), "]\n")
Click Run to execute this code in your browser with WebR

5H2. Ajuste un modelo con un predictor categórico usando variables índice. Compare las medias a posteriori de cada categoría.

5H3. Ajuste un modelo con un predictor categórico y uno continuo. Grafique las líneas predictivas a posteriori para cada categoría.