🎃🎃Это место похоже на Халлоуин🎃🎃
Канал нарядился для празднования 🧛Дня всех святых👻. Вот вам по случаю страшилка на ночь.
Представьте, что вы рассчитываете необходимый размер выборки для A/B-теста. Допустим для простоты, все фичи оказывают один и тот же по величине эффект на метрику. По старой оккультной традиции вы используете эффект из прошедших успешных экспериментов в качестве MDE. Так как истинный эффект вам недоступен, вы подставляете вместо него наблюдаемый. А ещё так уж вышло, что вы не читали мой пост про ошибку типа M, как и не читали статью от AirBnB про 💀Проклятие победителя💀. И, как следствие, не знаете, что в среднем наблюдаемые стат. значимые эффекты завышают истинный эффект.
В итоге вас засасывает в вечный круговорот:
🕷Вы используете в среднем завышенный эффект в качестве MDE
🧟♂️Рассчитанный размер выборки оказывается меньше, чем нужно
🔪Реальная мощность теста становится меньше желаемых 80%
🥀Полученный наблюдаемый эффект в новом эксперименте, окажись он стат. значимым, в среднем будет завышать истинный эффект еще сильнее, чем раньше
⚰️Вы возвращаетесь к шагу с пауком и используете только что полученный эффект для нового расчета MDE
👹Ваша мощность постепенно снижается и из 80 превращается в 5! Бу!
На самом деле на практике всё чуть менее страшно. Я проверил на симуляциях такой сетап:
- Выборки из экспоненциального распределения с параметром scale = 1000
- Истинный эффект всегда +10 и всегда аддитивный
- Проводим серию из 300 экспериментов
- В первом эксперименте при расчете размера выборок подставляем +10 в качестве MDE, чтобы исходная мощность была равна в точности 80%
- В последующих экспериментах рассчитываем размер выборки одним из 4 способов:
♦️last_statsig - берем в качестве MDE последний наблюдаемый стат. значимый эффект (самый первый эффект +10 тоже считаем стат. значимым)
♠️avg_last5_statsig - берем в качестве MDE среднее по последним 5 наблюдаемым стат. значимым эффектам (пока стат. значимых эффектов меньше 5, берем сколько есть)
♦️avg_statsig - берем в качестве MDE среднее по всем наблюдаемым стат. значимым эффектам
♠️avg - берем в качестве MDE среднее всем эффектам (в том числе не стат. значимым)
- На каждом шаге фиксируем значение, используемое в качестве целевого MDE, полученный размер выборки и реальную мощность (для истинного эффекта, равного +10)
- Проводим 200 таких серий из 300 экспериментов, усредняем значения для каждого из 300 шагов
- Как водится в индустрии для всего этого используем двусторонний критерий, но считаем эффект стат. значимым, только если он в добавок ко всему положительный (красные тесты никто не катит). Размер выборки и реальную мощность считаем как для одностороннего теста, потому что по-другому сложно.
Результаты на графиках. Видно, что все подходы, которые считают MDE по стат. значимым наблюдаемым эффектам, достаточно быстро начинают завышать истинный эффект, что ведет к снижению размера выборки и мощности. Интересно, что мощность при этом не падает к 5%, а стабилизируется на уровне 50-60%. Если же использовать среднее значение по всем наблюдаемым эффектам, то мощность так и будет колебаться в районе 80%. Нравится.
Канал нарядился для празднования 🧛Дня всех святых👻. Вот вам по случаю страшилка на ночь.
Представьте, что вы рассчитываете необходимый размер выборки для A/B-теста. Допустим для простоты, все фичи оказывают один и тот же по величине эффект на метрику. По старой оккультной традиции вы используете эффект из прошедших успешных экспериментов в качестве MDE. Так как истинный эффект вам недоступен, вы подставляете вместо него наблюдаемый. А ещё так уж вышло, что вы не читали мой пост про ошибку типа M, как и не читали статью от AirBnB про 💀Проклятие победителя💀. И, как следствие, не знаете, что в среднем наблюдаемые стат. значимые эффекты завышают истинный эффект.
В итоге вас засасывает в вечный круговорот:
🕷Вы используете в среднем завышенный эффект в качестве MDE
🧟♂️Рассчитанный размер выборки оказывается меньше, чем нужно
🔪Реальная мощность теста становится меньше желаемых 80%
🥀Полученный наблюдаемый эффект в новом эксперименте, окажись он стат. значимым, в среднем будет завышать истинный эффект еще сильнее, чем раньше
⚰️Вы возвращаетесь к шагу с пауком и используете только что полученный эффект для нового расчета MDE
👹Ваша мощность постепенно снижается и из 80 превращается в 5! Бу!
На самом деле на практике всё чуть менее страшно. Я проверил на симуляциях такой сетап:
- Выборки из экспоненциального распределения с параметром scale = 1000
- Истинный эффект всегда +10 и всегда аддитивный
- Проводим серию из 300 экспериментов
- В первом эксперименте при расчете размера выборок подставляем +10 в качестве MDE, чтобы исходная мощность была равна в точности 80%
- В последующих экспериментах рассчитываем размер выборки одним из 4 способов:
♦️last_statsig - берем в качестве MDE последний наблюдаемый стат. значимый эффект (самый первый эффект +10 тоже считаем стат. значимым)
♠️avg_last5_statsig - берем в качестве MDE среднее по последним 5 наблюдаемым стат. значимым эффектам (пока стат. значимых эффектов меньше 5, берем сколько есть)
♦️avg_statsig - берем в качестве MDE среднее по всем наблюдаемым стат. значимым эффектам
♠️avg - берем в качестве MDE среднее всем эффектам (в том числе не стат. значимым)
- На каждом шаге фиксируем значение, используемое в качестве целевого MDE, полученный размер выборки и реальную мощность (для истинного эффекта, равного +10)
- Проводим 200 таких серий из 300 экспериментов, усредняем значения для каждого из 300 шагов
- Как водится в индустрии для всего этого используем двусторонний критерий, но считаем эффект стат. значимым, только если он в добавок ко всему положительный (красные тесты никто не катит). Размер выборки и реальную мощность считаем как для одностороннего теста, потому что по-другому сложно.
Результаты на графиках. Видно, что все подходы, которые считают MDE по стат. значимым наблюдаемым эффектам, достаточно быстро начинают завышать истинный эффект, что ведет к снижению размера выборки и мощности. Интересно, что мощность при этом не падает к 5%, а стабилизируется на уровне 50-60%. Если же использовать среднее значение по всем наблюдаемым эффектам, то мощность так и будет колебаться в районе 80%. Нравится.
AB_Testicles_CUPED_Halloween.pdf
33.5 MB
CUPED Cheatsheet Halloween Edition
На журфаке МГУ запретили отмечать Хэллоуин. Как хорошо, что все еще остаются такие островки свободы, как канал A/B Testicles, где Хэллоуин можно отмечать еще как
Сделал страшную версию шпаргалки для любителей пощекотать нервы во время реализации методологии A/B-тестирования
На журфаке МГУ запретили отмечать Хэллоуин. Как хорошо, что все еще остаются такие островки свободы, как канал A/B Testicles, где Хэллоуин можно отмечать еще как
Сделал страшную версию шпаргалки для любителей пощекотать нервы во время реализации методологии A/B-тестирования
Проклятие победителя на Матемаркетинге
Конфа уже близко, и одним из выступлений на ней будет доклад Сергея Матросова с канала Не АБы какие тесты про альтернативу холдауту, предложенную Airbnb в статье 2018 года. В первой её части приводится доказательство упомянутонного мной в хэллоуинском посте проклятия победителя. Его суть заключается в том, что математическое ожидание разности стат. значимых наблюдаемых эффектов и истинного эффекта – неотрицательная величина. То есть в среднем стат. значимые эффекты завышают истинный эффект.
Формальный вывод доказательства посмотрите в самой статье, а я предлагаю разобраться, почему так происходит, с помощью графиков. Рассмотрим 2 случая:
1) Реальная мощность теста > 50%. Тогда распределение разностей средних, X_i, можно разбить на 4 части (как на картинке). Зеленая, синяя и красная области соответствуют стат. значимым результатам, белая – не стат. значимым.
Давайте посчитаем E[X_i – a], но не для всех X_i, а только для стат. значимых (очевидно, что для всех X_i эта величина равна 0). Сделаем это, проинтегрировав (X_i – a)*p_i для всех 4 областей, но слагаемое, соответствующее белой области, домножим на 0. То есть возьмем E[ I(non-white) * (X_i – a) ], где I(non-white) – индикаторная функция.
Несложно увидеть, что для каждого значения X_i из зеленой области найдется такое значение из синей, что p_i_blue*(X_i_blue – a) = –p_i_green * (X_i_green – a). То есть интегралы по этим двум областям просто отменят друг друга. И останется только интеграл по красной области. А так как все X_i из красной области больше a, то и итоговый результат будет > 0.
2) Реальная мощность теста <= 50%. Тут еще проще – зеленая область вовсе пропадет и останутся только X_i, большие чем a. Очевидно, что E[X_i – a] для таких X_i также будет > 0.
Какой из подходов правильнее, чем они еще отличаются кроме нормирования вероятностей, что делать с обнаруженным байасом и причем тут вообще альтернатива холдауту? Вот статья + выступление Сережи на ММ'25 20 ноября в 17:45.
Конфа уже близко, и одним из выступлений на ней будет доклад Сергея Матросова с канала Не АБы какие тесты про альтернативу холдауту, предложенную Airbnb в статье 2018 года. В первой её части приводится доказательство упомянутонного мной в хэллоуинском посте проклятия победителя. Его суть заключается в том, что математическое ожидание разности стат. значимых наблюдаемых эффектов и истинного эффекта – неотрицательная величина. То есть в среднем стат. значимые эффекты завышают истинный эффект.
Формальный вывод доказательства посмотрите в самой статье, а я предлагаю разобраться, почему так происходит, с помощью графиков. Рассмотрим 2 случая:
1) Реальная мощность теста > 50%. Тогда распределение разностей средних, X_i, можно разбить на 4 части (как на картинке). Зеленая, синяя и красная области соответствуют стат. значимым результатам, белая – не стат. значимым.
Давайте посчитаем E[X_i – a], но не для всех X_i, а только для стат. значимых (очевидно, что для всех X_i эта величина равна 0). Сделаем это, проинтегрировав (X_i – a)*p_i для всех 4 областей, но слагаемое, соответствующее белой области, домножим на 0. То есть возьмем E[ I(non-white) * (X_i – a) ], где I(non-white) – индикаторная функция.
Несложно увидеть, что для каждого значения X_i из зеленой области найдется такое значение из синей, что p_i_blue*(X_i_blue – a) = –p_i_green * (X_i_green – a). То есть интегралы по этим двум областям просто отменят друг друга. И останется только интеграл по красной области. А так как все X_i из красной области больше a, то и итоговый результат будет > 0.
2) Реальная мощность теста <= 50%. Тут еще проще – зеленая область вовсе пропадет и останутся только X_i, большие чем a. Очевидно, что E[X_i – a] для таких X_i также будет > 0.
Добавлю еще, что условие на стат. значимость X_i можно реализовать двумя способами:
◆ как сделали мы – с помощью индикаторной функции. Наши p_i расчитаны на основе исходного распределения из 4 областей
◆ по-другому. Можно сразу считать интеграл по усеченному распределению (без белой области) с отнормированными вероятностями. Тогда результат будет отличаться в 1/ (1-beta) раз. Но знак все равно не поменяет.
Какой из подходов правильнее, чем они еще отличаются кроме нормирования вероятностей, что делать с обнаруженным байасом и причем тут вообще альтернатива холдауту? Вот статья + выступление Сережи на ММ'25 20 ноября в 17:45.
👾12
Как честно подвести итоги A/B-теста
Я не писал в канал больше месяца, потому что дома появился плэйстейшн, и теперь моя сфера интересов – видеоигры, а не A/B-тесты.
Но скоро Новый год, а значит многие команды будут подводить итоги своей работы. И мне очень некомфортно от мысли, что они могут делать это неправильно, совершенно не осозновая этого. Очень надеюсь, что вызвал у вас FOMO, и, что вы прочитаете мою новую статью
Я не писал в канал больше месяца, потому что дома появился плэйстейшн, и теперь моя сфера интересов – видеоигры, а не A/B-тесты.
Но скоро Новый год, а значит многие команды будут подводить итоги своей работы. И мне очень некомфортно от мысли, что они могут делать это неправильно, совершенно не осозновая этого. Очень надеюсь, что вызвал у вас FOMO, и, что вы прочитаете мою новую статью
Telegraph
Честные эффекты в A/B-тестах
Ситуация: ваша команда реализовала новую фичу в разделе с настройками приложения. Когда пользователь заходит в этот раздел, он попадает в эксперимент и сплитуется в одну из групп. Фича оказалась настолько хороша, что вы заметили прирост средней выручки на…
☃24
ChatGPT подвел мои итоги года и сделал новогоднее видео
(он меня ненавидит)
(он меня ненавидит)
☃20
Я стал A/B-селебой
Канал попал в подборку от NewHR – самый последний во вкладке "Аналитика". Скорее всего, потому что я сам же его и упомянул, когда проходил опрос. Приятно получить всеобщее признание
Канал попал в подборку от NewHR – самый последний во вкладке "Аналитика". Скорее всего, потому что я сам же его и упомянул, когда проходил опрос. Приятно получить всеобщее признание
newhr.org
За кем следят аналитики 2025
👾30
День всех влюбленных 🩷
Я написал статью по случаю. Скидывайте её вместе с валентинками своим вторым половинкам, партнерам, k-ближайшим соседям. Думаю, это будет замечательным подарком в такой светлый день
Если некому скинуть, то мб стоит поменьше увлекаться статистикой, не знаю..
Про отношения 👩❤️💋👨
Я написал статью по случаю. Скидывайте её вместе с валентинками своим вторым половинкам, партнерам, k-ближайшим соседям. Думаю, это будет замечательным подарком в такой светлый день
Если некому скинуть, то мб стоит поменьше увлекаться статистикой, не знаю..
Про отношения 👩❤️💋👨
Please open Telegram to view this post
VIEW IN TELEGRAM
Подборка вакансий по A/B
Для тех, кто больше никогда не хочет делать выгрузки, чтобы узнать, а какая же доля пользователей долистала до 8-го товара в выдаче
Вакансии, где нужно пилить A/B-платформу
◆ Lamoda
◆ Островок
◆ Ozon – но тут ищут продакта
Вакансии, где нужно говорить другим, как правильно проводить A/B-тесты
◆ Вкусвилл
◆ Uzum
◆ Точка
На похожую вакансию в Точку я, кстати, когда-то откликался. В ответ на резюме мне написали
В графе опыт при этом у меня было крупными буквами на полстраницы написаноМНОГО ЗАНИМАЮСЬ A/B-ТЕСТАМИ . Так что, если будете откликаться, про A/B-тесты ни слова
Для тех, кто больше никогда не хочет делать выгрузки, чтобы узнать, а какая же доля пользователей долистала до 8-го товара в выдаче
Вакансии, где нужно пилить A/B-платформу
◆ Lamoda
◆ Островок
◆ Ozon – но тут ищут продакта
Вакансии, где нужно говорить другим, как правильно проводить A/B-тесты
◆ Вкусвилл
◆ Uzum
◆ Точка
На похожую вакансию в Точку я, кстати, когда-то откликался. В ответ на резюме мне написали
Приняли решение, что сейчас ваш опыт не вполне подходит для этой позиции.
В графе опыт при этом у меня было крупными буквами на полстраницы написано
👾18
Кейс с собеседования
Года полтора назад на собесе в Авито мне дали такой кейс:
Допустим, сетевой эффект ничтожен – дизайним стандартный A/B-тест. Какую единицу рандомизации лучше выбрать? Почему её, а не другую? Напишите в комментах – интересно послушать мнения
Года полтора назад на собесе в Авито мне дали такой кейс:
Тестируем фичу, которая с помощью AI улучшает фотографии в объявлениях
Допустим, сетевой эффект ничтожен – дизайним стандартный A/B-тест. Какую единицу рандомизации лучше выбрать? Почему её, а не другую? Напишите в комментах – интересно послушать мнения
👾8
👾3
Может ли одна метрика быть чувствительнее другой
Была бы у меня возможность – я бы только на деньги в A/B-тестах и смотрел. К сожалению, ARPU – не самая чувствительная метрика. Обычно осознание этого факта приводит к каким-то таким рассуждениям:
Вроде как нашли метрику почувствительнее. Но даже если оставить за скобками вопрос сравнительной ценности для бизнеса прироста выручки на 2% и прироста локальной конверсии на 2%, все равно остается небольшая проблема.
В примере выше мы проверили мощность теста для ARPU и конверсии при одном конкретном значении эффекта. В реальности истинный эффект, вероятно, будет отличаться от 2%. Значит будет отличаться и мощность. При этом для любого такого эффекта конверсия может оставаться мощнее ARPU (чтобы убедиться наверняка, можно построить кривые мощности, как в комментах к этому посту). Тут пока все ок.
Проблема в том, что мы игнорируем тот факт, что для разных метрик один и тот же истинный эффект может иметь разные априорные вероятностиbayes go brrr Представьте, что в каждом A/B-тесте истинный эффект – это реализация нормально распределенной случайной величины с мат. ожиданием 0 и дисперсией σ^2.
Если σ^2 для конверсии будет в 10 раз меньше этого же показателя для ARPU, то вероятность того, что истинный эффект на ARPU будет лежать далеко от 0 выше, чем аналогичная вероятность для конверсии. Значит вероятность того, что реальная мощность для ARPU будет не 50%, а 80, 90, 99% тоже может быть выше. То есть на выходе из-за большого разброса истинных эффектов мы можем получить более чувствительный (с точки зрения реальной мощности) тест для метрики, которая выглядела менее чувствительной при фиксированном желаемом эффекте.
Ребята из Amazon предлагают решить эту проблему с помощью расчета ожидаемой мощности. Берем интеграл от П(δ) * g(δ), где П(δ) - мощность при эффекте равном δ, а g(δ) – pdf для δ. Для случая, когда δ ~ N(mu, σ^2) (как в нашем примере), в статье выводится готовая формула-результат интегрирования. Если же вы по какой-то причине думаете, что истинные эффекты для вашей метрики распределены не нормально, то брать интеграл может быть сложно. Тогда просто сэмплируете истинные эффекты из предполагаемого распределения, считаете для них мощность и берете среднее.
Такой подход, правда, игнорирует трешхолды практической значимости эффекта, поэтому можно подумать в сторону того, чтобы убрать из области интегрирования значения, близкие к 0.
Остается вопрос, откуда взять знание о распределении истинных эффектов. Ведь даже при предположении δ ~ N(0, σ^2) нужно оценить σ^2. Самый наивный подход - рассчитать σ^2 на основе распределения наблюдаемых эффектов из корпуса прошедших экспериментов – Var(∆_observed_i). Но каждый наблюдаемый эффект вносит шум, так как сам является лишь оценкой истинного эффекта, взятой из нормального распределения вокруг него. Поэтому чуть более осознанный подход – вычесть из наивной оценки усредненное значение дисперсий разностей средних, посчитанное по корпусу экспериментов – Var(∆_observed_i) - avg(SE_i^2). Кстати, если в результате получите отрицательную дисперсию – добро пожаловать в клуб((
Была бы у меня возможность – я бы только на деньги в A/B-тестах и смотрел. К сожалению, ARPU – не самая чувствительная метрика. Обычно осознание этого факта приводит к каким-то таким рассуждениям:
🤗 Мы хотим с достаточной уверенностью фиксировать эффект 2%
✍️ Выручка для этого ну ни в каком виде не годится – получаем мощность всего 50%
💅 Возьмем тогда конверсию в заказ или конверсию в ATC или конверсию из какого-нибудь баннерочка в какую-нибудь кнопочку – для них эффект в 2% мы сможем обнаружить с высокой вероятностью – 80%
Вроде как нашли метрику почувствительнее. Но даже если оставить за скобками вопрос сравнительной ценности для бизнеса прироста выручки на 2% и прироста локальной конверсии на 2%, все равно остается небольшая проблема.
В примере выше мы проверили мощность теста для ARPU и конверсии при одном конкретном значении эффекта. В реальности истинный эффект, вероятно, будет отличаться от 2%. Значит будет отличаться и мощность. При этом для любого такого эффекта конверсия может оставаться мощнее ARPU (чтобы убедиться наверняка, можно построить кривые мощности, как в комментах к этому посту). Тут пока все ок.
Проблема в том, что мы игнорируем тот факт, что для разных метрик один и тот же истинный эффект может иметь разные априорные вероятности
Если σ^2 для конверсии будет в 10 раз меньше этого же показателя для ARPU, то вероятность того, что истинный эффект на ARPU будет лежать далеко от 0 выше, чем аналогичная вероятность для конверсии. Значит вероятность того, что реальная мощность для ARPU будет не 50%, а 80, 90, 99% тоже может быть выше. То есть на выходе из-за большого разброса истинных эффектов мы можем получить более чувствительный (с точки зрения реальной мощности) тест для метрики, которая выглядела менее чувствительной при фиксированном желаемом эффекте.
Ребята из Amazon предлагают решить эту проблему с помощью расчета ожидаемой мощности. Берем интеграл от П(δ) * g(δ), где П(δ) - мощность при эффекте равном δ, а g(δ) – pdf для δ. Для случая, когда δ ~ N(mu, σ^2) (как в нашем примере), в статье выводится готовая формула-результат интегрирования. Если же вы по какой-то причине думаете, что истинные эффекты для вашей метрики распределены не нормально, то брать интеграл может быть сложно. Тогда просто сэмплируете истинные эффекты из предполагаемого распределения, считаете для них мощность и берете среднее.
Остается вопрос, откуда взять знание о распределении истинных эффектов. Ведь даже при предположении δ ~ N(0, σ^2) нужно оценить σ^2. Самый наивный подход - рассчитать σ^2 на основе распределения наблюдаемых эффектов из корпуса прошедших экспериментов – Var(∆_observed_i). Но каждый наблюдаемый эффект вносит шум, так как сам является лишь оценкой истинного эффекта, взятой из нормального распределения вокруг него. Поэтому чуть более осознанный подход – вычесть из наивной оценки усредненное значение дисперсий разностей средних, посчитанное по корпусу экспериментов – Var(∆_observed_i) - avg(SE_i^2). Кстати, если в результате получите отрицательную дисперсию – добро пожаловать в клуб((
Please open Telegram to view this post
VIEW IN TELEGRAM
👾13
Мой критический обзор на дизайн байерско-селлерского теста Авито
Там предлагается провести A/B-тест как на картинке. Что мне не понравилось:
1) Мне было сложно разобраться, чуть мозги не сломал
2) Меня покорежило от определения MDE
3) Никак не учитывается сетевой эффект при сравнении покупательского контроля и покупательского теста. Если мы скрываем плохих продавцов в покупательском тесте, то все покупатели из покупательского теста пойдут к хорошим продавцам и скупят у них все товары (здесь и далее я пишу все, но понятно, что не все – просто преувеличиваю для наглядности). А значит покупатели из покупательского контроля, которые могли бы купить у хороших продавцов в отсутствие эксперимента, будут покупать у плохих продавцов. Это приведет к смещению метрики
4) Мы считаем сетевой эффект A в процентном изменении единиц "трафика" (показов?). "Силу воздействия" тоже считаем в показах. При этом получившийся коэффициент используем для масштабирования эффекта на выручку. В статье по этому поводу звучит фраза:
Это очень сильное и неочевидное предположение
5) Если бы мы использовали в качестве А процентное изменение выручки вместо "трафика", то столкнулись бы с другой проблемой. Идея оценки А, как я понял по вайбу статьи, заключается в том, что в группе остальных покупателей нет конкуренции между тестовыми и контрольными продавцами, а в покупательском контроле есть. Это отсутствие конкуренции и должно вызывать сетевой эффект. Однако когда мы меняем метрику с показов на выручку, мы снова (как и в пункте 3) сталкиваемся с ограниченным предложением. Если покупатели из группы свобоных покупателей не перетекут к хорошим продавцам, то плохие продавцы из контроля могут забрать себе всех покупателей из группы свободных покупателей, те раскупят все товары, а покупателям из группы покупательского контроля ничего не останется. В этом случае измеренный эффект А будет отражать не только сетевой эффект, возникший из-за отсутсвия конкуренции, но и сетевой эффект, возникший из-за ограниченного предложения. Этот пункт – не претензия к статье, потому что там так не делают
6) И, наконец, я не очень понял учитывается ли хоть где-то возможный переток покупателей от отключенных плохих продавцов к хорошим. В сравнении селлерских групп речь идет только об эффекте на выручку по плохим продавцам. Даже сама идея масштабирования пытается привести все к идеальному эксперименту, который оценивает эффект только на выручку с плохих. Если часть покупателей уйдет к хорошим продавцам, то даже при отсутствии проблемы из пункта 4 полученная оценка не будет отражать полный эффект от воздействия (Возможно, в разделе с ограничениями сетапа во втором пункте как раз про это речь)
В чем я не прав??? Пишите в комментариях. Под предыдущим постом про Авито было оживленное обсуждение, прямо как в настоящем телеграм канале
Закончить же этот пост хочется еще одним критическим замечанием, которое оставил пользователь хабра с ником kholdy_micro:
Это, кстати, самый агрессивный из тех четырех комментариев, которые пользователь kholdy_micro оставил на хабре. Стоит задуматься
Там предлагается провести A/B-тест как на картинке. Что мне не понравилось:
1) Мне было сложно разобраться, чуть мозги не сломал
2) Меня покорежило от определения MDE
3) Никак не учитывается сетевой эффект при сравнении покупательского контроля и покупательского теста. Если мы скрываем плохих продавцов в покупательском тесте, то все покупатели из покупательского теста пойдут к хорошим продавцам и скупят у них все товары (здесь и далее я пишу все, но понятно, что не все – просто преувеличиваю для наглядности). А значит покупатели из покупательского контроля, которые могли бы купить у хороших продавцов в отсутствие эксперимента, будут покупать у плохих продавцов. Это приведет к смещению метрики
4) Мы считаем сетевой эффект A в процентном изменении единиц "трафика" (показов?). "Силу воздействия" тоже считаем в показах. При этом получившийся коэффициент используем для масштабирования эффекта на выручку. В статье по этому поводу звучит фраза:
Предположим, эксперимент показал снижение выручки на 10%, и выручка линейно зависит от силы воздействия.
Это очень сильное и неочевидное предположение
5) Если бы мы использовали в качестве А процентное изменение выручки вместо "трафика", то столкнулись бы с другой проблемой. Идея оценки А, как я понял по вайбу статьи, заключается в том, что в группе остальных покупателей нет конкуренции между тестовыми и контрольными продавцами, а в покупательском контроле есть. Это отсутствие конкуренции и должно вызывать сетевой эффект. Однако когда мы меняем метрику с показов на выручку, мы снова (как и в пункте 3) сталкиваемся с ограниченным предложением. Если покупатели из группы свобоных покупателей не перетекут к хорошим продавцам, то плохие продавцы из контроля могут забрать себе всех покупателей из группы свободных покупателей, те раскупят все товары, а покупателям из группы покупательского контроля ничего не останется. В этом случае измеренный эффект А будет отражать не только сетевой эффект, возникший из-за отсутсвия конкуренции, но и сетевой эффект, возникший из-за ограниченного предложения. Этот пункт – не претензия к статье, потому что там так не делают
6) И, наконец, я не очень понял учитывается ли хоть где-то возможный переток покупателей от отключенных плохих продавцов к хорошим. В сравнении селлерских групп речь идет только об эффекте на выручку по плохим продавцам. Даже сама идея масштабирования пытается привести все к идеальному эксперименту, который оценивает эффект только на выручку с плохих. Если часть покупателей уйдет к хорошим продавцам, то даже при отсутствии проблемы из пункта 4 полученная оценка не будет отражать полный эффект от воздействия (Возможно, в разделе с ограничениями сетапа во втором пункте как раз про это речь)
В чем я не прав??? Пишите в комментариях. Под предыдущим постом про Авито было оживленное обсуждение, прямо как в настоящем телеграм канале
Закончить же этот пост хочется еще одним критическим замечанием, которое оставил пользователь хабра с ником kholdy_micro:
Чушь не несите!!! Авито самая забагованая платформа в рунете!!! Почему авито закрыло коментарии на всех площадках? Что твориться с авито в посление 6 - 9 месяце?? Ваша платформа блокирует профили пользователь без обоснованых причин!!
Это, кстати, самый агрессивный из тех четырех комментариев, которые пользователь kholdy_micro оставил на хабре. Стоит задуматься
👾13
Гипотезы
Статистические критерии устроены таким образом, что они позволяют контролировать вероятность ошибки первого рода. Контролю альфы в принципе уделяется очень много времени в статистике. Например, когда речь заходит о подглядывании или о множественных сравнениях. Оно и неудивительно – ведь для нас очень важно случайно не выкатить изменение, которое на самом деле никак не повлияло на метрики. Или не прям важно?
При такой постановке вопроса создается ощущение, что ошибка первого рода – не такая уж и проблема для бизнеса. Ну выкатили и выкатили, ничего не изменилось ведь. Более того, априорная вероятность точечной нулевой гипотезы (H_0 : Δ = 0) равна в точности 0. То есть по большому счету какой-то эффект есть всегда.
После таких мыслей возникает вопрос: а действительно ли нам нужно так сильно переживать об ошибке первого рода, которая, во-первых, не наносит большого вреда бизнесу, а, во-вторых, почти никогда не случается, так как никогда не случается H_0? Может быть и с подглядываниями нет никакой проблемы? Раз эффект есть всегда, то почему бы не детектить его раньше? И вообще, вот бы переделать стат. тесты как-нибудь так, чтобы они контролировали бету, а не альфу. Ведь не упустить улучшение – гораздо более важная задача для нас.
Всё, заканчиваю нести ересь.
На самом деле нулевая гипотеза H_0 : Δ = 0, конечно же, может быть верна как минимум в одном случае – когда мы проводим A/A-тест. Верна она здесь by design. И этот факт позволяет нам валидировать стат. тесты, сплитовалки и тд.
Но важнее другое. Несмотря на то, что формально при проведении экспериментов мы используем двусторонний t-тест, в реальности мы катим только зеленые фичи (в том числе и в сетапе проблемы подглядывания). То есть фактически наша H_0 – это Δ <= 0, а наш критерий – односторонний. Мы делаем вид, что мы контролируем (или завышаем при подглядывании) вероятность зафиксировать эффект при его отсутствии на уровне 5%. Но на самом деле мы контролируем (или завышаем при подглядывании) вероятность выкатить фичу, которая не улучшила метрику или ухудшила её, на уровне не более 2.5%. А это, согласитесь, звучит уже намного приятнее.
Статистические критерии устроены таким образом, что они позволяют контролировать вероятность ошибки первого рода. Контролю альфы в принципе уделяется очень много времени в статистике. Например, когда речь заходит о подглядывании или о множественных сравнениях. Оно и неудивительно – ведь для нас очень важно случайно не выкатить изменение, которое на самом деле никак не повлияло на метрики. Или не прям важно?
При такой постановке вопроса создается ощущение, что ошибка первого рода – не такая уж и проблема для бизнеса. Ну выкатили и выкатили, ничего не изменилось ведь. Более того, априорная вероятность точечной нулевой гипотезы (H_0 : Δ = 0) равна в точности 0. То есть по большому счету какой-то эффект есть всегда.
После таких мыслей возникает вопрос: а действительно ли нам нужно так сильно переживать об ошибке первого рода, которая, во-первых, не наносит большого вреда бизнесу, а, во-вторых, почти никогда не случается, так как никогда не случается H_0? Может быть и с подглядываниями нет никакой проблемы? Раз эффект есть всегда, то почему бы не детектить его раньше? И вообще, вот бы переделать стат. тесты как-нибудь так, чтобы они контролировали бету, а не альфу. Ведь не упустить улучшение – гораздо более важная задача для нас.
На самом деле нулевая гипотеза H_0 : Δ = 0, конечно же, может быть верна как минимум в одном случае – когда мы проводим A/A-тест. Верна она здесь by design. И этот факт позволяет нам валидировать стат. тесты, сплитовалки и тд.
Но важнее другое. Несмотря на то, что формально при проведении экспериментов мы используем двусторонний t-тест, в реальности мы катим только зеленые фичи (в том числе и в сетапе проблемы подглядывания). То есть фактически наша H_0 – это Δ <= 0, а наш критерий – односторонний. Мы делаем вид, что мы контролируем (или завышаем при подглядывании) вероятность зафиксировать эффект при его отсутствии на уровне 5%. Но на самом деле мы контролируем (или завышаем при подглядывании) вероятность выкатить фичу, которая не улучшила метрику или ухудшила её, на уровне не более 2.5%. А это, согласитесь, звучит уже намного приятнее.
👾10
Пост-коллаба вообще со всеми
Сережа написал хорошее резюме по стратификации и ее уродливой сестричке рерандомизации. Почитайте, чтобы понимать, о чем речь.
На ахе, кстати, про рерандомизацию рассказывал Ян Пиле из Магнита. И у него на слайде распределение p-value с рерандомизацией при H0 было равномерным, а не скошенным влево, как можно было бы ожидать. Я подошел спросил а че это. Он сказал, что если к рерандомизации прикрутить CUPED, то распределение неожиданным образом выравнивается. В докладе Андрея Романова из Авито, кстати, происходит то же самое. Не чудо ли это?Не чудо – Ян прислал такую статью с разбором этого явления
Обычно с запросом на рерандомизацию приходят по одной из двух причин. Первая – хотят увеличить мощность. Немного сложно сделать в онлайне, проблематично корректно посчитать SE (из-за чего собственно и появляется перекос распределения p-value), скорее всего, не сильно эффективно (по крайней мере, на больших выборках), но в целом ОК.
Но если к вам приходят с запросом на рерандомизацию по причине "разъехались ковариаты на предпериоде, значит результаты невалидны", самое время присесть с человеком и рассказать ему поподробнее о том, как устроена статистика. Мне кажется, что подобные опасения в первую очередь возникают у людей из-за того, что они считают, что наблюдемый эффект – это конечная цель нашего анализа. В таком случае, естественно, возникает желание сделать группы идеально похожими друг на друга. И в целом в этом есть здравое зерно. Оценка в среднем действительно станет ближе к истинному эффекту. Но все ещё необязательно будет ему равна.
Именно поэтому нам важно не получить идеальное совпадение между наблюдаемым и истинным эффектом, а сделать так, чтобы наши оценки обладали нужными статистическими свойствами – точечная оценка была несмещена, а интервальная имела нужный процент покрытия. При обычной рандомизации никаких проблем с этим не возникает.
И, кстати, разъезд ковариат на предпериоде не означает автоматического возникновения ошибки первого рода на периоде эксперимента при отсутствии воздействия. Хотя, конечно, из-за скоррелированности между разностями средних по ковариатам и по целевой метрике такое вполне может быть.
Выше я назвал рерандомизацию уродливой сестричкой стратификации. Это потому что для первой, в отличие от второй, без бутстрэпа сложно посчитать корректную оценку SE. Но по настоящему уродливый член этой семейки – это A/A-тест как проверка валидности эксперимента с онлайн-сплитом. Или A/A/A/A.../B/B/B/B...-тест. Типа подождали 2 недели, набрали нужную выборку, увидели, что ковариата на предпериоде разъехалась, признали результаты A/B невалидными.
В отличие от рерандомизации и стратификации, эта практика никак не может увеличить мощность теста. Более того, она её уменьшает. Влад недавно делал обзор статьи Spotify про применение поправки Бонферрони в тестах с несколькими метриками. Там есть кусочек про Quality metrics. Это метрики, которые при прокрасе сигнализируют нам о том, что что-то с экспериментом не так, и катить фичу по его результатам нельзя (SRM – одна из таких метрик). Каждый + 1 к списку кволити метрик ведет к снижению мощности в широком смысле (вероятность выкатить фичу, если она в действительности удовлетворяет нашим критерям для выкатки). Добавление A/A-проверки – это снижение мощности в обмен на 0 пользы. При корректно работающей сплитовалке прокрасы на предпериоде – статистический артефакт, который никак не ломает инференс.
Поэтому если вы работаете в экс-Леруа Мерлен или в Конструкторе или в каком-нибудь финтехе, в следующий раз при подведении итогов эксперимента сделайте глубокий вдох и сразу перейдите к анализу A/B-теста. А проверку на A/A выпилите нахуй из платформы
Сережа написал хорошее резюме по стратификации и ее уродливой сестричке рерандомизации. Почитайте, чтобы понимать, о чем речь.
На ахе, кстати, про рерандомизацию рассказывал Ян Пиле из Магнита. И у него на слайде распределение p-value с рерандомизацией при H0 было равномерным, а не скошенным влево, как можно было бы ожидать. Я подошел спросил а че это. Он сказал, что если к рерандомизации прикрутить CUPED, то распределение неожиданным образом выравнивается. В докладе Андрея Романова из Авито, кстати, происходит то же самое. Не чудо ли это?
Обычно с запросом на рерандомизацию приходят по одной из двух причин. Первая – хотят увеличить мощность. Немного сложно сделать в онлайне, проблематично корректно посчитать SE (из-за чего собственно и появляется перекос распределения p-value), скорее всего, не сильно эффективно (по крайней мере, на больших выборках), но в целом ОК.
Но если к вам приходят с запросом на рерандомизацию по причине "разъехались ковариаты на предпериоде, значит результаты невалидны", самое время присесть с человеком и рассказать ему поподробнее о том, как устроена статистика. Мне кажется, что подобные опасения в первую очередь возникают у людей из-за того, что они считают, что наблюдемый эффект – это конечная цель нашего анализа. В таком случае, естественно, возникает желание сделать группы идеально похожими друг на друга. И в целом в этом есть здравое зерно. Оценка в среднем действительно станет ближе к истинному эффекту. Но все ещё необязательно будет ему равна.
Именно поэтому нам важно не получить идеальное совпадение между наблюдаемым и истинным эффектом, а сделать так, чтобы наши оценки обладали нужными статистическими свойствами – точечная оценка была несмещена, а интервальная имела нужный процент покрытия. При обычной рандомизации никаких проблем с этим не возникает.
И, кстати, разъезд ковариат на предпериоде не означает автоматического возникновения ошибки первого рода на периоде эксперимента при отсутствии воздействия. Хотя, конечно, из-за скоррелированности между разностями средних по ковариатам и по целевой метрике такое вполне может быть.
Выше я назвал рерандомизацию уродливой сестричкой стратификации. Это потому что для первой, в отличие от второй, без бутстрэпа сложно посчитать корректную оценку SE. Но по настоящему уродливый член этой семейки – это A/A-тест как проверка валидности эксперимента с онлайн-сплитом. Или A/A/A/A.../B/B/B/B...-тест. Типа подождали 2 недели, набрали нужную выборку, увидели, что ковариата на предпериоде разъехалась, признали результаты A/B невалидными.
В отличие от рерандомизации и стратификации, эта практика никак не может увеличить мощность теста. Более того, она её уменьшает. Влад недавно делал обзор статьи Spotify про применение поправки Бонферрони в тестах с несколькими метриками. Там есть кусочек про Quality metrics. Это метрики, которые при прокрасе сигнализируют нам о том, что что-то с экспериментом не так, и катить фичу по его результатам нельзя (SRM – одна из таких метрик). Каждый + 1 к списку кволити метрик ведет к снижению мощности в широком смысле (вероятность выкатить фичу, если она в действительности удовлетворяет нашим критерям для выкатки). Добавление A/A-проверки – это снижение мощности в обмен на 0 пользы. При корректно работающей сплитовалке прокрасы на предпериоде – статистический артефакт, который никак не ломает инференс.
Поэтому если вы работаете в экс-Леруа Мерлен или в Конструкторе или в каком-нибудь финтехе, в следующий раз при подведении итогов эксперимента сделайте глубокий вдох и сразу перейдите к анализу A/B-теста. А проверку на A/A выпилите нахуй из платформы
👾18
Джереми Кларксон осваивает бутстрэп
https://rutube.ru/video/9b458f07826786d9def20840a7496570/?t=1360&r=plwd
https://rutube.ru/video/9b458f07826786d9def20840a7496570/?t=1360&r=plwd
RUTUBE
Ферма Кларксона 5 сезон 4 серия (документальный сериал, 2026)
Название серии: «Обновление»
На ферме Джереми наступает эпоха автономного фермерства. Это как раз кстати, потому что в пабе и с поросятами возникли серьёзные проблемы, требующие быстрого решения. Джереми и его команда стараются справиться с новыми трудностями.
На ферме Джереми наступает эпоха автономного фермерства. Это как раз кстати, потому что в пабе и с поросятами возникли серьёзные проблемы, требующие быстрого решения. Джереми и его команда стараются справиться с новыми трудностями.
👾7