Una spiegazione intuitiva del perché la procedura FDR Benjamini-Hochberg funziona?


14

C'è un modo semplice per spiegare perché la procedura di Benjamini e Hochberg (1995) controlla effettivamente il tasso di scoperta falsa (FDR)? Questa procedura è così elegante e compatta, eppure la prova del perché funziona in modo indipendente (che appare nell'appendice del loro documento del 1995 ) non è molto accessibile.


4
a mio avviso, la prova del controllo FDR presentata qui è più intuitiva (nota che stai cercando la prova del teorema 2): citeseerx.ist.psu.edu/viewdoc/… Ecco, l'argomento si basava solo sul notare che noi può usare il teorema di arresto opzionale.
user795305

3
C'è una buona lezione di Benjamini su YouTube sul problema dei confronti multipli e la storia e lo sviluppo logico dei metodi di regolazione utilizzati per risolverlo.
Alexis,

Ramdas et al. (2017) è un documento recente molto bello che unifica e generalizza molti metodi di prova multipli, e la loro Proposta 1 (c) implica il Teorema 1 in Benjamini e Hochberg (1995). La dimostrazione applica semplicemente il Lemma 1 (c) per limitare le aspettative del periodo di servizio di volo, e questo Lemma stesso è stato appena dimostrato da un calcolo multivariato di base nella loro appendice.
daniel.s,

2
Ecco un'altra spiegazione intuitiva che ho trovato sul canale di StatQuest su YouTube: youtube.com/watch?v=K8LQSvtjcEo
RobertF

Risposte:


2

Ecco qualche Rcodice per generare un'immagine. Mostrerà 15 valori p simulati tracciati rispetto al loro ordine. Quindi formano un modello di punto crescente. I punti sotto le linee rosso / viola rappresentano test significativi a livello 0,1 o 0,2. Il FDR è il numero di punti neri sotto la linea diviso per il numero totale di punti sotto la linea.

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")

Spero che ciò possa dare un'idea della forma che ha la distribuzione dei valori p ordinati. Il fatto che le linee siano corrette e non ad esempio una curva a forma di parabola, ha a che fare con la forma delle distribuzioni dell'ordine. Questo deve essere calcolato esplicitamente. In effetti, la linea è solo una soluzione conservativa.


1
Ti dispiacerebbe aggiungere set.seed(<some number>)e pubblicare la figura risultante per le persone che non leggono R?
gung - Ripristina Monica

Nessuno dei punti scende al di sotto della linea quando
eseguo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.