6.7 Práctica
Los problemas de práctica del Capítulo 6 le piden calcular WAIC para varios modelos, compararlos y realizar promediado de modelos.
Problemas fáciles
6E1. Enuncie los tres criterios motivadores de los criterios de información.
6E2. Explique la diferencia entre la devianza dentro de muestra y la devianza fuera de muestra.
6E3. Cuando un modelo sobreajusta, ¿la devianza dentro de muestra aumenta o disminuye? ¿Qué pasa con la devianza fuera de muestra?
6E4. ¿Qué es el número efectivo de parámetros y en qué se diferencia del número real de parámetros?
Problemas medios
6M1. Escriba la fórmula del WAIC y defina cada término.
6M2. Calcule el WAIC para los siguientes modelos y compárelos:
# 6M2: Compare models with AIC (proxy for WAIC)
set.seed(42)
n <- 100
x <- runif(n, 0, 10)
y <- 3 + 1.5 * x + rnorm(n, sd = 2)
m1 <- lm(y ~ x)
m2 <- lm(y ~ x + I(x^2))
m3 <- lm(y ~ 1)
aics <- AIC(m1, m2, m3)
daic <- aics$AIC - min(aics$AIC)
weights <- exp(-0.5 _ daic) / sum(exp(-0.5 _ daic))
cat("Model comparison:\n")
for (i in 1:3) {
cat(sprintf(" %-20s AIC = %7.1f dAIC = %5.1f weight = %.3f\n",
rownames(aics)[i], aics$AIC[i], daic[i], weights[i]))
}6M3. Simule datos donde el modelo verdadero es cuadrático. Ajuste modelos lineal, cuadrático y cúbico. Compare sus AIC. ¿Gana el modelo cuadrático?
# 6M3: True model is quadratic
set.seed(42)
n <- 100
x <- runif(n, 0, 10)
y <- 1 + 2 * x - 0.1 * x^2 + rnorm(n, sd = 1)
m1 <- lm(y ~ x)
m2 <- lm(y ~ x + I(x^2))
m3 <- lm(y ~ poly(x, 3, raw = TRUE))
aics <- AIC(m1, m2, m3)
daic <- aics$AIC - min(aics$AIC)
cat("True model is quadratic:\n")
for (i in 1:3) {
cat(sprintf(" %-20s AIC = %7.1f dAIC = %5.1f\n",
rownames(aics)[i], aics$AIC[i], daic[i]))
}
cat("\nThe quadratic model should have the lowest AIC.\n")Problemas difíciles
6H1. Simule datos con dos predictores. Ajuste modelos con cada predictor por separado y ambos juntos. Compare el WAIC. ¿Qué modelo es preferido?
# 6H1: Model comparison with two predictors
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)
# Three models
m_x1 <- lm(y ~ x1)
m_x2 <- lm(y ~ x2)
m_both <- lm(y ~ x1 + x2)
aics <- AIC(m*x1, m_x2, m_both)
daic <- aics$AIC - min(aics$AIC)
weights <- exp(-0.5 * daic) / sum(exp(-0.5 _ daic))
cat("Model comparison:\n")
for (i in 1:3) {
cat(sprintf(" %-20s AIC = %7.1f dAIC = %5.1f weight = %.3f\n",
rownames(aics)[i], aics$AIC[i], daic[i], weights[i]))
}
cat("\nThe model with both predictors should be preferred\n")
cat("because both have real effects.\n")6H2. Realice promediado de modelos para los modelos en 6H1. Calcule la predicción promediada en .
6H3. Demuestre regularización: ajuste un modelo con una distribución a priori fuerte sobre la pendiente. Compare el error de predicción fuera de muestra con y sin regularización.