é uma ferramenta poderosa para tirar conclusões e fazer previsões sobre populações com base em dados de amostra. Isso e entender a eficácia de diferentes opções. Uma aplicação popular de inferência estatística é , em que comparamos duas versões ou tratamentos para determinar o desempenho superior. No entanto, A inferência estatística nos permite tomar decisões informadas o teste A/B o que acontece quando introduzimos mais versões ou tratamentos no experimento? Pode parecer que a introdução de versões adicionais em um experimento é uma oportunidade para decisões ainda melhores. , se não for tratado adequadamente, . Este desafio é conhecido como . Infelizmente o aumento do número de hipóteses testáveis pode levar a resultados enganosos e decisões incorretas problema de comparações múltiplas Neste artigo, explico o conceito de teste de múltiplas hipóteses, sua possível armadilha e dou uma possível solução suportada por uma simulação Python. O que é teste de hipótese múltipla? Para entender o teste de múltiplas hipóteses, vamos começar examinando os conceitos fundamentais de um . teste A/B simples envolvendo duas variantes Em um teste A/B, começamos formulando duas hipóteses concorrentes: a , que representa a ausência de diferença entre as variantes, e a , que sugere a presença de uma diferença. hipótese nula hipótese alternativa Em seguida, definimos um denotado como . Esse limite determina a . Os níveis de significância comumente usados são 0,05 (5%) e 0,01 (1%), indicando a probabilidade de nível de significância alpha quantidade de evidência necessária para rejeitar a hipótese nula observar os dados se a hipótese nula fosse verdadeira. Depois de executar o experimento e coletar os dados, calculamos . O . Se o valor-p for menor que o nível de significância , rejeitamos a hipótese nula em favor da hipótese alternativa. os valores-p valor-p representa a probabilidade de obter um resultado tão extremo quanto ou mais extremo que os dados observados se a hipótese nula fosse verdadeira alpha É importante observar que um valor de p baixo sugere forte evidência contra a hipótese nula, indicando que é improvável que os dados observados ocorram apenas por acaso. No entanto, isso não implica certeza. Resta uma probabilidade diferente de zero de observar uma diferença entre as amostras, mesmo que a hipótese nula seja verdadeira. Quando encontramos uma situação com , nos referimos a ela como . Nesses casos, a complexidade aumenta, pois precisamos considerar cuidadosamente o impacto potencial da realização de vários testes simultaneamente. múltiplas hipóteses alternativas teste de múltiplas hipóteses Armadilhas do teste de hipóteses múltiplas A armadilha do teste de múltiplas hipóteses surge quando testamos múltiplas hipóteses sem ajustar o nível de significância . Nesses casos, , o que significa que tendemos a (encontrar a diferença) (nenhuma diferença). alpha inadvertidamente aumentamos a taxa de erros "Tipo I" rejeitar uma hipótese nula enquanto essa hipótese nula é de fato verdadeira Quanto mais hipóteses testarmos simultaneamente, maiores serão as chances de encontrar um valor p menor que para hipótese e concluir erroneamente uma diferença significativa. alpha pelo menos uma Para ilustrar esse problema, considere um cenário em que desejamos testar hipóteses para determinar qual dos vários novos designs de página da Web atrai mais clientes com . Vamos supor que sabemos que , o que significa que a hipótese nula vale para todos os casos. N alpha = 0.05 nenhum dos novos projetos é melhor que o padrão N No entanto, para cada caso, há uma probabilidade de 5% (supondo que a hipótese nula seja verdadeira) de cometer um , ou um . Em outras palavras, existe uma probabilidade de 95% de não detectar corretamente um falso positivo. Teoricamente, a probabilidade de haver pelo menos um falso positivo entre os testes é igual a . Por exemplo, quando , essa probabilidade é de aproximadamente 40%, significativamente maior que os 5% iniciais. erro “Tipo I” falso positivo N 1 - (1 - alpha)^N = 1 - 0.95^N N = 10 O problema torna-se mais aparente à medida que aumentamos o número de hipóteses testadas. Mesmo em cenários em que apenas algumas variantes e subamostras estão envolvidas, o número de comparações pode se acumular rapidamente. Por exemplo, comparar três projetos D1, D2 e D3 para todos os usuários, depois separadamente para usuários no país C1 e novamente para usuários em países diferentes de C1, resulta em um total de nove comparações. É fácil envolver-se involuntariamente em comparações múltiplas sem perceber a subseqüente inflação das taxas de erro Tipo I. A ressurreição de um salmão usando testes de hipóteses múltiplas Vamos nos aprofundar em um que destaca as consequências de não controlar os erros do “Tipo I” ao testar várias hipóteses. exemplo intrigante Em 2009, Para entender como esse resultado inesperado surgiu, precisamos explorar a natureza dos exames de fMRI. um grupo de pesquisadores realizou uma ressonância magnética funcional em um salmão do Atlântico morto e surpreendentemente descobriu a atividade cerebral como se estivesse viva! , onde numerosos testes são realizados em cada paciente. Os scanners monitoram as mudanças na oxigenação do sangue como um indicador da atividade cerebral. Os pesquisadores geralmente se concentram em regiões específicas de interesse, o que os leva a dividir todo o volume do corpo em pequenos cubos chamados voxels. . Devido ao desejo de varreduras de alta resolução, Scanners fMRI servem como extensas plataformas experimentais Cada voxel representa uma hipótese que testa a presença de atividade cerebral naquele cubo em particular os scanners fMRI acabam avaliando milhares de hipóteses durante um único procedimento. Nesse caso, os pesquisadores e No entanto, esse resultado contradiz nosso entendimento de que o . , ilustrando a importância de abordar a questão dos erros do Tipo I. intencionalmente não corrigiram adequadamente o nível de significância inicial alpha = 0.001 identificaram três voxels com atividade cerebral no salmão morto. salmão está realmente morto Ao corrigir o nível de significância, o fenômeno semelhante à ressurreição desapareceu Sempre que várias hipóteses são testadas em um único experimento, torna-se crucial enfrentar esse desafio e controlar os erros do Tipo I. Várias técnicas estatísticas, como a , podem ser empregadas para mitigar a taxa inflada de falsos positivos associada a testes de múltiplas hipóteses. correção de Bonferroni correção de Bonferroni A é um procedimento estatístico projetado especificamente para enfrentar o desafio de comparações múltiplas durante o teste de hipóteses. correção de Bonferroni Teoria Suponha que você precise testar hipóteses durante um experimento enquanto garante que a probabilidade de erro Tipo I permaneça abaixo . N alpha A ideia subjacente do procedimento é direta: . Lembre-se da fórmula para a probabilidade de pelo menos um falso positivo? Nessa fórmula, temos , que pode ser diminuído para diminuir a probabilidade geral. reduza o nível de significância necessário para rejeitar a hipótese nula para cada hipótese alternativa alpha Portanto, para obter uma probabilidade menor de pelo menos um falso positivo entre várias hipóteses, você pode comparar cada valor-p não com , mas com algo menor. alpha Mas o que exatamente é "algo menor"? Acontece que usar como o nível de significância para cada hipótese individual garante que a probabilidade geral de erro Tipo I permaneça abaixo de . bonferroni_alpha = alpha / N alpha Por exemplo, se você estiver testando 10 hipóteses ( ) e o nível de significância desejado for 5% ( ), você deve comparar cada valor-p individual com Fazendo assim, a probabilidade de rejeitar erroneamente pelo menos uma hipótese nula verdadeira não excederá o nível desejado de 0,05. N = 10 alpha = 0.05 bonferroni_alpha = alpha / N = 0.05 / 10 = 0.005 Essa notável técnica funciona devido à , que afirma que . Embora exista uma prova matemática formal, as explicações visuais fornecem uma compreensão intuitiva: desigualdade de Boole a probabilidade da união dos eventos é menor ou igual à soma de suas probabilidades individuais Assim, quando cada hipótese individual está sendo testada em um nível de significância, temos uma probabilidade de um falso positivo. Para tais testes, a probabilidade da união de eventos “falsos positivos” é menor ou igual à soma das probabilidades individuais. Que, no pior cenário, quando em todos os N testes a hipótese nula é válida, é igual a bonferroni_alpha = alpha / N bonferroni_alpha N N * bonferroni_alpha = N * (alpha / N) = alpha Prática Para apoiar ainda mais os conceitos discutidos anteriormente, vamos conduzir . Observaremos os resultados e avaliaremos a eficácia da correção de Bonferroni. uma simulação em Python Considere um cenário onde temos 10 hipóteses alternativas dentro de um único teste. Vamos supor que em todos os 10 casos, a hipótese nula seja verdadeira. Você concorda que um nível de significância é apropriado para sua análise. alpha = 0.05 No entanto, sem qualquer correção para o erro tipo I inflado, esperamos uma probabilidade teórica de aproximadamente 40% de experimentar pelo menos um resultado falso positivo. E após aplicar a correção de Bonferroni esperamos que esta probabilidade não ultrapasse 5%. Para um experimento específico, obtemos pelo menos um falso positivo ou não. Essas probabilidades podem ser vistas apenas em uma escala de experimentos múltiplos. Em seguida, vamos executar a simulação de cada experimento individual 100 vezes e calcular o número de experimentos com pelo menos um falso positivo (valor p abaixo do nível de significância)! Você pode encontrar o arquivo com todo o código para executar esta simulação e gerar gráficos em meu repositório no GitHub - .ipynb 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) Aqui está uma visualização dos resultados: A imagem superior representa cada quadrado como o valor-p de uma comparação individual (teste de hipótese). Quanto mais escuro o quadrado, maior o valor-p. Como sabemos que a hipótese nula é válida em todos os casos, qualquer resultado significativo seria um falso positivo. O gráfico do meio representa os experimentos sem correção, enquanto o gráfico inferior representa os experimentos com a correção de Bonferroni. Quando o valor p é menor que o nível de significância (indicado por quadrados quase brancos), rejeitamos a hipótese nula e obtemos um resultado falso positivo. Os experimentos com pelo menos um falso positivo são coloridos em vermelho. Claramente, a correção funcionou de forma eficaz. Sem correção, observamos 42 experimentos em 100 com pelo menos um falso positivo, o que se alinha com a probabilidade teórica de aproximadamente 40%. No entanto, com a correção de Bonferroni, temos apenas 3 experimentos em 100 com pelo menos um falso positivo, ficando bem abaixo do limite de 5% desejado. , validando ainda mais sua utilidade em testes de hipóteses múltiplas. Por meio dessa simulação, podemos observar visualmente o impacto da correção de Bonferroni na mitigação da ocorrência de falsos positivos Conclusão Neste artigo, expliquei o conceito de teste de hipóteses múltiplas e destaquei seu perigo potencial. Essa probabilidade aumentada pode levar a conclusões errôneas sobre efeitos significativos que podem ter ocorrido por acaso, se não forem tratados adequadamente. Ao testar várias hipóteses, como realizar comparações múltiplas durante um teste A/B, a probabilidade de observar um evento raro de “Falso Positivo” aumenta. , que ajusta os níveis de significância para cada hipótese individual. Aproveitando a desigualdade de Boole, essa correção ajuda a controlar o nível de significância geral no limite desejado, reduzindo o risco de falsos positivos. Uma solução possível para esse problema é a correção de Bonferroni No entanto, é importante reconhecer que toda solução tem um custo. Isso significa que um tamanho de amostra maior ou efeitos mais fortes podem ser necessários para detectar as mesmas diferenças. Os pesquisadores devem considerar cuidadosamente essa compensação ao decidir implementar a correção de Bonferroni ou outros métodos de correção. Ao utilizar a correção de Bonferroni, o nível de significância necessário diminui, o que pode afetar o poder do experimento. Se você tiver dúvidas ou comentários sobre o conteúdo discutido neste artigo, não hesite em compartilhá-los. Engajar-se em mais discussão e exploração de técnicas estatísticas é essencial para uma melhor compreensão e aplicação na prática. Referências - Meu GitHub Repo com todo o código necessário para executar a simulação e gerar gráficos IgorKhomyanin/blog/bonferroni-and-salmon para gerar a foto da capa Kandinsky 2.1 Bennett, CM, MB Miller e GL Wolford. “Correlatos neurais da tomada de perspectiva interespécies no salmão do Atlântico post-mortem: um argumento para a correção de comparações múltiplas.” NeuroImagem 47 (julho 2009): S125. https://doi.org/10.1016/s1053-8119(09)71202-9 Wikipédia - Correção de Boferroni Wikipedia - Desigualdade de Boole