Разоблачить ложную значимость от peeking и множественных сравнений

hard A/B-тесты product

Условие задания

**Контекст.** Продуктовый менеджер прибегает с результатом: за 3 дня A/B-теста нового онбординга метрика D7-retention в `treatment` показала p-value = 0.04, он хочет катить фичу на всех. Из беседы выясняются два тревожных факта:

1. Он **подглядывал** в дашборд каждый день и остановил тест в первый день, когда p-value упал ниже 0.05 (peeking / optional stopping).
2. Помимо retention он параллельно смотрел ещё **7 метрик** (activation, DAU, время в приложении, число сессий, конверсия в платёж, churn, NPS) и retention оказалась единственной значимой.

**Дано.** Таблица `metrics` с наблюдаемыми p-value по 8 метрикам (одна дневная выборка на момент остановки):

| metric | p_value |
|---|---|
| d7_retention | 0.04 |
| activation | 0.21 |
| dau | 0.63 |
| session_time | 0.09 |
| sessions_count | 0.47 |
| conversion_pay | 0.30 |
| churn | 0.55 |
| nps | 0.78 |

Плюс есть дневной ряд p-value для retention: 0.30, 0.12, 0.04 (день 1, 2, 3).

**Задание.**
1. Объясните, почему peeking раздувает вероятность ложноположительного результата (inflated Type I error), и что делать вместо остановки на первом "успехе".
2. Скорректируйте 8 p-value на множественные сравнения двумя методами: Bonferroni и Benjamini-Hochberg (FDR). Что остаётся значимым при alpha = 0.05?
3. Дайте методически корректную рекомендацию: катить фичу или нет и почему.

**Формат ответа.** Таблица original vs corrected p-value для обоих методов, список значимых метрик после коррекции, вывод по peeking и итоговая рекомендация.

Пример данных

Структура для ориентира — реальные значения из эталонного решения.

metrics = pd.DataFrame({
    'metric': ['d7_retention','activation','dau','session_time',
               'sessions_count','conversion_pay','churn','nps'],
    'p_value': [0.04, 0.21, 0.63, 0.09, 0.47, 0.30, 0.55, 0.78],
})

Темы

A/B тест peeking множественные сравнения FDR Bonferroni sequential testing

Подсказки

Все тестовые задания →

Частые вопросы

Какой уровень знаний нужен для задачи "Разоблачить ложную значимость от peeking и множественных сравнений"?

Это задание для уровня hard. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.

На каких собеседованиях встречается такая задача?

Подобные задания в категории «A/B-тесты» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: A/B тест, peeking, множественные сравнения, FDR, Bonferroni.

Сколько времени даётся на решение?

На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.

Где ещё потренироваться по теме «A/B-тесты»?

На zasqlpython.ru есть другие задания в категории «A/B-тесты», продуктовые кейсы, справочник метрик, AI мок-собеседование с разбором ваших ответов.

← Все задания