Сначала зафиксируйте grain данных, допущения, метрику и риск leakage, затем обсуждайте модель, инструмент или инфраструктуру.
Вопросы и ответы
9 подробных ответов
01Как устроен A/B-тест от начала до конца? Опишите ключевые этапы.
middle
Короткий ответ: A/B-тест — это рандомизированный эксперимент: пользователей случайно делят на контроль и тритмент, показывают разные версии и сравнивают одну заранее выбранную первичную метрику по фиксированному правилу решения.
Подробно:
- Гипотеза — что меняем, на какую метрику влияем и почему.
- Метрика и MDE — одна первичная метрика плюс минимально детектируемый эффект (MDE).
- Рандомизация — случайное и устойчивое разбиение на контроль/тритмент.
- Размер выборки и длительность — считаем и фиксируем до старта.
- Запуск до N — крутим до набора выборки, не подглядывая в промежуточные итоги.
- Анализ — сравниваем метрику, считаем p-значение и доверительный интервал лифта.
- Решение — выкатываем или откатываем по заранее заданному правилу.
Гипотеза → Рандомизация → Запуск до N → Анализ → Решение
│ │
контроль / тритмент выкатить ✓ / откатить ✗
⚠️ Частая ошибка: менять интерфейс по ходу теста или останавливать его в первый момент «значимости» — и то и другое ломает выводы.
02От чего зависят размер выборки и длительность A/B-теста и почему длительность фиксируют заранее?
senior
Короткий ответ: Размер выборки определяют базовая конверсия, минимально детектируемый эффект (MDE), мощность (1−β, обычно 80%) и уровень значимости α (обычно 5%): чем меньше MDE, тем больше нужно данных. Длительность фиксируют заранее, чтобы исключить подглядывание и захватить полные недельные циклы.
Подробно:
- Базовая конверсия — у редких событий дисперсия относительно выше → нужно больше выборки.
- MDE — самый сильный рычаг: выборка растёт примерно как 1/MDE².
- Мощность (1−β) — шанс заметить реальный эффект; стандарт 80%.
- α — порог ложноположительных; меньше α → больше выборка.
- Длительность — N делим на трафик в день и округляем вверх до целых недель.
# Размер выборки на группу: разница пропорций
from scipy.stats import norm
z_a, z_b = norm.ppf(0.975), norm.ppf(0.80) # α=5% (two-sided), мощность 80%
p1, p2 = 0.10, 0.11 # база 10%, MDE = +1 п.п.
var = p1*(1-p1) + p2*(1-p2)
n = (z_a + z_b)**2 * var / (p2 - p1)**2
print(round(n)) # ≈ 14 700 на группу
⚠️ Частая ошибка: не фиксировать длительность заранее и «останавливать, когда наберём значимость» — это подглядывание, раздувающее ложные срабатывания.
03Как интерпретировать результат A/B-теста: статистическая и практическая значимость, и почему незначимый результат — это не «эффекта нет»?
senior
Короткий ответ: Статистическая значимость (p < α либо доверительный интервал лифта не накрывает 0) говорит, что эффект вряд ли случаен; практическая значимость — что его размер оправдывает внедрение. Незначимый результат означает «данных не хватило, чтобы отличить эффект от нуля», а не «эффекта точно нет».
Подробно:
- Статистическая значимость — p-значение ниже α или 95% ДИ лифта не пересекает 0.
- Практическая значимость — эффект больше порога окупаемости (MDE/бизнес-смысл).
- Доверительный интервал лифта — информативнее «голого» p: показывает знак, масштаб и неопределённость.
- Незначимо ≠ нет эффекта — это либо реально нулевой эффект, либо нехватка мощности.
Лифт и его 95% ДИ (│ = ноль)
│
A) [-------│---●----] ДИ [−0.5%, +1.8%] → пересекает 0 → НЕзначимо
│
B) │ [---●---] ДИ [+0.7%, +2.1%] → не пересекает 0 → значимо
│
⚠️ Частая ошибка: объявлять «эффекта нет» по незначимому результату — корректнее сказать «не обнаружили эффекта размером ≥ MDE».
04Что такое подглядывание (peeking) и почему оно раздувает долю ложноположительных результатов? Как быть с множественными сравнениями?
senior
Короткий ответ: Подглядывание (peeking) — это многократная проверка значимости по ходу теста с остановкой, как только p < 0.05. Каждая лишняя проверка — новый шанс на случайную «победу», поэтому фактический α взлетает намного выше 5%. Множество метрик/вариантов создаёт ту же проблему множественных сравнений и требует поправки.
Подробно:
- Почему peeking опасен — при многократных взглядах вероятность хоть раз пересечь порог стремится к 100%.
- Как правильно — фиксировать N и смотреть один раз; если нужны промежуточные взгляды — sequential testing / alpha-spending.
- Множественные сравнения — k метрик при α=5% дают риск ≈ 1−0.95^k; нужна поправка Бонферрони или контроль FDR (Бенджамини–Хохберг).
| Кол-во проверок | Реальный риск ложного срабатывания (α=5%) |
|---|---|
| 1 | ~5% |
| 2 | ~8% |
| 5 | ~14% |
| 10 | ~19% |
| каждый день | → стремится к 100% |
⚠️ Частая ошибка: остановить тест в первый день, когда p случайно опустился ниже 0.05.
05Как выбрать метрики для A/B-теста: чем первичная отличается от гайтрейл- и вторичных, и чем опасно «слишком много метрик»?
middle
Короткий ответ: Одна первичная метрика решает исход теста; гайтрейл-метрики страхуют, что вы не сломали что-то важное (выручку, скорость, отток); вторичные помогают понять механику эффекта. Чем больше метрик «на победу», тем выше шанс случайной значимости, поэтому набор держат коротким.
Подробно:
- Первичная — заранее выбранная, по ней принимается решение; ровно одна.
- Гайтрейл — не должна ухудшиться; блокирует выкат даже при росте первичной.
- Вторичная — для интерпретации и гипотез, не для решения.
| Тип | Роль | Пример | Решает исход? |
|---|---|---|---|
| Первичная | критерий успеха | конверсия в покупку | да |
| Гайтрейл | защита от вреда | latency, выручка, отток, жалобы | блокирует выкат |
| Вторичная | объяснение механики | CTR, глубина сессии | нет |
⚠️ Частая ошибка: набрать десяток метрик «на победу» и объявить успех по той, что случайно загорелась — это скрытое множественное сравнение.
06Какие угрозы валидности подстерегают A/B-тест и что такое SRM?
senior
Короткий ответ: Валидность ломают перекос распределения по группам (SRM — sample ratio mismatch), эффекты новизны/первичности, сетевые эффекты (тритмент влияет на контроль) и сезонность. SRM — красный флаг сломанного эксперимента: результатам нельзя доверять, пока не найдена причина расхождения.
Подробно:
- SRM — фактический сплит значимо отличается от ожидаемого (проверяют χ²-тестом); признак бага в рандомизации, логировании или фильтрации.
- Новизна/первичность — реакция меняется со временем: новинку либо тыкают из любопытства, либо отвергают по привычке.
- Сетевые эффекты — группы не изолированы (соцсети, маркетплейсы), эффект «протекает».
- Сезонность — день недели, акции, праздники искажают короткие тесты.
| Угроза | В чём проблема | Как смягчить |
|---|---|---|
| SRM | сплит ≠ ожидаемому | χ²-тест на старте; не анализировать до исправления |
| Новизна/первичность | эффект дрейфует во времени | дольше крутить, смотреть динамику по дням |
| Сетевые эффекты | группы влияют друг на друга | кластерная/гео-рандомизация |
| Сезонность | внешние циклы | полные недельные циклы, не обрывать рано |
⚠️ Частая ошибка: увидеть «значимый» результат и не проверить SRM — при перекосе групп сравнение изначально невалидно.
07Как правильно читать сегментированный результат A/B-теста и что такое парадокс Симпсона?
middle
Короткий ответ: Агрегированный результат может перевернуться внутри сегментов (парадокс Симпсона), когда сегменты сильно разного размера и по-разному реагируют. Но нарезка постфактум на десятки сегментов — это скрытое множественное сравнение: что-нибудь «значимое» найдётся случайно.
Подробно:
- Парадокс Симпсона — направление эффекта в каждом сегменте противоположно итогу из-за несбалансированного распределения по группам (часто следствие SRM).
- Slicing до значимости — чем больше срезов, тем выше шанс ложного открытия; сегменты для решения фиксируют заранее.
- Что делать — заранее задать ключевые сегменты, на остальное смотреть как на генерацию гипотез, а не как на вывод.
| Сегмент | Контроль | Тритмент |
|---|---|---|
| Mobile | 8% (8/100) | 9% (90/1000) |
| Desktop | 30% (300/1000) | 33% (33/100) |
| Итого | 28% (308/1100) | 11% (123/1100) |
В каждом сегменте тритмент лучше, а в сумме — хуже: группы перекошены по платформам.
⚠️ Частая ошибка: нарезать данные, пока какой-нибудь сегмент не покажет p < 0.05, и выдать это за результат.
08Что делать, когда чистый A/B-тест невозможен? Кратко о switchback, difference-in-differences и других квазиэкспериментах.
senior
Короткий ответ: Когда рандомизация по пользователям невозможна (сильные сетевые эффекты, маркетплейсы, ценовые или гео-изменения), применяют квазиэксперименты: switchback, difference-in-differences, синтетический контроль, гео-холдауты. Они дают более слабую причинность, чем RCT, и опираются на дополнительные допущения.
Подробно:
| Метод | Когда применять | Идея |
|---|---|---|
| Switchback | маркетплейсы, сетевые эффекты | переключать режим по времени/региону и сравнивать окна |
| Diff-in-diff | есть похожая контрольная группа | сравнить изменение «до→после» в тесте и в контроле |
| Синтетический контроль | один объект (город, рынок) | собрать «двойник» из взвешенных контрольных единиц |
| Гео-холдаут | реклама, бренд | отключить воздействие в части регионов |
⚠️ Частая ошибка: трактовать квазиэксперимент как полноценный RCT — нужно проверять допущения (например, параллельность трендов для diff-in-diff).
Источники
Источники и редакционная политика
Материалы RecallDeck сопоставлены с официальной документацией и открытыми публикациями компаний, когда первичный источник доступен. Мы не связаны с упомянутыми работодателями, не публикуем конфиденциальные задания и не продаём места в подборках. Формат найма может меняться — уточняйте его у рекрутера.
От чтения к воспроизведению
Отрепетируйте полный цикл интервью.
RecallDeck возвращает сложные темы по расписанию и помогает удерживать в памяти язык, SQL, архитектуру и поведенческие истории.