Я почитал недавно статью на хабре про АБ тесты от одной компании
С удивлением обнаружил что там ниспровергается Cuped (точнее определенная формула)
И приводится этот код для проверки
Код из статьи воспроизведен без изменений (число итераций увеличено в 10 раз) в ячейке номер 2
Ячейка 2 выдает следующее
Не попал в 85.07000000000001% случаев; доверительный интервал: [84.36%, 85.76%]
Выглядит и вправду плохо, при ожидаемом уровне в 5% мы наблюдаем уровень ложно положительных результатов многократно выше
Я обратил внимание на то, что на одном и том же датасете считается сontrol before как ковариата и как вычитаемое среднее, к сожалению здесь ошибка и так делать нельзя. Это классический пример переобучения. Примерно как валидироваться на трейне и потом попасть впросак на новом датасете
Правится это следующим образом, вычитаемое среднее считается глобально по всему датасету (например если в а/б тест отправилось 5% юзеров, то среднее будем считаться по всем 100% и можем учесть чуть больший период времени)
В идеальном мире это выглядело бы вот так
Я бы просто знал параметры распределения и использовал их для вычитания среднего, хотя тогда и А/Б не нужен (строчка 8)
Ячейка 3
Допустим я не знаю параметры распределения, но у меня много данных, тогда будет вот так (строчка 4 и 9)
Ячейка 4
Вот как будет это выглядеть в реальной жизни при самом плохом случае, когда мы сравниваем группу А и Б и допустим что никаких других данных у нас нет
Ячейка 5
Вот как будет это выглядеть в реальной жизни при наличии каких то данных, кроме самих групп А и Б или А1 и А2
Ячейка 6
Вы можете позапускать код самостоятельно и убедится что во всех четырех случаях цифры будут около 5% , но пожалуй пристальнее всего стоит смотреть на то как будет в реальной жизни
Также, для сравнения дал пример где накинул очень маленький шум в качестве эффекта, cuped поймал его в половине случаев, без cuped - только в пяти из ста
Ячейка 7 и 8 соответственно
P.S. Кажется я знаю откуда может идти идея ниспровержения. По моему я был один из первых людей, сделавших доклад о Cuped на русском
В моем репозитории Cuped как раз был реализован с этой ошибкой, о чем я знал последние года два, но не придавал значения
Чуть подробнее мы разобрали это в ОДС в Июле 2021 года в этом треде
#ArticleReview
С удивлением обнаружил что там ниспровергается Cuped (точнее определенная формула)
И приводится этот код для проверки
Код из статьи воспроизведен без изменений (число итераций увеличено в 10 раз) в ячейке номер 2
Ячейка 2 выдает следующее
Не попал в 85.07000000000001% случаев; доверительный интервал: [84.36%, 85.76%]
Выглядит и вправду плохо, при ожидаемом уровне в 5% мы наблюдаем уровень ложно положительных результатов многократно выше
Я обратил внимание на то, что на одном и том же датасете считается сontrol before как ковариата и как вычитаемое среднее, к сожалению здесь ошибка и так делать нельзя. Это классический пример переобучения. Примерно как валидироваться на трейне и потом попасть впросак на новом датасете
Правится это следующим образом, вычитаемое среднее считается глобально по всему датасету (например если в а/б тест отправилось 5% юзеров, то среднее будем считаться по всем 100% и можем учесть чуть больший период времени)
В идеальном мире это выглядело бы вот так
Я бы просто знал параметры распределения и использовал их для вычитания среднего, хотя тогда и А/Б не нужен (строчка 8)
Ячейка 3
Допустим я не знаю параметры распределения, но у меня много данных, тогда будет вот так (строчка 4 и 9)
Ячейка 4
Вот как будет это выглядеть в реальной жизни при самом плохом случае, когда мы сравниваем группу А и Б и допустим что никаких других данных у нас нет
Ячейка 5
Вот как будет это выглядеть в реальной жизни при наличии каких то данных, кроме самих групп А и Б или А1 и А2
Ячейка 6
Вы можете позапускать код самостоятельно и убедится что во всех четырех случаях цифры будут около 5% , но пожалуй пристальнее всего стоит смотреть на то как будет в реальной жизни
Также, для сравнения дал пример где накинул очень маленький шум в качестве эффекта, cuped поймал его в половине случаев, без cuped - только в пяти из ста
Ячейка 7 и 8 соответственно
P.S. Кажется я знаю откуда может идти идея ниспровержения. По моему я был один из первых людей, сделавших доклад о Cuped на русском
В моем репозитории Cuped как раз был реализован с этой ошибкой, о чем я знал последние года два, но не придавал значения
Чуть подробнее мы разобрали это в ОДС в Июле 2021 года в этом треде
#ArticleReview