Regresión Logística

El Elo: prácticamente una regresión logística entrenada en línea

Los jugadores $A$ y $B$ se enfrentan al ajedrez. El Elo de A y B son dos números $E_A$ y $E_B$ tales que la probabilidad de que $A$ gane la partida a $B$ es

$$P(A-B) = \frac{1}{1 + 10^{(E_B - E_A) / 400}} = \frac{1}{1 + \exp(-k(E_A - E_B))}$$

para un determinado valor de $k$ que no me voy a molestar en calcular.

Omitiendo la complicación de que las partidas de ajedrez pueden terminar en tablas, podríamos entender el Elo como —prácticamente— los coeficientes de una regresión logística ajustada sobre unos datos, un histórico de partidas de ajedrez, con una matriz de diseño muy particular:

Sobre la relación entre la teoría de la relatividad y la regresión logística

Según la teoría de la relatividad, las velocidades (lineales) se suman así:

v1 <- 100000
v2 <- 100000
velocidad_luz <- 300000

suma_relativista <- function(x,y){
  (x + y) / (1 + x * y / velocidad_luz^2)
}

suma_relativista(v1, v2)
# 180000

Lo que es todavía menos conocido es que esa operación es equivalente a la suma ordinaria de velocidades a través de una transformación de ida y vuelta vía la arcotangente hiperbólica (véase esto). En concreto:

f1 <- function(x) {
  atanh(x / velocidad_luz)
}

f2 <- function(x) {
  velocidad_luz * tanh(x)
}

f2(f1(v1) + f1(v2))
# 180000

Ahora imaginemos un universo donde la velocidad máxima no es la de la luz, sino que solo están permitidas las velocidades entre 0 y 1:

Infradispersión en la logística

Le he dado muchas vueltas en estos últimos tiempos al asunto de la sobredispersión, particularmente en dos tipos de modelos: Poisson y logístico. Así que, aunque solo sea por proximidad semántica, se me quedan pegados ejemplos y casos de ese fenómeno mucho menos frecuente que es el de la infradispersión.

Un ejemplo ilustrativo del fenómeno que se me ocurrió el otro día era

pero hace nada, ese señor lleno de paz y amor que es Putin, nos ha regalado otro:

Sobremuestreando x (y no y)

Construyo unos datos (artificiales, para conocer la verdad):

n <- 10000
x1 <- rnorm(n)
x2 <- rnorm(n)
probs <- -2 + x1 + x2
probs <- 1 / (1 + exp(-probs))
y <- sapply(probs, function(p) rbinom(1, 1, p))
dat <- data.frame(y = y, x1 = x1, x2 = x2)

Construyo un modelo de clasificación (logístico, que hoy no hace falta inventar, aunque podría ser cualquier otro):

summary(glm(y ~ x1 + x2, data = dat, family = binomial))
#Call:
#glm(formula = y ~ x1 + x2, family = binomial, data = dat)
#
#Deviance Residuals:
#    Min       1Q   Median       3Q      Max
#-2.2547  -0.5967  -0.3632  -0.1753   3.3528
#
#Coefficients:
#            Estimate Std. Error z value Pr(>|z|)
#(Intercept) -2.05753    0.03812  -53.97   <2e-16 ***
#x1           1.01918    0.03386   30.10   <2e-16 ***
#x2           1.00629    0.03405   29.55   <2e-16 ***
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#(Dispersion parameter for binomial family taken to be 1)
#
#    Null deviance: 9485.2  on 9999  degrees of freedom
#Residual deviance: 7373.4  on 9997  degrees of freedom
#AIC: 7379.4
#
#Number of Fisher Scoring iterations: 5

Correcto.

La regresión logística como el modelo más simple posible (que...)

Problema de regresión. Queremos $y = f(\mathbf{x})$. Lo más simple que podemos hacer: fiarlo todo a Taylor y escribir $ y = a_0 + \sum_i a_i x_i$.

Problema de clasificación. Lo más simple que podemos hacer, de nuevo: linealizar. Pero la expresión lineal tiene rango en $latex (-\infty, \infty)$. Solución, buscar la función $latex f$ más sencilla que se nos pueda ocurrir de $latex (-\infty, \infty)$ en $latex [0, 1]$. Entonces, $latex y = f(a_0 + \sum_i a_i x_i)$.

¿Lineal o logística?

Hay cosas tan obvias que ni se plantea la alternativa. Pero luego va R. Gomila y escribe Logistic or Linear? Estimating Causal Effects of Treatments on Binary Outcomes Using Regression Analysis que se resume en lo siguiente: cuando te interese la explicación y no la predicción, aunque tu y sea binaria, usa regresión lineal y pasa de la logística.

Nota: La sección 4.2 de An Introduction to Statistical Learning de se titula precisamente Why Not Linear Regression?

Modelos con inflación de ceros y separación perfecta

Al estudiar problemas de conteos, la llamada inflación de ceros ocurre frecuentemente: los datos contienen más ceros de los que ocurrirían según las distribuciones habituales (Poisson, binomial negativa). Un modelo con inflación de ceros es una mezcla (mixtura) de un modelo de conteos y una distribución de Dirac (en cero).

Las técnicas habituales para resolverlos involucran (explícita o implícitamente) una estructura jerárquica de modelos: primero, uno (similar a una logística), separa las observaciones que corresponderían a la Dirac del resto. Un segundo modelo de conteos trata de ajustar el segundo.

Interacciones "mecánicas" en regresiones logísticas

En general, dos variables interaccionan cuando el efecto de una cambia al modificarse el nivel de la otra. Un caso particular (aunque notable) de interacción es el habitual en los modelos lineales, generalizados o no. En ellos, al introducir en el modelo términos del tipo x1 * x2, estamos indicando que el coeficiente de la segunda variable, $latex x_2$, es $latex \alpha + \beta x_1$. El efecto de un incremento de una unidad de $latex x_2$ depende entonces de $latex x_1$.

Pues los SVMs, al final, no son tan exóticos

Impartí un curso sobre máquinas de vector soporte (SVMs en lo que sigue) en Lima el pasado mes de agosto.

Las SVMs (o más propiamente, los clasificadores de margen máximo) son exóticos dentro del repertorio del científico de datos. Lo que buscan es un hiperplano que maximiza el margen entre tirios o troyanos,

con o sin penalización para los puntos que insisten en permanecer en la región del espacio que no les corresponde. El modelo se ajusta resolviendo un problema de minimización inhabitual: uno de los llamados programas cuadráticos convexos. (Del que no nos tenemos que preocupar habitualmente porque delegamos la resolución en el software).

Comparaciones de tres grupos: pruebas vs modelos

Una pregunta reciente en r-help-es se refería a la comparación en R de las proporciones en tres grupos. Obviando algunas pequeñas complicaciones en el problema, la respuesta canónica podría ser esta:

total <- c(56, 49,51)
positivos <- c(14, 10, 17)
prop.test(tmp$positivos, tmp$positivos + tmp$negativos)

# 3-sample test for equality of proportions without continuity correction
#
# data:  tmp$positivos out of tmp$positivos + tmp$negativos
# X-squared = 2.2289, df = 2, p-value = 0.3281
# alternative hypothesis: two.sided
# sample estimates:
#   prop 1    prop 2    prop 3
# 0.2500000 0.2040816 0.3333333

Los grupos no parecen ser desiguales.

Ajuste de probabilidades en regresiones logísticas bajo sobremuestreo ( y otros)

En ocasiones el conjunto de datos sobre el que se ajusta una regresión logística está desequilibrado con respecto a la población subyacente. Por ejemplo, puede suceder que la tasa de casos positivos en los datos sea del 20% mientras que en la población general es del 5%.

Esto puede suceder por varios motivos. El sobremuestreo uno de ellos: se sobremuestrea cuando se toman, por ejemplo, todos los casos positivos y solo un subconjunto de los negativos.

Efectos en regresiones logísticas

Rescato y reconvierto un comentario de mi buen amigo José Luis Cañadas en una entrada mía reciente en la de hoy.

Sugiere José Luis el uso del paquete effects de R para estudiar el efecto de (que el caso concreto de interés, aunque hay otros) las variables de un modelo logístico.

Nos copia el código

library(effects)
mod.cowles <- glm(volunteer ~ sex + neuroticism*extraversion,
    data = Cowles, family = binomial)
eff.cowles <- allEffects(mod.cowles,
    xlevels = list(extraversion = seq(0, 24, 6)),
    given.values = c(sexmale = 0.5))
plot(eff.cowles, type = "response")

que genera

Una interpretación (rápida y sucia) de los coeficientes de la regresión logística

Los coeficientes de la regresión logística tienen una interpretación recta en términos de odds ratio. Que es un concepto sobre el que puede que alguien tenga algún tipo de intuición. Pero yo no.

¿Cómo podemos interpretar, aunque sea de manera rápida y grosera, los coeficientes? En términos de la variación de la probabilidad cuando la variable correspondiente cambia de valor (p.e., en una unidad). El problema es que la probabilidad depende del valor del resto de las variables: la relación no es lineal. No obstante, esa intuición es posible (en algunos casos: véase la nota).