Skip to content
Statistical RethinkingStatistical Rethinking

4.2 Un lenguaje para describir modelos

Una notación clara del modelo separa la verosimilitud del modelo lineal. Escribir el modelo como una lista de supuestos distribucionales y ecuaciones deterministas facilita comunicar, criticar y extender.

4.2.1 Notación del modelo

La notación estándar para un modelo bayesiano tiene dos partes:

  1. Enunciados probabilísticos: Describen cómo se distribuyen los datos y las distribuciones a priori de los parámetros.
  2. Enunciados deterministas: Describen cómo los parámetros de la verosimilitud dependen de los predictores.

Para una regresión lineal simple:

yi∼Normal(μi,σ)y_i \sim \text{Normal}(\mu_i, \sigma) μi=α+βxi\mu_i = \alpha + \beta x_i α∼Normal(0,10)\alpha \sim \text{Normal}(0, 10) β∼Normal(0,10)\beta \sim \text{Normal}(0, 10) σ∼Uniform(0,50)\sigma \sim \text{Uniform}(0, 50)

La primera línea es la verosimilitud: cada observación yiy_i está distribuida normalmente alrededor de μi\mu_i con desviación estándar σ\sigma. La segunda línea es el modelo lineal: el valor esperado μi\mu_i es una función lineal del predictor xix_i. Las líneas restantes son las distribuciones a priori.

4.2.2 Por qué importa esta notación

Esta notación es poderosa porque:

  • Transparencia: Cada supuesto es explícito. Puede ver la verosimilitud, el modelo lineal y las distribuciones a priori de un vistazo.
  • Modificabilidad: Puede cambiar cualquier componente independientemente. Cambiar la verosimilitud, añadir un predictor, modificar una distribución a priori.
  • Generalidad: La misma notación funciona para modelos lineales, modelos lineales generalizados, modelos multinivel y más.
  • Comunicación: La notación es compacta e inequívoca, facilitando compartir modelos con otros.
# Model notation in R: the rethinking package uses alist
# A simple linear regression model:
# y_i ~ Normal(mu_i, sigma)
# mu_i = alpha + beta * x_i
# alpha ~ Normal(0, 10)
# beta ~ Normal(0, 10)
# sigma ~ Uniform(0, 50)

# In rethinking notation:

# model <- alist(

# y ~ dnorm(mu, sigma),

# mu <- a + b * x,

# a ~ dnorm(0, 10),

# b ~ dnorm(0, 10),

# sigma ~ dunif(0, 50)

# )

# Demonstrate with simulated data

set.seed(42)
n <- 100
x <- runif(n, 0, 10)
y <- 2 + 1.5 * x + rnorm(n, sd = 2)

# Fit with lm (frequentist equivalent)

fit <- lm(y ~ x)
cat("Intercept (alpha):", round(coef(fit)[1], 3), "\n")
cat("Slope (beta):", round(coef(fit)[2], 3), "\n")
cat("Residual SD (sigma):", round(summary(fit)$sigma, 3), "\n")

# Plot

plot(x, y, pch = 16, col = "steelblue",
main = "Linear regression: y = alpha + beta * x",
xlab = "x", ylab = "y")
abline(fit, lwd = 2, col = "firebrick")
Click Run to execute this code in your browser with WebR

4.2.3 Funciones de enlace

Para modelos lineales generalizados (Capítulo 9), añadimos una función de enlace gg que mapea el modelo lineal al parámetro de la verosimilitud:

yi∼f(θi)y_i \sim f(\theta_i) g(θi)=α+βxig(\theta_i) = \alpha + \beta x_i

Por ejemplo, para un modelo binomial con enlace logit:

yi∼Binomial(n,pi)y_i \sim \text{Binomial}(n, p_i) logit(pi)=α+βxi\text{logit}(p_i) = \alpha + \beta x_i

La función de enlace asegura que el parámetro permanezca en el rango válido (e.g., p∈[0,1]p \in [0, 1] para el binomial). Estudiaremos las funciones de enlace en detalle en el Capítulo 9.

# Demonstrate a link function: logit
# logit(p) = log(p / (1 - p))
# inverse logit: p = 1 / (1 + exp(-x))

x <- seq(-5, 5, length.out = 100)
logit_vals <- x
prob_vals <- 1 / (1 + exp(-x))

par(mfrow = c(1, 2))
plot(x, logit_vals, type = "l", lwd = 2, col = "steelblue",
main = "Logit link: logit(p) = alpha + beta * x",
xlab = "Linear predictor", ylab = "logit(p)")
abline(h = 0, lty = 2, col = "gray50")

plot(x, prob_vals, type = "l", lwd = 2, col = "firebrick",
main = "Inverse logit: p = 1/(1+exp(-x))",
xlab = "Linear predictor", ylab = "p")
abline(h = 0.5, lty = 2, col = "gray50")
abline(v = 0, lty = 2, col = "gray50")
par(mfrow = c(1, 1))
Click Run to execute this code in your browser with WebR
Rethinking

El modelo es el mapa. La notación del modelo no es solo una forma de escribir código. Es un mapa de sus supuestos. Cada línea codifica una elección: la verosimilitud, el modelo lineal, las distribuciones a priori. Cuando comparte este mapa con otros, pueden ver exactamente qué supuso y pueden criticarlo o extenderlo. Esto es lo opuesto a los procedimientos de caja negra que ocultan los supuestos detrás de una llamada a función. La notación del modelo hace de la estadística una práctica de ingeniería transparente y colaborativa.

Resumen de la Sección 4.2

  • La notación del modelo separa verosimilitud, modelo lineal y distribuciones a priori en enunciados explícitos.
  • La notación es transparente, modificable, general y comunicable.
  • Las funciones de enlace mapean el modelo lineal al parámetro de la verosimilitud para modelos lineales generalizados.
  • La notación del modelo hace visible y criticable cada supuesto.