paint-brush
Geschichten vom untoten Lachs: Erforschung der Bonferroni-Korrektur beim Testen mehrerer Hypothesenvon@igorkhomyanin
2,134 Lesungen
2,134 Lesungen

Geschichten vom untoten Lachs: Erforschung der Bonferroni-Korrektur beim Testen mehrerer Hypothesen

von Igor Khomyanin10m2023/05/24
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

In diesem Artikel wird das Problem erläutert, mehrere Hypothesen ohne entsprechende Anpassungen zu testen. Es führt die Bonferroni-Korrektur als Lösung zur Kontrolle falsch positiver Ergebnisse ein. Die Simulation zeigt die Wirksamkeit der Korrektur. Das Verstehen und Anwenden von Korrekturen beim Testen mehrerer Hypothesen ist für eine genaue Datenanalyse und Entscheidungsfindung von entscheidender Bedeutung.
featured image - Geschichten vom untoten Lachs: Erforschung der Bonferroni-Korrektur beim Testen mehrerer Hypothesen
Igor Khomyanin HackerNoon profile picture
0-item


Statistische Inferenz ist ein leistungsstarkes Werkzeug, um auf der Grundlage von Stichprobendaten Schlussfolgerungen zu ziehen und Vorhersagen über Populationen zu treffen. Es ermöglicht uns, fundierte Entscheidungen zu treffen und die Wirksamkeit verschiedener Optionen zu verstehen. Eine beliebte Anwendung statistischer Schlussfolgerungen sind A/B-Tests , bei denen wir zwei Versionen oder Behandlungen vergleichen, um die bessere Leistung zu ermitteln. Was passiert jedoch, wenn wir dem Experiment weitere Versionen oder Behandlungen hinzufügen?


Es mag den Anschein haben, dass die Einführung zusätzlicher Versionen in einem Experiment eine Chance für noch bessere Entscheidungen bietet. Leider kann die erhöhte Anzahl überprüfbarer Hypothesen bei unsachgemäßer Handhabung zu irreführenden Ergebnissen und falschen Entscheidungen führen . Diese Herausforderung wird als Mehrfachvergleichsproblem bezeichnet.


In diesem Artikel erkläre ich das Konzept des Testens mehrerer Hypothesen, seine potenziellen Fallstricke und gebe eine mögliche Lösung an, die durch eine Python-Simulation unterstützt wird.


Was ist das Testen mehrerer Hypothesen?

Um das Testen mehrerer Hypothesen zu verstehen, untersuchen wir zunächst die grundlegenden Konzepte eines einfachen A/B-Tests mit zwei Varianten .


Bei einem A/B-Test formulieren wir zunächst zwei konkurrierende Hypothesen: die Nullhypothese , die das Fehlen eines Unterschieds zwischen den Varianten darstellt, und die Alternativhypothese , die das Vorhandensein eines Unterschieds nahelegt.


Dann legen wir ein Signifikanzniveau fest, das als alpha bezeichnet wird. Dieser Schwellenwert bestimmt die Menge an Beweisen, die erforderlich sind, um die Nullhypothese abzulehnen . Üblicherweise werden Signifikanzniveaus von 0,05 (5 %) und 0,01 (1 %) verwendet, die die Wahrscheinlichkeit der Beobachtung der Daten angeben, wenn die Nullhypothese wahr wäre.


Nachdem wir das Experiment durchgeführt und die Daten gesammelt haben, berechnen wir p-Werte . Der p-Wert stellt die Wahrscheinlichkeit dar, ein Ergebnis zu erhalten, das genauso extrem oder noch extremer ist als die beobachteten Daten, wenn die Nullhypothese wahr wäre . Wenn der p-Wert kleiner als das Signifikanzniveau alpha ist, lehnen wir die Nullhypothese zugunsten der Alternativhypothese ab.


Es ist wichtig zu beachten, dass ein niedriger p-Wert auf starke Beweise gegen die Nullhypothese hindeutet, was darauf hindeutet, dass die beobachteten Daten wahrscheinlich nicht allein durch Zufall entstanden sind. Dies bedeutet jedoch keine Gewissheit. Auch wenn die Nullhypothese wahr ist, bleibt die Wahrscheinlichkeit, einen Unterschied zwischen den Stichproben zu beobachten, ungleich Null.


Wenn wir auf eine Situation mit mehreren Alternativhypothesen stoßen, bezeichnen wir dies als Testen mehrerer Hypothesen . In solchen Fällen erhöht sich die Komplexität, da wir die möglichen Auswirkungen der gleichzeitigen Durchführung mehrerer Tests sorgfältig abwägen müssen.


Fallstricke beim Testen mehrerer Hypothesen

Die Gefahr beim Testen mehrerer Hypothesen entsteht, wenn wir mehrere Hypothesen testen, ohne das Signifikanzniveau alpha anzupassen. In solchen Fällen erhöhen wir unbeabsichtigt die Fehlerquote vom Typ I , was bedeutet, dass wir dazu neigen, eine Nullhypothese abzulehnen (den Unterschied zu finden) , obwohl diese Nullhypothese tatsächlich wahr ist (überhaupt keinen Unterschied).


Je mehr Hypothesen wir gleichzeitig testen, desto höher ist die Wahrscheinlichkeit, dass wir für mindestens eine Hypothese einen p-Wert unter alpha finden und fälschlicherweise auf einen signifikanten Unterschied schließen.


Um dieses Problem zu veranschaulichen, stellen wir uns ein Szenario vor, in dem wir N Hypothesen testen möchten, um zu bestimmen, welches von mehreren neuen Webseitendesigns mehr Kunden mit dem gewünschten alpha = 0.05 anzieht. Nehmen wir an, wir wissen, dass keines der neuen Designs besser ist als das Standarddesign , was bedeutet, dass die Nullhypothese für alle N Fälle gilt.


Allerdings besteht in jedem Fall eine Wahrscheinlichkeit von 5 % (vorausgesetzt, die Nullhypothese ist wahr), dass ein Fehler „Typ I“ oder ein falsch positives Ergebnis vorliegt. Mit anderen Worten: Es besteht eine Wahrscheinlichkeit von 95 %, dass ein falsch positives Ergebnis korrekt nicht erkannt wird. Theoretisch beträgt die Wahrscheinlichkeit, dass bei den N Tests mindestens ein falsch positives Ergebnis vorliegt 1 - (1 - alpha)^N = 1 - 0.95^N . Wenn beispielsweise N = 10 ist, beträgt diese Wahrscheinlichkeit etwa 40 % und ist damit deutlich höher als die anfänglichen 5 %.



Was passiert, wenn Sie die Anzahl überprüfbarer Hypothesen weiter erhöhen?



Das Problem wird umso deutlicher, je mehr Hypothesen getestet werden. Selbst in Szenarien, in denen nur wenige Varianten und Teilstichproben beteiligt sind, kann sich die Anzahl der Vergleiche schnell anhäufen. Vergleicht man beispielsweise drei Designs D1, D2 und D3 für alle Benutzer, dann separat für Benutzer im Land C1 und erneut für Benutzer in anderen Ländern als C1, ergeben sich insgesamt neun Vergleiche. Es ist leicht, sich unabsichtlich auf mehrere Vergleiche einzulassen, ohne sich der daraus resultierenden Erhöhung der Typ-I-Fehlerquoten bewusst zu sein.


Die Auferstehung eines Lachses mithilfe mehrerer Hypothesentests

Jedes orangefarbene Quadrat ist ein Voxel mit Gehirnaktivität! In einem toten Lachs!



Schauen wir uns ein faszinierendes Beispiel an, das die Folgen verdeutlicht, wenn Fehler vom Typ I beim Testen mehrerer Hypothesen nicht kontrolliert werden.


Im Jahr 2009 führte eine Forschergruppe einen fMRT-Scan an einem toten Atlantischen Lachs durch und entdeckte erstaunlicherweise eine Gehirnaktivität, als ob er lebendig wäre! Um zu verstehen, wie es zu diesem unerwarteten Ergebnis kam, müssen wir die Natur von fMRT-Scans untersuchen.


fMRT-Scanner dienen als umfangreiche Versuchsplattformen , auf denen bei jedem Patienten zahlreiche Tests durchgeführt werden. Die Scanner überwachen Veränderungen der Blutsauerstoffversorgung als Indikator für die Gehirnaktivität. Forscher konzentrieren sich typischerweise auf bestimmte Regionen von Interesse, was dazu führt, dass sie das gesamte Körpervolumen in kleine Würfel, sogenannte Voxel, unterteilen. Jedes Voxel stellt eine Hypothese dar, die das Vorhandensein von Gehirnaktivität in diesem bestimmten Würfel testet . Aufgrund des Wunsches nach hochauflösenden Scans werten fMRT-Scanner in einem einzigen Eingriff Tausende von Hypothesen aus.


In diesem Fall korrigierten die Forscher absichtlich das anfängliche Signifikanzniveau alpha = 0.001 nicht angemessen und identifizierten drei Voxel mit Gehirnaktivität im verstorbenen Lachs. Dieses Ergebnis widerspricht jedoch unserem Verständnis, dass der Lachs tatsächlich verstorben ist . Nach der Korrektur des Signifikanzniveaus verschwand das auferstehungsähnliche Phänomen , was die Bedeutung der Behandlung des Problems von Typ-I-Fehlern verdeutlicht.


Immer wenn mehrere Hypothesen in einem einzigen Experiment getestet werden, ist es von entscheidender Bedeutung, diese Herausforderung anzugehen und Fehler vom Typ I zu kontrollieren. Verschiedene statistische Techniken wie die Bonferroni-Korrektur können eingesetzt werden, um die überhöhte Falsch-Positiv-Rate im Zusammenhang mit dem Testen mehrerer Hypothesen zu verringern.


Bonferroni-Korrektur

Die Bonferroni-Korrektur ist ein statistisches Verfahren, das speziell für die Bewältigung der Herausforderung mehrerer Vergleiche beim Testen von Hypothesen entwickelt wurde.

Theorie

Angenommen, Sie müssen während eines Experiments N Hypothesen testen und dabei sicherstellen, dass die Wahrscheinlichkeit eines Fehlers vom Typ I unter alpha bleibt.


Die zugrunde liegende Idee des Verfahrens ist einfach: Reduzieren Sie das Signifikanzniveau, das zum Zurückweisen der Nullhypothese für jede Alternativhypothese erforderlich ist . Erinnern Sie sich an die Formel für die Wahrscheinlichkeit von mindestens einem falschen Positivergebnis? In dieser Formel haben wir alpha , das verringert werden kann, um die Gesamtwahrscheinlichkeit zu verringern.


Um also eine geringere Wahrscheinlichkeit für mindestens ein falsch positives Ergebnis unter mehreren Hypothesen zu erreichen, können Sie jeden p-Wert nicht mit alpha , sondern mit einem kleineren Wert vergleichen. Aber was genau ist „etwas Kleineres“?


Es stellt sich heraus, dass die Verwendung bonferroni_alpha = alpha / N als Signifikanzniveau für jede einzelne Hypothese sicherstellt, dass die Gesamtwahrscheinlichkeit eines Fehlers vom Typ I unter alpha bleibt.


Wenn Sie beispielsweise 10 Hypothesen testen ( N = 10 ) und das gewünschte Signifikanzniveau 5 % ( alpha = 0.05 ) beträgt, sollten Sie jeden einzelnen p-Wert mit bonferroni_alpha = alpha / N = 0.05 / 10 = 0.005 vergleichen Daher wird die Wahrscheinlichkeit, mindestens eine echte Nullhypothese fälschlicherweise abzulehnen, den gewünschten Wert von 0,05 nicht überschreiten.


Nach der Bonferroni-Korrektur ist die Wahrscheinlichkeit genau gleich Alpha, wenn in allen Tests die Nullhypothese gilt



Diese bemerkenswerte Technik funktioniert aufgrund der Booleschen Ungleichung , die besagt, dass die Wahrscheinlichkeit der Vereinigung von Ereignissen kleiner oder gleich der Summe ihrer Einzelwahrscheinlichkeiten ist . Während es einen formalen mathematischen Beweis gibt, sorgen visuelle Erklärungen für ein intuitives Verständnis:


Meine Kritzeleien :)


Wenn also jede einzelne Hypothese auf dem Signifikanzniveau bonferroni_alpha = alpha / N getestet wird, haben wir eine bonferroni_alpha Wahrscheinlichkeit für ein falsch positives Ergebnis. Für N solcher Tests ist die Wahrscheinlichkeit der Vereinigung „falsch positiver“ Ereignisse kleiner oder gleich der Summe der Einzelwahrscheinlichkeiten. Was im schlimmsten Fall, wenn in allen N Tests die Nullhypothese gilt, gleich N * bonferroni_alpha = N * (alpha / N) = alpha ist


Üben

Um die zuvor besprochenen Konzepte weiter zu unterstützen, führen wir eine Simulation in Python durch. Wir werden die Ergebnisse beobachten und die Wirksamkeit der Bonferroni-Korrektur beurteilen.


Stellen Sie sich ein Szenario vor, in dem wir in einem einzigen Test 10 Alternativhypothesen haben. Nehmen wir an, dass in allen 10 Fällen die Nullhypothese wahr ist. Sie stimmen zu, dass ein Signifikanzniveau von alpha = 0.05 für Ihre Analyse angemessen ist. Ohne jegliche Korrektur des überhöhten Typ-I-Fehlers erwarten wir jedoch eine theoretische Wahrscheinlichkeit von etwa 40 %, dass es mindestens ein falsch positives Ergebnis gibt. Und nach Anwendung der Bonferroni-Korrektur erwarten wir, dass diese Wahrscheinlichkeit 5 % nicht überschreitet.


Für ein bestimmtes Experiment erhalten wir entweder mindestens ein falsch positives Ergebnis oder nicht. Diese Wahrscheinlichkeiten können nur auf einer Skala mehrerer Experimente gesehen werden. Dann lassen Sie uns die Simulation jedes einzelnen Experiments 100 Mal durchführen und die Anzahl der Experimente mit mindestens einem False Positive (p-Wert unter dem Signifikanzniveau) berechnen!


Sie finden die .ipynb Datei mit dem gesamten Code zum Ausführen dieser Simulation und zum Generieren von Diagrammen in meinem Repository auf 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)


Hier ist eine Visualisierung der Ergebnisse:


Den Code für dieses Diagramm finden Sie in meinem GitHub-Repo



Das obere Bild stellt jedes Quadrat als p-Wert eines einzelnen Vergleichs (Hypothesentest) dar. Je dunkler das Quadrat, desto höher ist der p-Wert. Da wir wissen, dass die Nullhypothese in allen Fällen gilt, wäre jedes signifikante Ergebnis ein falsch positives Ergebnis.


Wenn der p-Wert unter dem Signifikanzniveau liegt (angezeigt durch fast weiße Quadrate), lehnen wir die Nullhypothese ab und erhalten ein falsch positives Ergebnis. Die mittlere Grafik stellt die Experimente ohne Korrektur dar, während die untere Grafik die Experimente mit der Bonferroni-Korrektur darstellt. Die Experimente mit mindestens einem falsch positiven Ergebnis sind rot eingefärbt.


Offensichtlich hat die Korrektur effektiv funktioniert. Ohne Korrektur beobachten wir 42 von 100 Experimenten mit mindestens einem falsch positiven Ergebnis, was eng mit der theoretischen Wahrscheinlichkeit von ~40 % übereinstimmt. Mit der Bonferroni-Korrektur haben wir jedoch nur 3 von 100 Experimenten mit mindestens einem falsch positiven Ergebnis und bleiben damit deutlich unter der gewünschten 5 %-Schwelle.


Durch diese Simulation können wir visuell beobachten, wie sich die Bonferroni-Korrektur auf die Verringerung des Auftretens falsch positiver Ergebnisse auswirkt , was ihre Nützlichkeit beim Testen mehrerer Hypothesen weiter bestätigt.


Abschluss

In diesem Artikel habe ich das Konzept des Testens mehrerer Hypothesen erläutert und seine potenzielle Gefahr hervorgehoben. Beim Testen mehrerer Hypothesen, beispielsweise bei der Durchführung mehrerer Vergleiche während eines A/B-Tests, steigt die Wahrscheinlichkeit, das seltene Ereignis „Falsch positiv“ zu beobachten. Diese erhöhte Wahrscheinlichkeit kann zu falschen Schlussfolgerungen über erhebliche Auswirkungen führen, die möglicherweise zufällig eingetreten sind, wenn nicht angemessen reagiert wird.


Eine mögliche Lösung für dieses Problem ist die Bonferroni-Korrektur , die die Signifikanzniveaus für jede einzelne Hypothese anpasst. Durch die Ausnutzung der Booleschen Ungleichung trägt diese Korrektur dazu bei, das Gesamtsignifikanzniveau auf den gewünschten Schwellenwert zu kontrollieren und so das Risiko falsch positiver Ergebnisse zu verringern.


Es ist jedoch wichtig zu erkennen, dass jede Lösung ihren Preis hat. Bei Verwendung der Bonferroni-Korrektur verringert sich das erforderliche Signifikanzniveau, was sich auf die Aussagekraft des Experiments auswirken kann. Dies bedeutet, dass möglicherweise eine größere Stichprobe oder stärkere Effekte erforderlich sind, um die gleichen Unterschiede festzustellen. Forscher müssen diesen Kompromiss sorgfältig abwägen, wenn sie sich für die Implementierung der Bonferroni-Korrektur oder anderer Korrekturmethoden entscheiden.


Wenn Sie Fragen oder Kommentare zu den in diesem Artikel behandelten Inhalten haben, zögern Sie bitte nicht, diese mitzuteilen. Die weitere Diskussion und Erforschung statistischer Techniken ist für ein besseres Verständnis und eine bessere Anwendung in der Praxis unerlässlich.


Verweise