La inferencia estadística es una herramienta poderosa para sacar conclusiones y hacer predicciones sobre poblaciones basadas en datos de muestra. Nos permite tomar decisiones informadas y comprender la efectividad de las diferentes opciones. Una aplicación popular de la inferencia estadística es la prueba A/B , en la que comparamos dos versiones o tratamientos para determinar cuál tiene un rendimiento superior. Sin embargo, ¿qué sucede cuando introducimos más versiones o tratamientos al experimento?
Puede parecer que la introducción de versiones adicionales en un experimento es una oportunidad para tomar mejores decisiones. Desafortunadamente , si no se maneja adecuadamente, el mayor número de hipótesis comprobables puede conducir a resultados engañosos y decisiones incorrectas . Este desafío se conoce como el problema de las comparaciones múltiples .
En este artículo, explico el concepto de prueba de hipótesis múltiples, su peligro potencial y brindo una posible solución respaldada por una simulación de Python.
Para comprender las pruebas de hipótesis múltiples, comencemos examinando los conceptos fundamentales de una prueba A/B simple que incluye dos variantes .
En una prueba A/B, comenzamos formulando dos hipótesis contrapuestas: la hipótesis nula , que representa la ausencia de diferencia entre las variantes, y la hipótesis alternativa , que sugiere la presencia de una diferencia.
Luego establecemos un nivel de significación denominado alpha
. Este umbral determina la cantidad de evidencia requerida para rechazar la hipótesis nula . Los niveles de significación comúnmente utilizados son 0,05 (5%) y 0,01 (1%), que indican la probabilidad de observar los datos si la hipótesis nula fuera cierta.
Después de ejecutar el experimento y recopilar los datos, calculamos los valores p . El valor p representa la probabilidad de obtener un resultado tan extremo o más extremo que los datos observados si la hipótesis nula fuera cierta . Si el valor p es menor que el nivel de significación alpha
, rechazamos la hipótesis nula a favor de la hipótesis alternativa.
Es importante tener en cuenta que un valor de p bajo sugiere una fuerte evidencia en contra de la hipótesis nula, lo que indica que es poco probable que los datos observados ocurran solo por casualidad. Sin embargo, esto no implica certeza. Queda una probabilidad distinta de cero de observar una diferencia entre las muestras incluso si la hipótesis nula es verdadera.
Cuando nos encontramos con una situación con múltiples hipótesis alternativas , nos referimos a ella como prueba de hipótesis múltiples . En tales casos, la complejidad aumenta ya que debemos considerar cuidadosamente el impacto potencial de realizar múltiples pruebas simultáneamente.
El escollo de la prueba de hipótesis múltiples surge cuando probamos varias hipótesis sin ajustar el nivel de significación alpha
. En tales casos, inflamos inadvertidamente la tasa de errores de "Tipo I" , lo que significa que tendemos a rechazar una hipótesis nula (encontrar la diferencia) mientras que esta hipótesis nula es de hecho verdadera (ninguna diferencia).
Cuantas más hipótesis probemos simultáneamente, mayores serán las posibilidades de encontrar un valor p más bajo que alpha
para al menos una hipótesis y concluir erróneamente una diferencia significativa.
Para ilustrar este problema, considere un escenario en el que queremos probar N
hipótesis para determinar cuál de los múltiples diseños de páginas web nuevas atrae a más clientes con alpha = 0.05
. Supongamos que sabemos que ninguno de los nuevos diseños es mejor que el predeterminado , lo que significa que la hipótesis nula se cumple para todos N
casos.
Sin embargo, para cada caso, hay un 5% de probabilidad (asumiendo que la hipótesis nula es verdadera) de cometer un error “Tipo I” o un falso positivo . En otras palabras, existe un 95% de probabilidad de no detectar correctamente un falso positivo. Teóricamente, la probabilidad de tener al menos un falso positivo entre las N
pruebas es igual a 1 - (1 - alpha)^N = 1 - 0.95^N
. Por ejemplo, cuando N = 10
, esta probabilidad es de aproximadamente 40%, significativamente mayor que el 5% inicial.
El problema se vuelve más evidente a medida que aumentamos el número de hipótesis probadas. Incluso en escenarios donde solo están involucradas unas pocas variantes y submuestras, la cantidad de comparaciones puede acumularse rápidamente. Por ejemplo, la comparación de tres diseños D1, D2 y D3 para todos los usuarios, luego por separado para los usuarios del país C1 y nuevamente para los usuarios de países distintos al C1, da como resultado un total de nueve comparaciones. Es fácil participar sin saberlo en comparaciones múltiples sin darse cuenta de la inflación subsiguiente de las tasas de error de Tipo I.
Profundicemos en un ejemplo intrigante que destaca las consecuencias de no controlar los errores de "Tipo I" al probar múltiples hipótesis.
En 2009, un grupo de investigadores realizó una resonancia magnética funcional en un salmón del Atlántico muerto y sorprendentemente descubrió actividad cerebral como si estuviera vivo. Para comprender cómo se produjo este resultado inesperado, debemos explorar la naturaleza de las exploraciones de IRMf.
Los escáneres fMRI sirven como amplias plataformas experimentales , donde se realizan numerosas pruebas en cada paciente. Los escáneres monitorean los cambios en la oxigenación de la sangre como un indicador de la actividad cerebral. Los investigadores generalmente se enfocan en regiones específicas de interés, lo que los lleva a dividir todo el volumen del cuerpo en pequeños cubos llamados vóxeles. Cada vóxel representa una hipótesis que prueba la presencia de actividad cerebral dentro de ese cubo en particular . Debido al deseo de escaneos de alta resolución, los escáneres fMRI terminan evaluando miles de hipótesis durante un solo procedimiento.
En este caso, los investigadores intencionalmente no corrigieron apropiadamente el nivel de significancia inicial alpha = 0.001
e identificaron tres vóxeles con actividad cerebral en el salmón fallecido. Sin embargo, este resultado contradice nuestro entendimiento de que el salmón está realmente muerto . Al corregir el nivel de significación, desapareció el fenómeno similar a la resurrección , lo que ilustra la importancia de abordar el problema de los errores de tipo I.
Cada vez que se prueban múltiples hipótesis dentro de un solo experimento, se vuelve crucial abordar este desafío y controlar los errores de Tipo I. Se pueden emplear varias técnicas estadísticas, como la corrección de Bonferroni , para mitigar la tasa inflada de falsos positivos asociada con las pruebas de hipótesis múltiples.
La corrección de Bonferroni es un procedimiento estadístico diseñado específicamente para abordar el desafío de las comparaciones múltiples durante la prueba de hipótesis.
Suponga que necesita probar N
hipótesis durante un experimento mientras se asegura de que la probabilidad de error de tipo I permanezca por debajo alpha
.
La idea subyacente del procedimiento es sencilla: reducir el nivel de significación requerido para rechazar la hipótesis nula para cada hipótesis alternativa . ¿Recuerda la fórmula para la probabilidad de al menos un falso positivo? En esa fórmula, tenemos alpha
, que se puede disminuir para disminuir la probabilidad general.
Entonces, para lograr una menor probabilidad de al menos un falso positivo entre múltiples hipótesis, puede comparar cada valor p no con alpha
sino con algo más pequeño. Pero, ¿qué es exactamente "algo más pequeño"?
Resulta que el uso bonferroni_alpha = alpha / N
como nivel de significancia para cada hipótesis individual asegura que la probabilidad general de error de tipo I permanezca por debajo alpha
.
Por ejemplo, si está probando 10 hipótesis ( N = 10
) y el nivel de significación deseado es del 5 % ( alpha = 0.05
), debe comparar cada valor p individual con bonferroni_alpha = alpha / N = 0.05 / 10 = 0.005
Al hacer por tanto, la probabilidad de rechazar erróneamente al menos una hipótesis nula verdadera no superará el nivel deseado de 0,05.
Esta notable técnica funciona debido a la desigualdad de Boole , que establece que la probabilidad de la unión de eventos es menor o igual a la suma de sus probabilidades individuales . Si bien existe una prueba matemática formal, las explicaciones visuales brindan una comprensión intuitiva:
Entonces, cuando cada hipótesis individual se prueba en bonferroni_alpha = alpha / N
un nivel de significación, tenemos una probabilidad bonferroni_alpha
de un falso positivo. Para N
tales pruebas la probabilidad de la unión de eventos “falsos positivos” es menor o igual a la suma de las probabilidades individuales. Lo cual, en el peor de los casos cuando en todas las N pruebas de hipótesis nulas se cumple, es igual a N * bonferroni_alpha = N * (alpha / N) = alpha
Para respaldar aún más los conceptos discutidos anteriormente, realicemos una simulación en Python . Observaremos los resultados y evaluaremos la eficacia de la corrección de Bonferroni.
Considere un escenario donde tenemos 10 hipótesis alternativas dentro de una sola prueba. Supongamos que en los 10 casos, la hipótesis nula es verdadera. Está de acuerdo en que un nivel de significancia de alpha = 0.05
es apropiado para su análisis. Sin embargo, sin ninguna corrección para el error de tipo I inflado, esperamos una probabilidad teórica de aproximadamente el 40 % de experimentar al menos un resultado falso positivo. Y tras aplicar la corrección de Bonferroni esperamos que esta probabilidad no supere el 5%.
Para un experimento específico, obtenemos al menos un falso positivo o no. Estas probabilidades solo se pueden ver en una escala de múltiples experimentos. Luego, ejecutemos la simulación de cada experimento individual 100 veces y calculemos la cantidad de experimentos con al menos un falso positivo (valor p por debajo del nivel de significancia).
Puede encontrar el archivo .ipynb
con todo el código para ejecutar esta simulación y generar gráficos en mi repositorio en GitHub - IgorKhomyanin/blog/bonferroni-and-salmon
import numpy as np import matplotlib.pyplot as plt # To replicate the results np.random.seed(20000606) # Some hyperparameters too play with N_COMPARISONS = 10 N_EXPERIMENTS = 100 # Sample p-values # As we assume that null hypothesis is true, # the p-value would be distributed uniformly sample = np.random.uniform(0, 1, size=(N_COMPARISONS, N_EXPERIMENTS)) # Probability of type I error we are ready to accept # Probabiltiy of rejecting null hypothesis when it is actually true alpha = 0.05 # Theoretical False Positive Rate # # 1. # Probability that we cocnlude a significant difference for a given comparison # is equal to alpha by definition in our setting of true null hypothesis # Then [(1 - alpha)] is the probability of not rejecting the null hypothesis # # 2. # As experiments are considered independent, the probability of not rejecting # the null hypothesis in [(1 - alpha)]^N # # 3. # Probability that at least one is a false positive is equal to # 1 - (probability from 2.) prob_at_least_one_false_positive = 1 - ((1 - alpha) ** N_COMPARISONS) # Observed False Positive Rate # We conclude that experiment is a false positive when p-value is less than alpha false_positives_cnt = np.sum(np.sum(sample <= alpha, axis=0) > 0) false_positives_share = false_positives_cnt / N_EXPERIMENTS # Bonferroni correction bonferroni_alpha = alpha / N_COMPARISONS bonferroni_false_positive_comparisons_cnt = np.sum(np.sum(sample <= bonferroni_alpha, axis=0) > 0) bonferroni_false_positive_comparisons_share = bonferroni_false_positive_comparisons_cnt / N_EXPERIMENTS print(f'Theoretical False Positive Rate Without Correction: {prob_at_least_one_false_positive:0.4f}') print(f'Observed False Positive Rate Without Correction: {false_positives_share:0.4f} ({false_positives_cnt:0.0f} out of {N_EXPERIMENTS})') print(f'Observed False Positive Rate With Bonferroni Correction: {bonferroni_false_positive_comparisons_share:0.4f} ({bonferroni_false_positive_comparisons_cnt:0.0f} out of {N_EXPERIMENTS})') # Output: # Theoretical False Positive Rate Without Correction: 0.4013 # Observed False Positive Rate Without Correction: 0.4200 (42 out of 100) # Observed False Positive Rate With Bonferroni Correction: 0.0300 (3 out of 100)
Aquí hay una visualización de los resultados:
La imagen superior representa cada cuadrado como el valor p de una comparación individual (prueba de hipótesis). Cuanto más oscuro es el cuadrado, mayor es el valor p. Como sabemos que la hipótesis nula se cumple en todos los casos, cualquier resultado significativo sería un falso positivo.
Cuando el valor p es inferior al nivel de significancia (indicado por cuadrados casi blancos), rechazamos la hipótesis nula y obtenemos un resultado falso positivo. El gráfico central representa los experimentos sin corrección, mientras que el gráfico inferior representa los experimentos con la corrección de Bonferroni. Los experimentos con al menos un falso positivo están coloreados en rojo.
Claramente, la corrección funcionó de manera efectiva. Sin corrección, observamos 42 experimentos de 100 con al menos un falso positivo, lo que se alinea estrechamente con la probabilidad teórica del ~40 %. Sin embargo, con la corrección de Bonferroni, solo tenemos 3 experimentos de 100 con al menos un falso positivo, manteniéndose muy por debajo del umbral deseado del 5%.
A través de esta simulación, podemos observar visualmente el impacto de la corrección de Bonferroni en la mitigación de la ocurrencia de falsos positivos , validando aún más su utilidad en las pruebas de hipótesis múltiples.
En este artículo, expliqué el concepto de prueba de hipótesis múltiples y destaqué su peligro potencial. Al probar múltiples hipótesis, como realizar múltiples comparaciones durante una prueba A/B, aumenta la probabilidad de observar un evento poco frecuente de "Falso positivo". Esta mayor probabilidad puede conducir a conclusiones erróneas sobre efectos significativos que pueden haber ocurrido por casualidad si no se abordaron adecuadamente.
Una posible solución a este problema es la corrección de Bonferroni , que ajusta los niveles de significancia para cada hipótesis individual. Al aprovechar la desigualdad de Boole, esta corrección ayuda a controlar el nivel de significación general en el umbral deseado, lo que reduce el riesgo de falsos positivos.
Sin embargo, es importante reconocer que cada solución tiene un costo. Cuando se utiliza la corrección de Bonferroni, el nivel de significación requerido disminuye, lo que puede afectar el poder del experimento. Esto significa que puede ser necesario un tamaño de muestra más grande o efectos más fuertes para detectar las mismas diferencias. Los investigadores deben considerar cuidadosamente esta compensación al decidir implementar la corrección de Bonferroni u otros métodos de corrección.
Si tiene alguna pregunta o comentario con respecto al contenido tratado en este artículo, no dude en compartirlo. Participar en una mayor discusión y exploración de las técnicas estadísticas es esencial para una mejor comprensión y aplicación en la práctica.