Skip to content
Statistical RethinkingStatistical Rethinking

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.

Practice

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

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

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

6H2. Realice promediado de modelos para los modelos en 6H1. Calcule la predicción promediada en x1=1,x2=0.5x_1 = 1, x_2 = 0.5.

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.