Muestreo, sensibilidad y especificidad

El bloque de código

n_pop <- 47e6
prev <- .02
n_muestra <- 60e3

real_sensitivity <- .8
real_specificity <- .995

estimated_sensitivity <- .81
estimated_specificity <- .99

anuncia que vamos a hablar de:

  • un país con una población no muy distinta de la de España
  • que sufre una pandemia con una prevalencia del 2%
  • en el que se realiza una selección de unos 60k sujetos
  • para aplicárseles unas pruebas con una sensibilidad y especificidad que pueden o no ser las que anuncia su prospecto,

supongo que para que dentro de unos años, cuando ya a nadie le importe, se publiquen unos datos que han guardado celosamente unos señores que mucho antes nos habrán regalado unos artículos científicos sobre el tema — necesariamente mediocres y que nos tendremos que creer— cuya publicación está garantizada por el mero hecho de que solo ellos tienen los CSVs mientras que la gente verdaderamente capaz, no.

Allende las pullas, simulemos por ver qué ocurre:

pop <- rep(0, n_pop)
pop[1:round(n_pop * prev)] <- 1

muestra <- sample(1:n_pop, n_muestra)
muestra <- pop[muestra]

true_pos <- sum(muestra)
true_neg <- n_muestra - true_pos


test_pos <- rbinom(1, true_pos, real_sensitivity) +
    rbinom(1, true_neg, 1 - real_specificity)
test_neg <- n_muestra - test_pos

test_prop <- test_pos / n_muestra
noise_fix <- (test_prop + estimated_specificity - 1 ) /
    (estimated_sensitivity + estimated_specificity - 1)

c(test_prop, noise_fix)

Notas:

  • Las estimaciones de sensibilidad y especificidad están extraídas de aquí. El lector interesado encontrará ahí intervalos de confianza para guiar la distancia que cabe esperarse entre las sensibilidades y especificidades reales y las anunciadas.
  • Lá fórmula del ajuste, la que define noise_fix, puede encontrarse al final de la segunda página de esto.

Más:

  • Me niego a publicar los resultados de esa simulación por si son irrelevantes.
  • No sé si lo que cuento es importante o no (para alguien). De serlo, seguro, alguien con más tiempo que yo se tomará la molestia de construir una aplicación en shiny decente, etc.