Интуитивное объяснение, почему процедура FDR Бенджамини-Хохберга работает?

14

Есть ли простой способ объяснить, почему процедура Бенджамини и Хохберга (1995) фактически контролирует частоту ложного обнаружения (FDR)? Эта процедура настолько элегантна и компактна, и все же доказательство того, почему она работает в условиях независимости (см. В приложении к статье 1995 года ), не очень доступно.

Trisoloriansunscreen
источник
4
на мой взгляд, приведенное здесь доказательство управления FDR более интуитивно понятно (обратите внимание, что вы ищете доказательство теоремы 2): citeseerx.ist.psu.edu/viewdoc/… Там аргумент был основан на том, что мы можно использовать дополнительную теорему об остановке.
user795305
3
На YouTube есть хорошая лекция Бенджамини о проблеме множественных сравнений, а также истории и логическом развитии методов корректировки, используемых для ее решения.
Алексис
Рамдас и соавт. (2017) - очень хорошая недавняя статья, которая объединяет и обобщает многие методы множественного тестирования, и их предложение 1 (с) подразумевает теорему 1 в Benjamini & Hochberg (1995). Доказательство просто применяет лемму 1 (c), чтобы ограничить ожидание FDP, и сама эта лемма только что доказана очень базовым многовариантным исчислением в их приложении.
daniel.s
2
Вот еще одно интуитивное объяснение, которое я нашел на канале StatQuest на YouTube: youtube.com/watch?v=K8LQSvtjcEo
RobertF

Ответы:

2

Вот некоторый Rкод для создания картинки. Он покажет 15 смоделированных p-значений, нанесенных на график в зависимости от их порядка. Таким образом, они образуют шаблон восходящей точки. Точки под красными / фиолетовыми линиями представляют значимые тесты на уровне 0,1 или 0,2. FDR - это количество черных точек под линией, деленное на общее количество точек под линией.

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

Я надеюсь, что это может дать некоторое представление о форме распределения упорядоченных p-значений. То, что линии правильные, а не, например, какая-то притча в форме кривой, имеет отношение к форме распределения порядка. Это должно быть рассчитано явно. На самом деле, линия - это просто консервативное решение.

Хорст Грюнбуш
источник
1
Не могли бы вы добавить set.seed(<some number>)и опубликовать полученную цифру для людей, которые не читают R?
gung - Восстановить Монику
Ни одна из точек не опускается ниже линии, когда я запускаю этот код ...
winni2k