Код Senior Множественные проверки обновлено

Процедура Бенджамини-Хохберга на Python

Условие

Напишите bh_reject(pvals, q): какие гипотезы отвергает процедура Бенджамини-Хохберга на уровне FDR q. Найдите наибольшее k (с единицы), для которого k-й по возрастанию p-value ≤ k / m * q (сравнивайте с допуском 1e-12), и отвергните k наименьших. Верните список bool в исходном порядке.

Примеры

bh_reject([0.001, 0.012, 0.03, 0.04, 0.2], 0.05) // [true, true, true, true, false]
bh_reject([0.2, 0.3], 0.05) // [false, false]
bh_reject([0.04, 0.01, 0.03], 0.05) // [true, true, true]

Как подойти

Подсказки: 2
  1. Ищите максимальное k, а не первое непрошедшее.
  2. Отвергаются k наименьших p-value.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.