Skip to content
Statistical RethinkingStatistical Rethinking

10.1 Regresión binomial

La regresión binomial modela resultados binarios y binomiales usando un enlace logit. La función logit mapea la recta real al intervalo unitario, asegurando que las probabilidades predichas sean válidas.

10.1.1 El enlace logit

Para resultados binarios (yi∈{0,1}y_i \in \{0, 1\}) o resultados binomiales (yi∼Binomial(ni,pi)y_i \sim \text{Binomial}(n_i, p_i)):

logit(pi)=log⁡pi1−pi=α+βxi\text{logit}(p_i) = \log\frac{p_i}{1 - p_i} = \alpha + \beta x_i

pi=logistic(α+βxi)=11+e−(α+βxi)p_i = \text{logistic}(\alpha + \beta x_i) = \frac{1}{1 + e^{-(\alpha + \beta x_i)}}

Los coeficientes están en la escala de log-odds. Para interpretarlos, conviértalos a razones de odds: eβe^\beta es el cambio multiplicativo en odds por unidad de aumento en xx.

# Binomial regression: chimpanzee prosociality example
# Does the prosocial option being on the left increase pulling?

set.seed(42)
n <- 200

# Simulate: prosocial on left increases probability of pulling left

prosoc_left <- sample(c(0, 1), n, replace = TRUE)
logit_p <- -0.5 + 0.8 * prosoc_left
p_true <- 1 / (1 + exp(-logit_p))
pulled_left <- rbinom(n, 1, p_true)

# Fit logistic regression

m <- glm(pulled_left ~ prosoc_left, family = binomial)

cat("Binomial regression (logit link):\n")
cat(" Intercept:", round(coef(m)[1], 3), "(log-odds when prosoc_left = 0)\n")
cat(" prosoc_left:", round(coef(m)[2], 3), "(log-odds change)\n")

# Convert to odds ratio

cat("\n Odds ratio:", round(exp(coef(m)[2]), 3), "\n")

# Convert to probabilities

p0 <- 1 / (1 + exp(-coef(m)[1]))
p1 <- 1 / (1 + exp(-(coef(m)[1] + coef(m)[2])))
cat("\n P(pull left | prosoc_right) =", round(p0, 3), "\n")
cat(" P(pull left | prosoc_left) =", round(p1, 3), "\n")

# Plot

plot(jitter(prosoc_left, 0.1), jitter(pulled_left, 0.1),
pch = 16, col = adjustcolor("steelblue", 0.5),
xlab = "Prosocial on left", ylab = "Pulled left",
main = "Binomial regression: prosociality")
x_seq <- seq(0, 1, length.out = 100)
logit_pred <- coef(m)[1] + coef(m)[2] * x_seq
p_pred <- 1 / (1 + exp(-logit_pred))
lines(x_seq, p_pred, lwd = 2, col = "firebrick")
Click Run to execute this code in your browser with WebR

10.1.2 Binomial agregado

Cuando cada observación tiene ni>1n_i > 1 ensayos, usamos el binomial agregado:

yi∼Binomial(ni,pi)y_i \sim \text{Binomial}(n_i, p_i)

# Aggregated binomial regression
set.seed(42)
n_groups <- 20

# Each group has a different number of trials

n_trials <- sample(10:50, n_groups, replace = TRUE)
x <- runif(n_groups, 0, 10)

# True relationship

logit_p <- -1 + 0.3 * x
p_true <- 1 / (1 + exp(-logit_p))
successes <- rbinom(n_groups, n_trials, p_true)

# Fit aggregated binomial regression

m <- glm(cbind(successes, n_trials - successes) ~ x, family = binomial)

cat("Aggregated binomial regression:\n")
cat(" Intercept:", round(coef(m)[1], 3), "\n")
cat(" Slope:", round(coef(m)[2], 3), "\n")

# Predicted probabilities

cat("\nPredicted probabilities:\n")
for (x_val in c(2, 5, 8)) {
p <- 1 / (1 + exp(-(coef(m)[1] + coef(m)[2] * x_val)))
cat(sprintf(" x = %d: p = %.3f\n", x_val, p))
}

# Plot

x_seq <- seq(0, 10, length.out = 100)
logit_pred <- coef(m)[1] + coef(m)[2] * x_seq
p_pred <- 1 / (1 + exp(-logit_pred))

plot(x, successes / n_trials, pch = 16, col = "steelblue",
xlab = "x", ylab = "Proportion of successes",
main = "Aggregated binomial regression")
lines(x_seq, p_pred, lwd = 2, col = "firebrick")
Click Run to execute this code in your browser with WebR
Rethinking

Los log-odds no son intuitivos. El enlace logit mapea probabilidades a la recta real, pero los log-odds son difíciles de interpretar directamente. Un coeficiente de 0.8 no significa "aumento del 80%" — significa que los log-odds aumentan en 0.8, lo que corresponde a una razón de odds de e0.8≈2.2e^{0.8} \approx 2.2. Siempre convierta a la escala de probabilidad para interpretar. Grafique las probabilidades predichas en valores significativos de los predictores. El modelo vive en la escala logit, pero el significado vive en la escala de probabilidad.

Resumen de la Sección 10.1

  • La regresión binomial usa el enlace logit: log⁡(p/(1−p))=α+βx\log(p/(1-p)) = \alpha + \beta x.
  • Los coeficientes son log-odds — convierta con eβe^\beta para razones de odds.
  • Para datos agregados, use glm(cbind(successes, failures) ~ x, family = binomial).
  • Siempre interprete en la escala de probabilidad — grafique las probabilidades predichas.