Интерактивная статистика

56 бесплатных интерактивных уроков: от среднего и медианы до A/B-тестов и Байеса. Двигайте графики и стройте интуицию. Без регистрации.

Модуль 5 «Проверка гипотез»

Методы снижения дисперсии

Чувствительность теста падает с разбросом данных σ. Самый дорогой способ её поднять — набрать больше пользователей. Но есть умнее: убрать из метрики часть «лишнего» разброса, не трогая сам эффект. Это методы снижения дисперсии — то, чем продуктовые команды ускоряют A/B-тесты в разы. Двигайте ползунок корреляции и смотрите, как сужается распределение метрики.

Метод:
ковариат (до) ↔ метрика, ρ = 0.70дисперсия метрики: до → последо (общая)после (уже)
Y' = Y − θ·(X − X̄), θ = Cov(X,Y)/Var(X) → Var(Y') = Var(Y)·(1−ρ²)
дисперсия −49%эквивалентно ×2.0 к объёму данныхнужно ~51% прежней выборки

CUPED: чем сильнее доэкспериментальный ковариат предсказывает метрику (выше ρ), тем больше дисперсии убирается — на (1−ρ²), — и тем чувствительнее тест при том же n.

Идея на пальцах. Часть разброса метрики предсказуема заранее. Активный пользователь и до эксперимента тратил много, неактивный — мало. Эта «врождённая» разница между людьми раздувает дисперсию метрики, но к нашему эффекту отношения не имеет. Если её вычесть, останется более «чистый» сигнал.

Что это значит
Какое решение это меняет

Мало трафика — дефолт «ждать долгий тест». CUPED и стратификация меняют уравнение: тот же вывод быстрее или меньший различимый эффект за то же время.

В крупных продуктах CUPED включён в A/B-платформу по умолчанию: как ковариат берут ту же метрику за 1–2 недели до теста. Это типично режет нужную выборку или длительность теста на 30–50% — огромная экономия времени и трафика.

Метод требует данных за доэкспериментальный период и стабильной аудитории. Для новых пользователей (у которых нет «до») он не работает — там используют другие предикторы или не применяют поправку.

Где это встречается

Netflix, Microsoft, Booking и другие публиковали, как снижение дисперсии ускоряет их эксперименты: те же выводы получают на меньшем трафике, а значит, можно прогонять больше тестов за то же время.

Тот же принцип — за пределами A/B: в любом сравнении контроль за известными факторами (ковариатами) делает оценку точнее. Это мост к регрессии, где «удержать прочее равным» — основная идея.

Определения
Снижение дисперсии
приёмы, убирающие из метрики предсказуемый разброс, чтобы повысить чувствительность теста без роста выборки.
По-простому: убираем предсказуемый шум — эффект видно быстрее.
CUPEDY' = Y − θ·(X − X̄)
вычитание из метрики части, предсказуемой ковариатом X (доэкспериментальным поведением). Дисперсия падает на ρ².
По-простому: вычитаем то, что знали о пользователе ещё до теста.
Ковариат
переменная, коррелирующая с метрикой, но не зависящая от эксперимента (берётся ДО его старта).
По-простому: переменная-подсказка, объясняющая часть шума.
СтратификацияVar_страт = Σ wₖ·σ²ₖ
сравнение внутри однородных слоёв (страна, платформа): из дисперсии уходит межслойная часть σ²_между / σ²_общая.
По-простому: сравниваем похожих с похожими, а не всех со всеми.
Когда метод врёт (допущения)

CUPED требует ковариата из ДОэкспериментального периода, коррелирующего с метрикой; для новых пользователей (у которых нет «до») он не работает. Ковариат не должен зависеть от самого эксперимента — иначе можно случайно «вычесть» эффект.

Снижение дисперсии уменьшает случайный шум, но не лечит смещение: на нерепрезентативных данных вы получите уверенно посчитанный, но всё равно смещённый результат.

Подробный разбор: математика и механизм (необязательно)

Алгоритм CUPED (по шагам). 1) Возьмите ковариат X из ДОэкспериментального периода — обычно ту же метрику за 1–2 недели до теста. 2) На всех пользователях оцените θ = Cov(X, Y) / Var(X) (это коэффициент регрессии Y на X). 3) Для каждого пользователя посчитайте скорректированную метрику Y' = Y − θ·(X − X̄), где X̄ — общее среднее ковариата. 4) Дальше проводите обычный тест (t-тест на разницу средних) уже по Y', а не по Y. 5) Дисперсия Y' меньше дисперсии Y в (1−ρ²) раз, где ρ = corr(X, Y); оценка эффекта при этом не смещается, потому что X не зависит от группы.

Алгоритм стратификации (по шагам). 1) До эксперимента выберите переменную слоёв, коррелирующую с метрикой и не зависящую от теста (страна, платформа, тип устройства, доэкспериментальная активность — непрерывный ковариат бьют на квантильные корзины). 2) Внутри КАЖДОГО слоя k посчитайте разницу средних между вариантами Δ̂ₖ и её дисперсию. 3) Соберите общий эффект как взвешенное среднее Δ̂ = Σ wₖ·Δ̂ₖ с весами wₖ = долям наблюдений в слое (пост-стратификация). 4) Дисперсия такой оценки содержит только ВНУТРИслойный разброс — межслойная часть уходит. 5) Практическая тонкость: слоёв не должно быть слишком много (иначе в каждом мало данных); переусердствовать со стратификацией так же вредно, как и игнорировать её.

Дальше →
Понравились материалы?

Эти материалы делает канал «Кусочек пиццы» — аналитика данных простыми словами: разборы реальных кейсов, метрики, карьера. Подпишитесь, чтобы не потерять.

Подписаться на «Кусочек пиццы»