Короткий ответ
При проверке нескольких гипотез одновременно вероятность получить хотя бы один ложноположительный результат растёт с числом тестов; поправка Бонферрони ужесточает порог значимости (альфа/количество тестов), а метод Бенджамини-Хохберга контролирует долю ложных открытий (FDR) менее консервативно, сохраняя больше мощности при множестве гипотез.
Как это работает подробнее
Бонферрони делит альфа на число сравнений m, контролируя вероятность хотя бы одной ложной находки (FWER) — это строгий, консервативный подход, особенно при большом m. Benjamini-Hochberg сортирует p-value по возрастанию и сравнивает каждое с порогом (i/m)×альфа, контролируя ожидаемую долю ложных находок среди всех отвергнутых гипотез, что обычно даёт больше статистической мощности при множестве тестов.
Пример кода
Пример на Python
from statsmodels.stats.multitest import multipletests
p_values = [0.001, 0.02, 0.03, 0.04, 0.2, 0.5]
reject_bonf, p_bonf, _, _ = multipletests(p_values, alpha=0.05, method='bonferroni')
reject_bh, p_bh, _, _ = multipletests(p_values, alpha=0.05, method='fdr_bh')
print(reject_bonf) # вероятно, отвергнет только самый маленький p-value
print(reject_bh) # вероятно, отвергнет больше гипотезЧто использовать на практике
- На практике. поправки нужны, когда одновременно сравнивается много метрик, много сегментов или много вариантов в одном эксперименте (multi-armed test). Выбор метода зависит от цены ошибки: если важно гарантированно не допустить ни одной ложной находки (например, при регуляторных проверках) — Бонферрони; если допустима небольшая контролируемая доля ложных находок ради большей мощности (типично для продуктовой аналитики с десятками метрик) — BH. Также полезно заранее классифицировать метрики на первичные (для которых применяется полный контроль альфа без поправок) и вторичные/исследовательские (где поправка обязательна), что снижает число требующих коррекции сравнений.
- Пример. Sanity check: число True в reject_bh должно быть больше или равно числу True в reject_bonf при одном и том же наборе p-value — это ожидаемое поведение более либерального метода.
Подводные камни
- Частые ошибки. проверять 20 метрик в одном тесте и радостно сообщать о «значимом результате» по одной из них без поправки — это почти гарантированно найдёт случайную «значимость»; применять Бонферрони к сотням гипотез и из-за чрезмерной консервативности пропускать реальные эффекты; путать FWER и FDR, как будто это одно и то же — это разные определения «ложных открытий». Ещё одна ошибка — применять поправку на множественные сравнения к показателям, которые на самом деле тесно коррелируют между собой (например, конверсия в разных шагах одной воронки), не учитывая эту зависимость в расчёте порога.