TGViewer
Продуктовый взгляд | Аналитика данных Продуктовый взгляд | Аналитика данных @prodanalysis · 2.31K subscribers
Post #208 291
Как получить значимый A/B-тест из воздуха? 🥸

Товарищи, сегодня разберём одну из неприятных ошибок в A/B-тестировании, на которой можно легко завалиться даже с хорошим знанием матстата.

Представим, что мы тестируем новую рекомендательную систему.

В эксперименте:

• 10 000 пользователей в каждой группе
• Каждый пользователь совершил по 10 сессий
• CR в контроле = 10%
• CR в тесте = 10,3%

Аналитик берёт все 100 000 сессий в каждой группе, запускает z-test для долей и получает p-value ≈ 0,026.

Можно выкатывать?

Не торопимся)))

Проблема в том, что рандомизация происходила на уровне пользователей, а тест мы провели на уровне сессий.

Сессии одного пользователя зависимы. Если человек склонен покупать, он с большей вероятностью совершит покупку и в следующей сессии.

Получается, что наши 100 000 наблюдений не являются независимыми.

Это называется псевдорепликацией (pseudoreplication).

➡️Как оценить масштаб проблемы?

Введём intraclass correlation coefficient (ICC), который показывает корреляцию между наблюдениями внутри одного кластера.

Для кластеров одинакового размера поправка на дисперсию приближённо равна:

DE = 1 + (m − 1) × ICC

Где m — число наблюдений на пользователя.

Допустим, ICC = 0,2.

Тогда:

DE = 1 + 9 × 0,2 = 2,8

То есть дисперсия оценки примерно в 2,8 раза больше, чем предполагалось при независимости сессий.

А эффективный размер выборки:

n_eff ≈ 100 000 / 2,8 ≈ 35 714

Что будет с нашим p-value?

После учёта внутрипользовательской корреляции стандартная ошибка увеличится примерно в √2,8 раза.

И вместо p ≈ 0,026 мы получим уже около p ≈ 0,18.

Поздравляю, статистическая значимость исчезла 🙂

➡️Как правильно?

Если рандомизация идёт по пользователям, нужно учитывать зависимость наблюдений внутри пользователя.

Например:

• Агрегировать метрику до уровня пользователя и применять тест к пользовательским наблюдениям
• Использовать cluster bootstrap с ресемплированием пользователей
• Применять cluster-robust standard errors

Но есть нюанс: средняя конверсия по пользователям и общая конверсия по сессиям не всегда оценивают один и тот же эффект. При разном количестве сессий на пользователя это нужно учитывать отдельно.

Мораль: 200 000 строк в датасете ещё не означают 200 000 независимых наблюдений.

И перед выбором статистического критерия стоит проверить не только распределение метрики, но и единицу рандомизации, зависимости в данных и то, какой именно эффект мы пытаемся оценить.

🫥🫥🫥🫥
Такие задачи могут встретиться на контестах и собеседованиях на продуктового аналитика

Чтобы уверенно их решать, приходите на наши курсы «Аналитика СТАРТ» и «Аналитика ПРО»

До конца дня на них скидка 60% 🔔
Telegram Поступашки - ШАД, Стажировки и Магистратура Самая большая и последняя распродажа карьерных курсов СТАРТ И ПРО в этом году, где тебя 100% доведут до оффера по 5 направлениям: ⏩ Аналитика ⏩ Machine Learning ⏩ Backend ⏩ Алгоритмы ⏩ AI-агенты Как выбрать уровень? ➡️ СТАРТ — если только начинаешь карьеру…
  • ❤ 2
More from @prodanalysis
  1. Oct 18, 2026Полный цикл отбора в Сбер на аналитика данных (команда саппорта) Сейчас идет набор на стаж…
  2. Oct 17, 2026Самая большая и последняя распродажа карьерных курсов СТАРТ И ПРО в этом году, где тебя 10…
  3. Oct 12, 2026Понимание продуктового и проектного управления Начнём с базы: продуктовое управление ≠ про…
  4. Oct 10, 202612 октября стартует подготовка к ШАДу 90% наших учеников, поступивших в ШАД, советуют начи…
  5. Oct 9, 2026Удачный эксперимент — повод порадоваться. Пять аналитических кейсов — повод собраться и об…
  6. Oct 3, 2026Слив технической части со стажировки в Х5 на аналитика Все вопросы для DA, DS, DE беруется…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →