¿Una explicación intuitiva de por qué funciona el procedimiento Benjamini-Hochberg FDR?

14

¿Existe una manera simple de explicar por qué el procedimiento de Benjamini y Hochberg (1995) realmente controla la tasa de descubrimiento falso (FDR)? Este procedimiento es tan elegante y compacto y, sin embargo, la prueba de por qué funciona bajo independencia (que aparece en el apéndice de su artículo de 1995 ) no es muy accesible.

Trisoloriansunscreen
fuente
44
en mi opinión, la prueba del control FDR presentada aquí es más intuitiva (tenga en cuenta que está buscando la prueba del teorema 2): citeseerx.ist.psu.edu/viewdoc/… Ahí, el argumento simplemente se basó en darse cuenta de que puede usar el teorema de detención opcional.
user795305
3
Hay una buena conferencia de Benjamini en YouTube sobre el problema de las comparaciones múltiples, y la historia y el desarrollo lógico de los métodos de ajuste utilizados para abordarlo.
Alexis
Ramdas y col. (2017) es un artículo reciente muy agradable que unifica y generaliza muchos métodos de prueba múltiples, y su Proposición 1 (c) implica el Teorema 1 en Benjamini y Hochberg (1995). La prueba solo aplica el Lema 1 (c) para unir las expectativas del FDP, y este Lema en sí solo se prueba mediante un cálculo multivariado muy básico en su apéndice.
daniel.s
2
Aquí hay otra explicación intuitiva que encontré en el canal de StatQuest en YouTube: youtube.com/watch?v=K8LQSvtjcEo
RobertF

Respuestas:

2

Aquí hay un Rcódigo para generar una imagen. Mostrará 15 valores p simulados graficados contra su orden. Entonces forman un patrón de punto ascendente. Los puntos debajo de las líneas rojas / moradas representan pruebas significativas en el nivel 0.1 o 0.2. El FDR es el número de puntos negros debajo de la línea dividido por el número total de puntos debajo de la línea.

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

Espero que esto pueda dar una idea de la forma que tiene la distribución de los valores p ordenados. Que las líneas sean correctas y no, por ejemplo, alguna curva en forma de parábola, tiene que ver con la forma de las distribuciones de orden. Esto tiene que calcularse explícitamente. De hecho, la línea es solo una solución conservadora.

Horst Grünbusch
fuente
1
¿Te importaría agregar set.seed(<some number>)y publicar la cifra resultante para las personas que no leen R?
gung - Restablece a Monica
Ninguno de los puntos cae por debajo de la línea cuando ejecuto este código ...
winni2k