Estadística

De "la fiebre amarilla de Cádiz y pueblos comarcanos" de 1800

Esta entrada está motivada, en última instancia, por la lectura del libro (muy recomendable, por otra parte), The Art of Statistics: Learning From Data, de David Spiegelhalter. Sus muchas virtudes hacen, por contraste, que relumbre particularmente un defecto característico de toda esa creciente literatura sobre el tema: su aburridor anglocentrismo. Que si el médico devenido asesino en serie, que si los cirujanos de Bristol, que si el manidísimo John Snow (que esta vez, en este libro, de casualidad, no aparece),…

Este vídeo es un resumen en 15 minutos de años de entradas de este blog, solo que contado todo al revés

El vídeo es este:

  • Si tomas cada frase y le pones un NO delante, tienes un esquema de un sílabo para un curso de capacitación estadística básica.
  • Por algún motivo, cuando vi el vídeo por primera vez, la única palabra que me venía a la mente era: pornográfico.
  • Para conocer más sobre el mundo al que se refiere el vídeo, recomiendo El oscuro mundo de los ’tipsters’, los pronosticadores que ejercen de gancho de las casas de apuestas (un artículo al que solo le pongo el pero de haber sido redactado bajo la ilusión del solucionismo regulatorio).
  • Hay un filón de trabajo cuantitativo y pro bono que podría hacerse (atención al uso del impersonal) al respecto para contrarrestar (¿es posible?) el impacto de toda esta gente.
  • La gente está fatal.

Vedlo. Es alucinante.

Contrariamente a lo que creía recordar, "Hot deck" != LOCF

Imputación (que es algo en lo que muy a regañadientes estoy trabajando estos días).

Si de verdad tienes que imputar datos en una tabla (y solo en ese caso), solo hay un criterio: construye un modelo para predecir los valores faltantes en función del resto y reemplaza el NA por la su predicción.

El modelo puede ser tan tonto como

lm(my_col ~ 1, na.rm = T)

que resulta en la popular estrategia de reemplazar los NAs por la media del resto de las observaciones. Cambiando lm por otras cosas funciones más molonas y la fórmula por otras más complejas en que intervengan otras columnas se obtienen métodos más potentes. Se pueden usar GAMs (como en mtsdi) o random forests (como en missForest), pero la idea está clara. Es solo la naturaleza del problema la que nos invita a decantarnos por una u otra opción.

Misma p, distinto n, luego...

Tres situaciones. La primera:

n <- 20
y <- 15
test <- prop.test(y, n, p = .5)
test$p.value
# [1] 0.04417134
test$conf.int
# 0.5058845 0.9040674

La segunda:

n <- 200
y <- 115
test <- prop.test(y, n, p = 0.5)
test$p.value
#[1] 0.04030497
test$conf.int
# 0.5032062 0.6438648

Y la tercera:

n <- 2000
y <- 1046
test <- prop.test(y, n, p = 0.5)
test$p.value
#[1] 0.0418688
test$conf.int
# 0.5008370 0.5450738

En resumen:

  • mismo problema
  • distintos tamaños muestrales
  • mismo p-valor (aproximadamente)
  • distintos estimadores
  • distintos intervalos de confianza

La pregunta: ¿qué circunstancia es más favorable? Una respuesta, aquí.

Modelos como "hechos estilizados"

El otro día, una remesa de nuevos datos rompió un modelo (no mío) en producción. El modelo suponía que la forma de los datos era muy concreta y estos se rebelaron.

Un amigo me preguntó por qué se usaba un modelo paramétrico tan simple. El motivo no es otro que la búsqueda de hechos estilizados, resúmenes a muy alto nivel de la realidad que quepan y queden bien en un tuit. Aunque luego, su parecido con la realidad sea nulo.

Un recordatorio: MOMOCalor está "up and running"

Por desgracia, MoMo ya no exige presentación. Pero con los termómetros acariciando los 40º no está mal recordar la existencia de MoMoCalor, su hermanito, que trata atribuir mortalidad a los excesos de temperaturas.

¿Por qué es particularmente importante MoMoCalor hoy? Recuérdese que MoMo estima, simplemente, desviaciones de mortalidad con respecto a la que sería la normal en una fecha determinada. Cuando hay una epidemia o una ola de calor, la mortalidad crece y MoMo lo detecta. Pero cuando hay una epidemia y una ola de calor simultáneas, MoMo es incapaz de atribuir muertos las causas anómalas subyacentes. Pero MoMoCalor sí.

Por supuesto que tengo más variables que observaciones... ¿y?

He intentado replicar los resultados de la entrada de ayer con GAM (vía mgcv) así (véase el enlace anterior para la definición de los datos):

library(mgcv)
modelo_gam <- gam(
    y ~ x + s(id, bs = "re"),
    data = datos,
    method = "REML",
    family = "poisson")

Y nada:

Error in gam(y ~ x + s(id, bs = "re"), data = datos, method = "REML", : Model has more coefficients than data

Sí, ya sé que tengo más variables que observaciones. Pero, ¿no es para eso que estoy usando efectos aleatorios?

Aún más sobre la presunta sobredispersión en modelos de Poisson

[Esta entrada continúa el ciclo al que he dedicado esta y esta otra entradas durante los últimos días.]

Las dos entradas anteriores de la serie se resumen en que:

  • el modelo de Poisson no recoge todas las fuentes de error que pueden existir en los datos y que
  • las soluciones al uso (como, p.e., usar modelos quasi-Poisson) son puros remiendos.

Si el error en el modelo de Poisson entra (también) en el término lineal, podemos modelar ese error explícitamente. Podría haber implementado la solución INLA o Stan del problema, pero me conformaré con la lme4. Primero, generaré los datos (igual que en las entradas anteriores) y añadiré una variable categórica que identifique cada registro:

Análisis de arquetipos

De eso trata un artículo de los noventa de Breiman. Es decir, de encontrar dentro de conjuntos de datos conjuntos finitos de sujetos puros que permiten representar cualquier otro como una mezcla (o combinación convexa) de ellos.

Ideas a vuelapluma:

  • Cuando leo sobre el asunto, la palabra que no deja de aparecérseme es outlier. Curiosamente, la busco en el texto y se resiste a aparecer. Pero me aterra la posibilidad de estar caracterizando a los sujetos normales (¿aún se puede usar la expresión?) como combinación convexa de raritos.
  • La técnica podía competir muy favorablemente con el clústering tanto conceptualmente (resuelve el problema de la heterogeneidad de los clústers) como operativamente (se podrían extraer para algún fin los sujetos que participasen en una proporción determinada de un cierto arquetipo).
  • En el fondo, se solapa con otras técnicas bien establecidas y que hacen cosas parecidas como LDA (con D de Dirichlet) o NMF (factorización no negativa de matrices).

Más sobre la presunta sobredispersión en el modelo de Poisson

[Esta entrada abunda sobre la de ayer y sin la cual no se entiende.]

Generemos unos datos, las x:

n <- 1000
sigma <- .5
x <- rep(-2:2, each = n)
x_real <- -1 + .5 * x + rnorm(length(x), 0, sigma)

En el bloque anterior hemos creado una/la variable observada, x, el término lineal que operará en el modelo de Poisson, -1 + .5 * x, y el real, -1 + .5 * x + rnorm(length(x), 0, sigma), que agrega al anterior el impacto de otras variables no tenidas en cuenta a través de un error normal al uso.