Estadística

Coronavirus: prevalencia, sensibilidad y especificidad

El otro día, por motivos que no vienen al caso, dibujé

que es una gráfica que muestra la posibilidad de tener aquello que quiera Dios que midan los tests del estudio ENECOVID-19 para aquellos a los que el test correspondiente ha dado positivo habida cuenta de su sensibilidad (85%) y especificidad (98%, que uso en lugar del menos creíble 99% que usa el estudio).

Efectivamente, cuando la prevalencia es baja, casi todos los tests positivos son falsos: corresponden a ese 2% de error que tiene el test sobre la población sana.

Explicación de modelos

Este es el primer año en el que en mi curso de ciencia de datos (hasta ahora en el EAE; a partir del año que viene, vaya uno a saber si y dónde) introduzco una sección sobre explicación de modelos.

Hay quienes sostienen que, mejor que crear un modelo de caja negra y tratar luego de explicar las predicciones, es recomendable comenzar con un modelo directamente explicable (p.e., un GLM). Por mucha razón que traigan, vox clamantis in deserto: hay y seguirá habiendo modelos de caja negra por doquier.

Sobre "Predicción, estimación y atribución"

Subrayo hoy aquí tres cuestiones que considero importantes del reciente artículo Prediction, Estimation, and Attribution de B. Efron (para otra visión, véase esto).

La primera es que existe una cadena de valor en la modelización estadística que va del producto más ordinario, la predicción, a la estimación y de este, al más deseable, la atribución. En la terminología de Efron,

  • estimación consiste en la determinación de los parámetros subyacentes (e importantes) del modelo; específicamente se refiere a la estimación puntual;
  • atribución tiene que ver con intervalos de confianza, p-valores, etc. de esos parámetros.

La segunda es que la predicción es un problema fácil, mientras que la estimación (y la atribución) son mucho más complicados. Lo ilustra con un ejemplo sencillo: comparando la eficiencia de dos modelos, uno el óptimo y otro ligeramente inferior para:

53 (o, ¿cuál es la prior?)

En la documentación técnica del estudio ENE-COVID19 (recuérdese: INE + ISCIII) se describe un estudio de fiabilidad previo del test rápido (sección A1.2) que se anuncia así:

Según el fabricante, el test tiene una sensibilidad del 88% y 97% para determinar IgM e IgG respectivamente, y una especificidad de 100% frente a ambos isótopos. Para comprobar el comportamiento del test elegido, se han llevado a cabo dos estudios de fiabilidad.

Veamos en qué consisten.

Aleatoriedad hirsuta, aleatoriedad pochola

Contemplando y comparando

y

se me han venido a la mente los adjetivos hirsuto y pocholo para calificar las respectivas formas de aleatoriedad que representan. La primera es el resultado del habitual

n <- 200
x <- runif(n)
y <- runif(n)
plot(x, y, pch = 16)

mientras que la segunda exige el más sofisticado

library(randtoolbox)
s <- sobol(n, 2, scrambling = 3)
x <- s[,1]
y <- s[,2]
plot(x, y, pch = 16)

Se ve que Sobol quería rellenar más armoniosamente el espacio. Me temo que, al hablar de aleatoriedad, muchos de nosotros también (p.e., esto).

De histogramas a distribuciones (usando la de Burr)

Tengo una entrada perpetuamente pendiente que se pospone, entre otras cosas, porque aún no he encontrado una manera satisfactoria para muestrear histogramas. Una de las vías sería dar con (y ajustar) una distribución subyacente que generase unos histogramas similares.

Hoy voy a contar un ejemplo de cómo puede fallar tal estrategia.

Por un lado he bajado datos de la distribución de renta en España del INE:

Por otro, me he dejado convencer temporalmente de que la distribución de Burr podría ser conveniente para modelar la distribución de ingresos de los hogares (Wikipedia dixit!).

No hagáis esto o se darán cuenta de que sois muy cutres

Lo que no hay que hacer nunca si no quieres que se enteren de que eres inmensamente cutre es escribir código en las líneas del siguiente seudocódigo:

m = model(y ~ a + b + c)
if (modelo.p_value(a) > .05)
    m = model(y ~ b + c)

¡No, no, no, no, NO!

La ley de la cerveza para pintar nubes (y su relación con el análisis de la supervivencia)

El otro día pregunté a en un grupo de amigos, físicos mayormente, si les sonaba de alguna esquinita teórica de la carrera en que apareciese alguna función de la forma

$$ x(t) = \exp\left(-\int_0^t f(x) dx\right)$$

y uno, que trabaja en el mundo del videojuego dio con la línea 401 del código que aparece aquí y que sirve para pintar las nubes hiperrealistas que aparecen en la misma página.

Es una aplicación de la ley de Beer en la que mis lectores más sofisticados reconocerán el estrecho vínculo con el análisis de la superviencia. En este caso, la que trata de sobrevivir es una intensidad luminosa que atraviesa diversos medios que la van atenuando. Al ser potencialmente heterogéneos, la función de supervivencia adquiere la forma

No leáis nada de lo que diga este inepto: no sabe por dónde le pega el aire

Hay gente que va dándoselas de nosequé y luego resulta que no sabe por dónde le pega el aire. Veámoslo hablando de análisis de la supervivencia:

En cualquier caso, con datos de esa naturaleza (isótopos radioactivos, enfermos de cáncer, etc.) no se informa la vida media sino, generalmente, la semivida. Es decir, cuánto tiempo pasa hasta que se liquida la mitad de una cohorte. En este caso, lo suyo sería estimar la semivida ponderada por importe.

Sobre la función de riesgo en el análisis de la supervivencia

Tienes una función de supervivencia

y piensas que es posible aproximarla usando segmentos de exponencial usando primero una rejilla gruesa,

y luego cada vez más fina,

hasta que sean indistinguibles.

Las distintas aproximaciones son

$$ \hat{S}(t) = \exp\left(-\sum_{i \le n} \lambda_i \Delta - \lambda_n (t - t_n)\right)$$

donde $latex n$ es el índice del intervalo que contiene a $latex t$ los $latex \lambda_i$ son los coeficientes en los segmentos de exponencial. Esa expresión que converge a

Análisis (bayesiano) de pruebas con sensibilidad/especificidad desconocida

Esto tiene que ver con lo del estudio ENECOVID, por supuesto.

Esto tiene que ver con los ajustes que hay que realizar en los resultados por la menos que perfecta sensibilidad y especificidad.

Porque no basta con lo que diga el prospecto de los kits chinos.

Por eso es recomendable leer Bayesian analysis of tests with unknown specificity and sensitivity.

Coda: Cuando era matemático y comencé a estudiar estadística, me llamaba mucho la atención (por no decir que me escandalizaba) la alegría con la que estimadores sujetos a error de un modelo se insertaban como verdad divina en otro. Que es lo que aparentemente se hace cuando el estimador puntual de sensibilidad y especificidad copipega tal cual en las fórmulas del ajuste.

Micromuertes y coronavirus

[Esta entrada abunda en la que escribí hace nueve años sobre las micromuertes y sin la cual no se entiende.]

El concepto de micromuerte sirve para anclar y comparar adecuadamente riesgos diminutos. De acuerdo con la entrada que referencio arriba, una micromuerte equivale al riesgo (recuérdese: ¡promedio!) de caminar 15 km o conducir 250. Pasar una noche en el hospital consume 75 de ellos (por riesgo de contagios que no tengan que ver con el motivo de ingreso) y dar a luz, alrededor de 100.