Skip to content
Statistical RethinkingStatistical Rethinking

5.4 Variables categóricas

Los predictores categóricos son comunes en los modelos estadísticos. Esta sección compara variables dummy y variables índice, explicando por qué las variables índice son a menudo más naturales y fáciles de interpretar en modelos bayesianos.

5.4.1 Variables dummy vs índice

Hay dos formas de codificar una variable categórica:

  1. Variables dummy: Crear K−1K-1 indicadores binarios para KK categorías. Una categoría es la referencia (línea base). Cada coeficiente es la diferencia entre esa categoría y la referencia.

  2. Variables índice: Asignar un índice entero a cada categoría. Usar un vector de parámetros α=[α1,α2,…,αK]\alpha = [\alpha_1, \alpha_2, \ldots, \alpha_K], uno por categoría. Cada αk\alpha_k es el valor esperado para la categoría kk.

# Compare dummy and index variable encoding
set.seed(42)
n <- 100

# Simulate data with 3 groups

group <- sample(1:3, n, replace = TRUE)
true_means <- c(150, 160, 170)
y <- true_means[group] + rnorm(n, sd = 5)

# Dummy variable encoding (group 1 is reference)

m_dummy <- lm(y ~ factor(group))
cat("Dummy variable encoding:\n")
cat(" Intercept (group 1):", round(coef(m_dummy)[1], 2), "\n")
cat(" Group 2 - Group 1:", round(coef(m_dummy)[2], 2), "\n")
cat(" Group 3 - Group 1:", round(coef(m_dummy)[3], 2), "\n")

# Index variable encoding (separate means)

m_index <- lm(y ~ 0 + factor(group))
cat("\nIndex variable encoding:\n")
cat(" Group 1 mean:", round(coef(m_index)[1], 2), "\n")
cat(" Group 2 mean:", round(coef(m_index)[2], 2), "\n")
cat(" Group 3 mean:", round(coef(m_index)[3], 2), "\n")

# Plot

boxplot(y ~ group, col = c("steelblue", "firebrick", "darkgreen"),
main = "Height by group",
xlab = "Group", ylab = "Height (cm)")
abline(h = true_means, lty = 2, col = "gray50")
Click Run to execute this code in your browser with WebR

5.4.2 Por qué las variables índice son mejores para modelos bayesianos

Las variables índice son a menudo preferibles en modelos bayesianos porque:

  1. Sin referencia arbitraria: La codificación dummy requiere elegir una categoría de referencia, lo que afecta la interpretación de todos los coeficientes. Las variables índice tratan todas las categorías simétricamente.
  2. Distribuciones a priori naturales: Con variables índice, la distribución a priori se aplica directamente a la media de cada categoría. Con variables dummy, la distribución a priori se aplica a diferencias, lo que es menos intuitivo.
  3. Se extiende a modelos multinivel: Las variables índice se generalizan naturalmente a modelos multinivel (Capítulo 12), donde cada categoría obtiene su propio parámetro extraído de una distribución común.
  4. Más fáciles de interpretar: La variable índice da directamente el valor esperado para cada categoría, sin necesidad de sumar el intercepto.

5.4.3 Múltiples categorías con predictores

Podemos combinar predictores categóricos y continuos:

μi=αgroup[i]+βxi\mu_i = \alpha_{\text{group}[i]} + \beta x_i

Esto da a cada grupo su propio intercepto pero una pendiente común.

# Model with categorical intercept and continuous predictor
set.seed(42)
n <- 150

# Three groups, each with different intercept but same slope

group <- sample(1:3, n, replace = TRUE)
x <- runif(n, 0, 10)
true_intercepts <- c(150, 155, 160)
y <- true_intercepts[group] + 2 * x + rnorm(n, sd = 3)

# Fit with index variable for group and continuous predictor

fit <- lm(y ~ 0 + factor(group) + x)
cat("Model: y = alpha[group] + beta * x\n")
cat(" alpha[1]:", round(coef(fit)[1], 2), "\n")
cat(" alpha[2]:", round(coef(fit)[2], 2), "\n")
cat(" alpha[3]:", round(coef(fit)[3], 2), "\n")
cat(" beta:", round(coef(fit)[4], 2), "\n")

# Plot

colors <- c("steelblue", "firebrick", "darkgreen")
plot(x, y, pch = 16, col = colors[group],
main = "Categorical intercepts with common slope",
xlab = "x", ylab = "y")
for (g in 1:3) {
abline(a = coef(fit)[g], b = coef(fit)[4], col = colors[g], lwd = 2)
}
legend("topleft", legend = paste("Group", 1:3), col = colors, lwd = 2)
Click Run to execute this code in your browser with WebR
Rethinking

Las categorías no son especiales. En un modelo bayesiano, una variable categórica es solo una forma de asignar diferentes parámetros a diferentes grupos. La distribución a priori sobre esos parámetros puede ser independiente (como en esta sección) o correlacionada (como en modelos multinivel). La idea clave es que el modelo no sabe ni le importa que las categorías sean "categóricas" — solo ve un mapeo de observaciones a parámetros. Por esto las variables índice son tan naturales: hacen el mapeo explícito y las distribuciones a priori transparentes.

Resumen de la Sección 5.4

  • Las variables dummy codifican categorías como diferencias respecto a una categoría de referencia.
  • Las variables índice asignan un parámetro separado a cada categoría.
  • Las variables índice son preferibles en modelos bayesianos: sin referencia arbitraria, distribuciones a priori naturales, y se extienden a modelos multinivel.
  • Los predictores categóricos y continuos pueden combinarse: μi=αgroup[i]+βxi\mu_i = \alpha_{\text{group}[i]} + \beta x_i.
  • Las categorías son solo un mapeo de observaciones a parámetros — el modelo las trata como cualquier otro parámetro.