22 votos

¿Cómo utiliza la regresión logística la distribución binomial?

Estoy tratando de entender cómo la regresión logística utiliza la distribución binomial.

Supongamos que estudio el éxito de los nidos en las aves. La probabilidad de que un nido tenga éxito es 0,6. Utilizando la distribución binomial, puedo calcular la probabilidad de r éxitos dados n ensayos (número de nidos estudiados).

Pero, ¿cómo se utiliza la distribución binomial en un contexto de modelización? Digamos que quiero saber cómo afecta la temperatura media diaria al éxito de los nidos y utilizo la regresión logística para explorar esta cuestión.

En el contexto que he descrito, ¿cómo utiliza la regresión logística la distribución binomial?

Busco una respuesta intuitiva, es decir, sin ecuaciones. Creo que las ecuaciones sólo son útiles una vez que se ha logrado una comprensión a nivel intuitivo.

15voto

AdamSane Puntos 1825

¿Sin ecuaciones? Vaya. Veamos:

El modelo de regresión logística es literalmente un modelo para la $p$ de una distribución binomial; con un predictor continuo, cada punto puede tener su propia distribución. (En los casos en que las observaciones son 0-1, tratamos con el caso especial Bernoulli; es una situación común).

En $n$ se da, no se modela. Así pues, el resultado es que, con un modelo que relacione el $p_i$ y un $n_i$ podemos modelar datos binomiales en términos de un predictor que describa la media (y la varianza) a través de su modelo para $p$ . El modelo puede ajustarse mediante estimación de máxima verosimilitud, pero debido a su forma especial (familia exponencial), ML es relativamente "agradable".

Dado que el enlace logístico es canónico para la familia binomial, es aún más agradable, ya que los estadísticos suficientes son de forma muy simple - esto lo hace conveniente para tratar con grandes muestras, o incluso para desarrollar algoritmos "en línea".

Por supuesto, $p$ siendo una probabilidad, se encuentra entre 0 y 1. Esto, naturalmente, significa que cuando escribimos un modelo para ella en términos de alguna otra variable, ese modelo no debe estrellarse a través de esos límites, por lo que a medida que la variable independiente se hace lo suficientemente grande o pequeña, la relación debe doblarse para permanecer dentro de los límites.

Con la regresión logística, esa curva (la función de enlace) es una función logística. Otras funciones son posibles, y muchos paquetes implementan varias (R tiene tres adecuadas incorporadas en su función glm funcionalidad si no recuerdo mal).


Ningún símbolo de igualdad ha sido dañado en la elaboración de este post.

9voto

Lee Puntos 663

Suponga que observa varios nidos a diferentes temperaturas medias diarias $t$ . ¿Cómo se calcula la probabilidad $\pi(t)$ de éxito del nido dependen de la temperatura $t$ ? (Si los nidos son independientes, el número de nidos con éxito a temperatura $t$ se distribuye binomialmente con $n$ igual al número de nidos observados y la probabilidad de éxito $\pi(t)$ .)

La regresión logística es un método (que utiliza la función logística) para especificar la probabilidad de éxito en función de la temperatura mediante el estiramiento y el desplazamiento de la curva logística, estimándose a partir de los datos la cantidad de estiramiento y desplazamiento necesarios.

7voto

jldugger Puntos 7490

Su modelo asume que el éxito de un nido puede verse como una apuesta: Dios lanza una moneda cargada con caras etiquetadas como "éxito" y "fracaso". El resultado de la tirada para un nido es independiente del resultado de la tirada para cualquier otro nido.

Sin embargo, los pájaros tienen algo a su favor: la moneda puede favorecer mucho el éxito a unas temperaturas en comparación con otras. Así, cuando se tiene la oportunidad de observar nidos a una temperatura determinada, el número de éxitos es igual al número de lanzamientos con éxito de la misma moneda --el de esa temperatura. La distribución binomial correspondiente describe las probabilidades de éxito. Es decir, establece la probabilidad de cero éxitos, de uno, de dos, ... y así sucesivamente a través del número de nidos.

Una estimación razonable de la relación entre la temperatura y la forma en que Dios carga las monedas viene dada por la proporción de aciertos observada a esa temperatura. Esta es la estimación de Máxima Verosimilitud (MLE).

Por ejemplo, supongamos que observa $7$ nidos a una temperatura de $10$ grados y $3$ de esos nidos tienen éxito. La MLE es $3/7.$ Es decir, estimamos que la moneda de Dios tiene un $3/7$ posibilidades de éxito. La distribución binomial correspondiente se representa en la primera fila de la figura (véase más abajo) bajo el título "10 grados". Representa las probabilidades con las alturas de los segmentos de línea vertical. El segmento rojo corresponde al valor observado de $3$ éxitos.

Las temperaturas deben variar en sus datos. Como ejemplo, supongamos que a temperaturas $5,10,15,20$ grados que observó $0,3,2,3$ éxitos entre $2,7,5,3$ nidos. Este conjunto de datos está representado por los círculos grises en los paneles "Ajuste" de la figura. La altura de un círculo representa su tasa de éxito. Las áreas de los círculos son proporcionales al número de nidos (lo que acentúa los datos con más nidos).

La fila superior de la figura muestra los MLE en cada una de las cuatro temperaturas observadas. La curva roja del panel "Ajuste" traza cómo se carga la moneda en función de la temperatura. Por construcción, este trazo pasa por cada uno de los puntos de datos. (Se desconoce lo que hace a temperaturas intermedias; he conectado toscamente los valores para enfatizar este punto).

Este modelo "saturado" no es muy útil, precisamente porque no nos da ninguna base para estimar cómo Dios cargará las monedas a temperaturas intermedias. Para ello, tenemos que suponer que existe algún tipo de curva de "tendencia" que relaciona las cargas de monedas con la temperatura.

Figure

La fila inferior de la figura se ajusta a dicha tendencia. La tendencia está limitada en lo que puede hacer: cuando se traza en coordenadas apropiadas ("log odds"), como se muestra en los paneles "Respuesta Logit" de la izquierda, sólo puede seguir una línea recta. Esta línea recta determina la carga de la moneda a todas las temperaturas, como muestra la línea curva correspondiente en los paneles "Ajuste". Esa carga, a su vez, determina las distribuciones binomiales a todas las temperaturas. La fila inferior muestra esas distribuciones para las temperaturas en las que se observaron nidos. (Las líneas negras discontinuas marcan los valores esperados de las distribuciones, lo que ayuda a identificarlas con bastante precisión. Esas líneas no se ven en la fila superior de la figura porque coinciden con los segmentos rojos).

Ahora hay que hacer un compromiso: la línea puede pasar cerca de algunos de los puntos de datos, pero alejarse de otros. Esto hace que la distribución binomial correspondiente asigne probabilidades más bajas que antes a la mayoría de los valores observados. Esto se puede ver claramente a 10 grados y 15 grados: la probabilidad de los valores observados no es la probabilidad más alta posible, ni se acerca a los valores asignados en la fila superior.

La regresión logística desliza y agita las posibles líneas (en el sistema de coordenadas utilizado por los paneles "Respuesta Logit"), convierte sus alturas en probabilidades Binomiales (los paneles "Ajuste"), evalúa las probabilidades asignadas a las observaciones (los cuatro paneles de la derecha), y elige la línea que ofrece la mejor combinación de esas posibilidades.

¿Qué es "mejor"? Simplemente que la probabilidad combinada de todos los datos sea lo mayor posible. De este modo, no se permite que ninguna probabilidad (los segmentos rojos) sea realmente pequeña, pero normalmente la mayoría de las probabilidades no serán tan altas como lo eran en el modelo saturado.

Aquí se muestra una iteración de la búsqueda de regresión logística en la que la línea se giró hacia abajo:

Figure 2

En primer lugar, fíjese en lo que no ha cambiado: los puntos grises del diagrama de dispersión "Fit" son fijos porque representan los datos. Del mismo modo, los rangos de valores y el posiciones horizontales de los segmentos rojos en los cuatro gráficos binomiales también son fijos, porque también representan los datos. Sin embargo, esta nueva línea carga las monedas de una forma radicalmente distinta. Al hacerlo cambia las cuatro distribuciones Binomial (los segmentos grises). Por ejemplo, da a la moneda alrededor de un 70% de éxito a una temperatura de $10$ grados, lo que corresponde a una distribución cuyas probabilidades son mayores para 4 a 6 aciertos. En realidad, esta línea se ajusta muy bien a los datos de $15$ grados, pero un trabajo terrible en el ajuste de los otros datos. (A 5 y 20 grados las probabilidades binomiales asignadas a los datos son tan pequeñas que ni siquiera se ven los segmentos rojos). En general, se trata de un ajuste mucho peor que los mostrados en la primera figura.


Espero que esta discusión te haya ayudado a desarrollar una imagen mental de las probabilidades binomiales que cambian al variar la recta, manteniendo siempre los mismos datos. El ajuste de la línea mediante regresión logística intenta que esas barras rojas sean en conjunto lo más altas posible. Así pues, la relación entre la regresión logística y la familia de distribuciones binomiales es profunda e íntima.


Apéndice: R código para producir las cifras

#
# Create example data.
#
X <- data.frame(temperature=c(5,10,15,20),
                nests=c(2,7,5,3),
                successes=c(0,3,2,3))
#
# A function to plot a Binomial(n,p) distribution and highlight the value `k0`.
#
plot.binom <- function(n, p, k0, highlight="#f02020", ...) {
  plot(0:n, dbinom(0:n, n, p), type="h", yaxt="n",
       xlab="Trials", ylab="Probability", ...)
  abline(v = p*n, lty=3, lwd=2)
  if(!missing(k0)) lines(rep(k0,2), c(0, dbinom(k0,n,p)), lwd=2, col=highlight)
}
#
# A function to convert from probability to log odds.
#
logit <- function(p) log(p) - log(1-p)
#
# Fit a saturated model, then the intended model.
#
# Ordinarily the formula for the saturated model would be in the form
# `... ~ factor(temperature)`, but the following method makes it possible to  
# plot the predicted values in a visually effective way.
#
fit.0 <- glm(cbind(successes, nests-successes) ~ factor(round(temperature/5)), 
             data=X, family=binomial)
summary(fit.0)

fit <- glm(cbind(successes, nests-successes) ~ temperature, 
           data=X, family=binomial)
summary(fit)
#
# Plot both fits, one per row.
#
lfits <- list(fit.0, fit)
par.old <- par(mfrow=c(length(lfits), nrow(X)+2))
for (fit in lfits) {
  #
  # Construct arrays of plotting points.
  #
  X$p.hat <- predict(fit, type="response")
  Y <- data.frame(temperature = seq(min(X$temperature), max(X$temperature), 
                                    length.out=101))
  Y$p.hat <- predict(fit, type="response", newdata=Y)  # Probability
  Y$lambda.hat <- predict(fit, type="link", newdata=Y) # Log odds
  #
  # Plot the fit in terms of log odds.
  #
  with(Y, plot(temperature, lambda.hat, type="n", 
               yaxt="n", bty="n", main="Logit Response",
               ylab=expression(hat(lambda))))
  if (isTRUE(diff(range(Y$lambda.hat)) < 6)) {
    # Draw gridlines and y-axis labels
    p <- c( .10, .25, .5, .75, .9)
    q <- logit(p)
    suppressWarnings(rug(q, side=2))
    abline(h=q, col="#d0d0d0")
    mtext(signif(p, 2), at=q, side=2, cex=0.6)
  }
  with(Y, lines(temperature, lambda.hat, lwd=2, col="#f02020"))
  #
  # Plot the data and the fit in terms of probability.
  #
  with(X, plot(temperature, successes/nests, ylim=0:1,
               cex=sqrt(nests), pch=21, bg="Gray",
               main="Fit"))
  with(Y, lines(temperature, p.hat, col="#f02020", lwd=2))
  #
  # Plot the Binomial distributions associated with each row of the data.
  #
  apply(X, 1, function(x) plot.binom(x[2], x[4], x[3], bty="n", lwd=2, col="Gray",
                                     main=paste(x[1], "Degrees")))
}
par(mfrow=par.old)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X