← 14 · La lección: señal frente a ruido F11

Salen 3 provincias especiales cuando el azar ya daba 2,6

La pregunta de esta página

Si se prueban 52 hipótesis a la vez, ¿cuántos hallazgos salen solo por azar?

1 El problema

La empresa vende en 52 provincias. Comparar la satisfacción de cada una contra la media de la compañía es una de las comparaciones habituales de un cuadro de mando. El contraste es sencillo de calcular.

Hecho sobre estos datos, salen 3 provincias significativas con el criterio habitual, el de p menor que 0,05.

Provincia n Satisfacción p Con 0,05
Córdoba 272 5,846 0,0357 significativa
Murcia 295 5,837 0,0392 significativa
Pontevedra 289 5,145 0,0407 significativa
Ciudad Real 300 5,760 0,1015 no significativa
Guadalajara 296 5,230 0,1086 no significativa

2 Por qué engaña

Un umbral de 0,05 significa aceptar una equivocación de cada veinte. Con un solo contraste eso es asumible. Con 52, el número esperado de errores es 0,05 × 52 = 2,6.

Es decir, aunque las 52 provincias fueran idénticas, el método ya esperaba de antemano unos 2,6 falsos positivos. Han salido 3. El resultado está dentro de lo que produce el azar, así que no hace falta buscarles una explicación.

El error que esto produce
Si el informe no dice «se probaron 52 cosas» y solo cuenta la que salió, esa parece la única prueba realizada.

3 El principio

Comparaciones múltiples
El umbral de significación vale para cada contraste por separado. Cuantos más contrastes, más exigente tiene que ser el umbral para que el conjunto siga siendo fiable.

4 La solución

Las dos correcciones más usadas controlan cosas distintas.

Bonferroni divide el umbral entre el número de contrastes. Aquí queda en 0,00096. Lo que controla es que no haya ningún falso positivo en todo el estudio. Es muy exigente, por lo que se le escapan efectos reales pequeños.

Benjamini-Hochberg ordena los p de menor a mayor y los compara con un umbral que va aumentando. Lo que controla es la proporción de falsos positivos entre los resultados aceptados. Con un 5 %, si acepta veinte resultados admite que uno pueda ser falso.

La elección depende de lo que cueste equivocarse. Para decidir un tratamiento médico, Bonferroni. Para cribar mil genes y llevarse los cien mejores al laboratorio, Benjamini-Hochberg.

5 Qué pasa con estos datos

Sin corregir
3
umbral 0,05
Bonferroni
0
umbral 0,00096
Benjamini-Hochberg
0
umbral escalonado

Las dos correcciones dan cero. El p más pequeño de las 52 provincias es 0,0357 y el umbral de Bonferroni está en 0,00096, así que no se acerca. Benjamini-Hochberg, que es la menos exigente de las dos, tampoco deja ninguna como significativa.

Con estos datos no se puede decir que ninguna provincia tenga una satisfacción distinta de la media de la empresa. Las 3 que lo parecían son compatibles con los falsos positivos que el método ya esperaba, unos 2,6.

6 Para qué sirve

Siempre que un panel permite filtrar por muchas categorías. Cada segmento que el usuario abre es un contraste más. El panel no lleva la cuenta de cuántos se han hecho.

También en los tests A/B con muchas métricas, en la búsqueda del «mejor canal» entre quince y en cualquier informe que empiece diciendo «hemos detectado que». La pregunta que hay que hacer es cuántas cosas se miraron antes de detectar esa.

El detalle técnico

Se contrasta cada provincia con al menos 30 ventas válidas con satisfacción contra la media global, con una t de una muestra. Los tres umbrales se aplican sobre los mismos 52 p, así que la diferencia entre correcciones se debe solo al umbral.

Ver las tres lecturas
# Los mismos 52 p-valores, leidos con tres umbrales distintos
p = sorted(p_por_provincia)                    # de menor a mayor
alfa = 0.05

sin_corregir = sum(1 for x in p if x < alfa)   # cada test por su cuenta
bonferroni   = sum(1 for x in p if x < alfa / len(p))

bh = 0                                          # Benjamini-Hochberg
for i, x in enumerate(p, 1):
    if x <= i / len(p) * alfa:
        bh = i                                  # el ultimo que pasa arrastra a los anteriores

Fuente: inferencia.json, campo f11_comparaciones_multiples. El caso del mes ganador resuelve el mismo problema por otra vía: un test de permutación sobre el máximo.