Eine intuitive Erklärung, warum das Benjamini-Hochberg-FDR-Verfahren funktioniert?


14

Gibt es eine einfache Möglichkeit zu erklären, warum das Verfahren von Benjamini und Hochberg (1995) tatsächlich die Rate falscher Entdeckungen (FDR) kontrolliert? Dieses Verfahren ist so elegant und kompakt, und dennoch ist der Beweis, warum es in der Unabhängigkeit funktioniert (siehe Anhang ihrer Arbeit von 1995 ), nicht leicht zugänglich.


4
Meiner Meinung nach ist der hier vorgestellte Beweis der FDR-Steuerung intuitiver (beachten Sie, dass Sie nach dem Beweis von Satz 2 suchen): citeseerx.ist.psu.edu/viewdoc/… Hier beruhte das Argument nur darauf, dass wir es bemerken kann den optionalen Stoppsatz verwenden.
user795305

3
Benjamini hält auf YouTube einen guten Vortrag über das Problem der Mehrfachvergleiche sowie über die Geschichte und die logische Entwicklung der Anpassungsmethoden, mit denen es angegangen wird.
Alexis

Ramdas et al. (2017) ist eine sehr schöne neue Arbeit, die viele verschiedene Testmethoden vereinheitlicht und verallgemeinert, und ihr Satz 1 (c) impliziert Satz 1 in Benjamini & Hochberg (1995). Der Beweis wendet nur Lemma 1 (c) an, um die Erwartungen der FDP zu begrenzen, und dieses Lemma selbst wird nur durch eine sehr grundlegende multivariate Rechnung in ihrem Anhang bewiesen.
Daniels

2
Hier ist eine weitere intuitive Erklärung, die ich auf StatQuests Kanal auf YouTube gefunden habe: youtube.com/watch?v=K8LQSvtjcEo
RobertF

Antworten:


2

Hier ist ein RCode, um ein Bild zu generieren. Es werden 15 simulierte p-Werte angezeigt, die gegen ihre Reihenfolge aufgetragen sind. Sie bilden also ein aufsteigendes Punktmuster. Die Punkte unter den rot / violetten Linien repräsentieren signifikante Tests bei 0,1 oder 0,2. Der FDR ist die Anzahl der schwarzen Punkte unterhalb der Linie geteilt durch die Gesamtzahl der Punkte unterhalb der Linie.

x0 <- runif(10)      #p-values of 10 true null hypotheses. They are Unif[0,1] distributed.
x1 <- rbeta(5,2,30)  # 5 false hypotheses, rather small p-values
xx <- c(x1,x0)
plot(sort(xx))
a0 <- sort(xx)
for (i in 1:length(x0)){a0[a0==x0[i]] <- NA}
points(a0,col="red")
points(c(1,15), c(1/15 * 0.1 ,0.1), type="l", col="red")
points(c(1,15), c(1/15 * 0.2 ,0.2), type="l", col="purple")

Ich hoffe, dies könnte ein Gefühl für die Form der Verteilung der geordneten p-Werte vermitteln. Dass die Linien stimmen und nicht zB eine parabelförmige Kurve, hat mit der Form der Ordnungsverteilungen zu tun. Dies muss explizit berechnet werden. In der Tat ist die Linie nur eine konservative Lösung.


1
Würde es Ihnen etwas set.seed(<some number>)ausmachen, die resultierende Zahl für Personen hinzuzufügen und zu veröffentlichen, die R nicht lesen?
gung - Wiedereinsetzung von Monica

Keiner der Punkte unterschreitet die Grenze, wenn ich diesen Code ausführe ...
winni2k
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.