то распределение p-value должно свестись к двум точкам - 0 если нуль гипотеза отброшена и около 1 в остальных случаях.
К сожалению, это не правда( При корректности гипотезы H0 pvalue распределено равномерно на промежутке [0,1], док-во можно прочесть здесь
Поэтому при H0, P(p-value < x) = x для любого x в промежутке [0,1]. В данном случае я смотрел P(p-value < 0.05) = 0.05 потому что это значит, что критерий можно или нельзя использовать на уровне значимости 5%. Есть правило: "критерий отвергается на уровне значимости alpha" <=> p-value < alpha (почитать можно тут). P(p-value < 0.05) = 0.05 означает, что по этому правилу при корректности нулевой гипотезы я буду ошибаться лишь в 5% случаев, о чем нам и говорит выбранная ошибка 1 рода в 5%.
Ага, но судя по википедии этот критерий проверяет равенство распределений, а не средних. Я не погружался глубоко в тему, поэтому не могу утверждать, правы вы или нет, используя такой критерий для проверки равенства средних
Единственное, что могу посоветовать - реализовать Монте-Карло проверку и убедиться на разных примерах, что FPR = 5%. А также можно сравнить, насколько он лучше чем t-test, посмотрев мощность на одних и тех же примерах.
Если этот критерий корректен и более мощный, чем t-test, то все отлично и это очень круто) Тогда вы могли бы написать про это статью)
Добрый день! К сожалению здесь не подскажу: не использовал этот критерий в работе и не разбирался в нем(
Но кажется Манн-Уитни это аналог этого критерия, когда у вас всего 2 выборки. Поэтому все примеры из этой статьи кажется можно перенести на 3 и более выборок, чтобы показать те же выводы, что были сделаны в этой статье.
Главное, что я хотел, когда писал статью, чтобы читатели вынесли из статьи, что этот критерий нельзя использовать для анализа AB-тестов. И это полностью согласуется с вашим аргументом: вы никогда не можете утверждать на практике, что у вас просто произошло смещение типа F1(x) = F2(x + δ).
Если вы знали это с самого начала, то основная часть статьи не для вас) Могу лишь порекомендовать прочесть третью часть статьи под заголовком "Когда Манн-Уитни работает?", где я как раз рассказываю про пример со смещением, а также с умножением на константу.
Также было бы интересно подискутировать на тему неправильной интерпретации p-value: я сам большой сторонник того, что его надо правильно понимать, поэтому хотелось бы узнать, где именно вам кажется, что я делаю что-то не так? Можете математически это аргументировать, исходя из определения p-value?
1) мы используем центральный бутстрап (который видимо BCa). Но я не обнаруживал на выборках размера более 10к разницы в 3 методах построения доверительного интервала бутстрапом, так что можно юзать любой (если предварительно проверишь его на своих данных). По поводу скинутого примера - см пункт 3
2) Все подводные камни легко обнаружить, если проверить свой критерий. Этому была посвящана большая часть первой статьи и это самое важное, что надо помнить! По поводу большого количества бутстрап выборок - мы используем 10к, у нас все работает на реальных и искусственных данных.
3) По поводу статьи: все бы хорошо, но пример некорректный) Просто в качестве простого чекера: всегда стоит запустить на сгенерированных данных t-test. Если он не работает -- есть повод задуматься о корректности примера.
3.5) Если исправить пример автора, то все бутстрапы работают на выборках размера 1000 (на других размерах не проверял)
4) "Не хотите думать — используйте бутстрап!" <- да, я действительно так считаю) Но, конечно же, при условии, что этот бутстрап будет проверен на реальных/искусственных данных.
Про CUPED: я пересмотрел статью еще раз, и не увидел, чтобы они явно подчеркивали, что вычитаемое среднее одно и то же (кроме одного упоминания, что вычитание среднего не влияет на разницы метрик). Может плохо читаю, но я считаю, что это очень важно было подчеркнуть, а не показывать на примерах в коде.
Те, кто не знают статистику, и без этого могут ошибиться. Например, рассчитать коэффициент при ковариате для каждого варианта отдельно :)
Не, это порочная практика) Все мы можем ошибаться, и это нормально (как пример - статья выше про бутстрап). Плюс даже те, кто шарят статы, могут не понять, почему нельзя вычитать 2 разных средних в тесте и в контроле? Или почему нельзя для мат.ожа такой метрики построить дов интервал? И здесь возникает ровно та же проблема, что и в статье про бутстрап - зависимость элементов выборки, что является совсем нетривиальной проблемой, которую сложно заметить. Здесь поможет не знание статистики, а лишь опыт.
Плюс всегда стоит стараться уменьшить до минимума количество недопомониманий от статьи. И вот здесь, как мне кажется, booking не прав) Вот второй пример - https://medium.com/statistics-experiments/cuped-или-увеличение-чувствительности-метрики-de7183fc964c и здесь наверняка точно также имелось в виду, что среднее одно и то же на предпериоде. Но в обоих статьях не объяснено, почему нельзя вычитать разные средние на тесте и контроле. Или зачем вообще они вычитают это среднее .
А ну и про Манна-Уитни: я еще у вк видел статью, где они также рекламирвали этот критерий) В январе (надеюсь...) я опубликую более подробную статью про этот критерий, где прям по полочкам разложу, в чем проблема этого критерия, почему его вообще используют и к чему на практике он приводит)
Спасибо за вопрос! А то никаких комментариев по той статье не было, уже грустить начал)
Да, изначально была эта статья, плюс была статья про CUPED на русском медиуме. При применении критерия у Букинга ошибки нет, но есть несколько но:
1) Они вводят в заблуждение читателя, приводя пример с вычитанием среднего. Зачем вообще это делать? Какой от этого профит?
2) Приводя это в пример, и говоря, что так выглядит cuped-метрика, я думаю многие могли начать сокращать так вариацию для построения доверительного интервала для мат. ожа одной метрики, без сравнения с тестом. И это реально бы работало, только это неверно.
3) Ну и главное: не все хорошо шарят за код в sql и в спарке и могли прочесть лишь строчки с формулами, где написано вычитать среднее, и уже в этом случае прийти именно к тому неправильному CUPED-критерию, описанному в статье.
Про CUNOPAC: сходу мне сложно предположить, почему мощности разнятся( Предполагаю, что дело в разных подходах алгоритма: uplift модель, если бы мы использовали предсказания не на всем датасете, а лишь на части (тестовые предсказания на тестовых пользователях, контрольные предсказания на контрольных пользователях) -- ничем не отличался бы от обычного ttest. CUNOPAC же смотрит на остатки e_t, e_c при условии, что мы предсказывали бы все без знания, кто в тесте и в контроле. Раз CUPED более мощный чем TTEST, то логично, что алгоритм основанный на CUPED может быть мощнее uplift модели (который дает результаты как t-test, если бы не увеличение датасета в 2 раза);
Про CUMPED - те же рассуждения. Плюс здесь нет шума от ML-модели, которая могла начать плохо предсказывать.
Ух, есть такая идея) Но боюсь что по времени успею лишь весной(
Мы не знаем какой результат будет в эксперимента, но мы знаем чего мы хотим: улучшения метрики (а значит односторонний результат). Если мы получим любой другой результат (к примеру, сильное падение метрики или отсутсвие эффекта), то катить фичу мы не будем. Поэтому нас как раз интересует односторонняя гипотеза.
Проблема состоит в том, что со временем людей становится больше, но и дисперсия становится больше, в следующей статье будет пример. Поэтому нельзя утверждать, что со временем MDE станет лучше. У нас на практике MDE в какой-то момент просто перестает меняться или меняется очень слабо.
Все остальное правда, эффект будет меньше MDE, но этот вывод никак не зависит от мониторинга MDE
По поводу проверки на нормальность: нам нужна нормальность среднего по выборке, а среднее у выборки всего одно) А как по одному значению определить, является ли это значение из нормального распределения, я не знаю) Точнее представляю, как это можно сделать, но не совсем через Шапиро-Уилка.
Далее, даже если бы Шапиро-Уилка не отверг гипотезу о ненормальности выборки средних (если бы была выборка средних), то это не значит, что t-test здесь отработает корректно (можно привести пример). Поэтому имеет смысл проверять работоспособность самого критерия, а не нормальность, потому что интересует нас именно корректность критерия.
Теперь, про убирание крупных клиентов – да, можно изначально спроектировать эксперимент так, чтобы топ юзеры в нем не участвовали. Но зачем, если провести можно на всех юзерах? И в случае, когда на всех юзерах мы получили серый результат (а лучше – увидели, что MDE сильно больше ожидаемого, посчитанного на исторических данных), тогда можно перейти к критерию, который не учитывает топ юзеров на пред периоде.
Про применение t-test на реальных данных: я как раз указываю, как проверить корректность использования этого (да и вообще любого) критерия на реальных данных, чтобы убедиться, что вы можете использовать этот критерий для анализа AB-тестов в своей компании. Правда, конечно, от человеческих ошибок типа округления это не спасет, тут вообще мало что спасет на первый взгляд)
Я не очень понимаю, зачем здесь мониторить MDE? Когда я строю доверительный интервал в определенный момент времени, я понимаю, что в alpha проценте случаев эффект будет не лежать в его границах, но как здесь мониторинг MDE позволит что-то сказать точнее? Мониторинг MDE имеет смысл для изначального определения срока теста, но об этом я расскажу во второй части статьи (выйдет на следующей неделе)
1) Питон более популярный язык программирования, поэтому в таком случае код смогут понять большее количество людей
2) Я не вижу никакого преимущества R перед питоном. По крайней мере в тех задачах, которые мне попадались. Можете привести пример стат.критерия или визуализации, которых сейчас не были бы реализованы на питоне, но реализованы на R?
Про «раскатили тест» вам все верно сказали до меня. Хочу заметить, что используем этот термин не только мы, но и многие другие компании, достаточно загуглить эту фразу в поисковике.
Про смелое утверждение о применимости т-теста для данных не попадающих под нормальное распределение: я описываю в статье, какие условия на самом деле требует t-test для корректной работы. Кроме того, я демонстрирую на примере выборок из экспоненциального распределения, что t-test работает. Поэтому, если у вас есть нарекания к примеру или объяснение, почему он некорректен, то мне будет интересно подискутировать на эту тему)
Про «спорно выглядящий метод фильтрации outliers»: я привожу примеры, в каких случаях этот метод может привести к ошибкам, а когда его можно применять в статье. Причем в общих рекомендациях (предпоследнее предложение в статье) я снова предупреждаю, что этот метод опасен и его стоит валидировать. Так что моя совесть чиста.
Про то, что статья получилась огромной – это правда, но это только половина) Вторая половина будет опубликована при хорошем раскладе на этой неделе. Статью можно было бы подробить на более мелкие части, но мне показалось, что тогда сложнее было бы вспоминать, что было в предыдущих статьях. Вполне возможно, здесь я был не прав.
Надеюсь я смог ответить на ваши вопросы и замечания, готов отвечать и далее)
К сожалению, это не правда( При корректности гипотезы H0 pvalue распределено равномерно на промежутке [0,1], док-во можно прочесть здесь
Поэтому при H0, P(p-value < x) = x для любого x в промежутке [0,1]. В данном случае я смотрел P(p-value < 0.05) = 0.05 потому что это значит, что критерий можно или нельзя использовать на уровне значимости 5%. Есть правило: "критерий отвергается на уровне значимости alpha" <=> p-value < alpha (почитать можно тут). P(p-value < 0.05) = 0.05 означает, что по этому правилу при корректности нулевой гипотезы я буду ошибаться лишь в 5% случаев, о чем нам и говорит выбранная ошибка 1 рода в 5%.
Ага, но судя по википедии этот критерий проверяет равенство распределений, а не средних. Я не погружался глубоко в тему, поэтому не могу утверждать, правы вы или нет, используя такой критерий для проверки равенства средних
Единственное, что могу посоветовать - реализовать Монте-Карло проверку и убедиться на разных примерах, что FPR = 5%. А также можно сравнить, насколько он лучше чем t-test, посмотрев мощность на одних и тех же примерах.
Если этот критерий корректен и более мощный, чем t-test, то все отлично и это очень круто) Тогда вы могли бы написать про это статью)
Добрый день! К сожалению здесь не подскажу: не использовал этот критерий в работе и не разбирался в нем(
Но кажется Манн-Уитни это аналог этого критерия, когда у вас всего 2 выборки. Поэтому все примеры из этой статьи кажется можно перенести на 3 и более выборок, чтобы показать те же выводы, что были сделаны в этой статье.
Добрый день! Спасибо за критику!
Главное, что я хотел, когда писал статью, чтобы читатели вынесли из статьи, что этот критерий нельзя использовать для анализа AB-тестов. И это полностью согласуется с вашим аргументом: вы никогда не можете утверждать на практике, что у вас просто произошло смещение типа F1(x) = F2(x + δ).
Если вы знали это с самого начала, то основная часть статьи не для вас) Могу лишь порекомендовать прочесть третью часть статьи под заголовком "Когда Манн-Уитни работает?", где я как раз рассказываю про пример со смещением, а также с умножением на константу.
Также было бы интересно подискутировать на тему неправильной интерпретации p-value: я сам большой сторонник того, что его надо правильно понимать, поэтому хотелось бы узнать, где именно вам кажется, что я делаю что-то не так? Можете математически это аргументировать, исходя из определения p-value?
Спасибо большое за фидбек!)
Добрый день! Интересная идея! Сразу несколько вопросов
Для проверки какой гипотезы вы хотите использовать такой критерий?
Как он формулируется? Какие у него критические области Можно ли где-то про него прочесть?
Проверял ли вы критерий на корректность?
Про бутстрап:
1) мы используем центральный бутстрап (который видимо BCa). Но я не обнаруживал на выборках размера более 10к разницы в 3 методах построения доверительного интервала бутстрапом, так что можно юзать любой (если предварительно проверишь его на своих данных). По поводу скинутого примера - см пункт 3
2) Все подводные камни легко обнаружить, если проверить свой критерий. Этому была посвящана большая часть первой статьи и это самое важное, что надо помнить! По поводу большого количества бутстрап выборок - мы используем 10к, у нас все работает на реальных и искусственных данных.
3) По поводу статьи: все бы хорошо, но пример некорректный) Просто в качестве простого чекера: всегда стоит запустить на сгенерированных данных t-test. Если он не работает -- есть повод задуматься о корректности примера.
Автор генерирует в своих примерах выборки с зависимыми элементами , когда использует multinomial респределение для генерации размера выборок (https://github.com/yanirs/yanirs.github.io/blob/master/talks/bootstrapping-the-right-way/notebook.ipynb). Достаточно прочесть вики https://en.wikipedia.org/wiki/Multinomial_distribution , там показано, что есть зависимость между элементами (раз ненулевая ковариация)
3.5) Если исправить пример автора, то все бутстрапы работают на выборках размера 1000 (на других размерах не проверял)
4) "Не хотите думать — используйте бутстрап!" <- да, я действительно так считаю) Но, конечно же, при условии, что этот бутстрап будет проверен на реальных/искусственных данных.
Про CUPED: я пересмотрел статью еще раз, и не увидел, чтобы они явно подчеркивали, что вычитаемое среднее одно и то же (кроме одного упоминания, что вычитание среднего не влияет на разницы метрик). Может плохо читаю, но я считаю, что это очень важно было подчеркнуть, а не показывать на примерах в коде.
Не, это порочная практика) Все мы можем ошибаться, и это нормально (как пример - статья выше про бутстрап). Плюс даже те, кто шарят статы, могут не понять, почему нельзя вычитать 2 разных средних в тесте и в контроле? Или почему нельзя для мат.ожа такой метрики построить дов интервал? И здесь возникает ровно та же проблема, что и в статье про бутстрап - зависимость элементов выборки, что является совсем нетривиальной проблемой, которую сложно заметить. Здесь поможет не знание статистики, а лишь опыт.
Плюс всегда стоит стараться уменьшить до минимума количество недопомониманий от статьи. И вот здесь, как мне кажется, booking не прав) Вот второй пример - https://medium.com/statistics-experiments/cuped-или-увеличение-чувствительности-метрики-de7183fc964c и здесь наверняка точно также имелось в виду, что среднее одно и то же на предпериоде. Но в обоих статьях не объяснено, почему нельзя вычитать разные средние на тесте и контроле. Или зачем вообще они вычитают это среднее .
А ну и про Манна-Уитни: я еще у вк видел статью, где они также рекламирвали этот критерий) В январе (надеюсь...) я опубликую более подробную статью про этот критерий, где прям по полочкам разложу, в чем проблема этого критерия, почему его вообще используют и к чему на практике он приводит)
Спасибо за вопрос! А то никаких комментариев по той статье не было, уже грустить начал)
Да, изначально была эта статья, плюс была статья про CUPED на русском медиуме. При применении критерия у Букинга ошибки нет, но есть несколько но:
1) Они вводят в заблуждение читателя, приводя пример с вычитанием среднего. Зачем вообще это делать? Какой от этого профит?
2) Приводя это в пример, и говоря, что так выглядит cuped-метрика, я думаю многие могли начать сокращать так вариацию для построения доверительного интервала для мат. ожа одной метрики, без сравнения с тестом. И это реально бы работало, только это неверно.
3) Ну и главное: не все хорошо шарят за код в sql и в спарке и могли прочесть лишь строчки с формулами, где написано вычитать среднее, и уже в этом случае прийти именно к тому неправильному CUPED-критерию, описанному в статье.
Спасибо за фидбек!
Интересный вопрос)
Про CUNOPAC: сходу мне сложно предположить, почему мощности разнятся( Предполагаю, что дело в разных подходах алгоритма: uplift модель, если бы мы использовали предсказания не на всем датасете, а лишь на части (тестовые предсказания на тестовых пользователях, контрольные предсказания на контрольных пользователях) -- ничем не отличался бы от обычного ttest. CUNOPAC же смотрит на остатки e_t, e_c при условии, что мы предсказывали бы все без знания, кто в тесте и в контроле. Раз CUPED более мощный чем TTEST, то логично, что алгоритм основанный на CUPED может быть мощнее uplift модели (который дает результаты как t-test, если бы не увеличение датасета в 2 раза);
Про CUMPED - те же рассуждения. Плюс здесь нет шума от ML-модели, которая могла начать плохо предсказывать.
Ух, есть такая идея) Но боюсь что по времени успею лишь весной(
Хах, нет конечно) Хотя, чаще всего, именно для этого используют AB-тесты)
На самом деле AB-тестирование нужно практически всегда для принятия любого продуктовго решения, например:
Давать ли пользователям скидки или нет?
Новые услуги продвижения работают лучше старых или нет?
Нужно ли вводить больше фильтров на сайте?
Работает ли рекламная компания?
Работают ли красивые цены на услуги на сайте или нет?
Ну и конечно, как Вы верно отметили, для проверки нового дизайна тоже используют AB
Мы не знаем какой результат будет в эксперимента, но мы знаем чего мы хотим: улучшения метрики (а значит односторонний результат). Если мы получим любой другой результат (к примеру, сильное падение метрики или отсутсвие эффекта), то катить фичу мы не будем. Поэтому нас как раз интересует односторонняя гипотеза.
Да, в результатах представлен как раз второй случай, с огромным количеством 0. Как тут видно, CUPED помог
Проблема состоит в том, что со временем людей становится больше, но и дисперсия становится больше, в следующей статье будет пример. Поэтому нельзя утверждать, что со временем MDE станет лучше. У нас на практике MDE в какой-то момент просто перестает меняться или меняется очень слабо.
Все остальное правда, эффект будет меньше MDE, но этот вывод никак не зависит от мониторинга MDE
Про раскатку: я в гугле искал) раскатить тест
По поводу проверки на нормальность: нам нужна нормальность среднего по выборке, а среднее у выборки всего одно) А как по одному значению определить, является ли это значение из нормального распределения, я не знаю) Точнее представляю, как это можно сделать, но не совсем через Шапиро-Уилка.
Далее, даже если бы Шапиро-Уилка не отверг гипотезу о ненормальности выборки средних (если бы была выборка средних), то это не значит, что t-test здесь отработает корректно (можно привести пример). Поэтому имеет смысл проверять работоспособность самого критерия, а не нормальность, потому что интересует нас именно корректность критерия.
Теперь, про убирание крупных клиентов – да, можно изначально спроектировать эксперимент так, чтобы топ юзеры в нем не участвовали. Но зачем, если провести можно на всех юзерах? И в случае, когда на всех юзерах мы получили серый результат (а лучше – увидели, что MDE сильно больше ожидаемого, посчитанного на исторических данных), тогда можно перейти к критерию, который не учитывает топ юзеров на пред периоде.
Про применение t-test на реальных данных: я как раз указываю, как проверить корректность использования этого (да и вообще любого) критерия на реальных данных, чтобы убедиться, что вы можете использовать этот критерий для анализа AB-тестов в своей компании. Правда, конечно, от человеческих ошибок типа округления это не спасет, тут вообще мало что спасет на первый взгляд)
Я не очень понимаю, зачем здесь мониторить MDE? Когда я строю доверительный интервал в определенный момент времени, я понимаю, что в alpha проценте случаев эффект будет не лежать в его границах, но как здесь мониторинг MDE позволит что-то сказать точнее? Мониторинг MDE имеет смысл для изначального определения срока теста, но об этом я расскажу во второй части статьи (выйдет на следующей неделе)
Почему питон, а не R:
1) Питон более популярный язык программирования, поэтому в таком случае код смогут понять большее количество людей
2) Я не вижу никакого преимущества R перед питоном. По крайней мере в тех задачах, которые мне попадались. Можете привести пример стат.критерия или визуализации, которых сейчас не были бы реализованы на питоне, но реализованы на R?
3) Питон в несколько раз быстрее R. https://towardsdatascience.com/is-python-faster-than-r-db06c5be5ce8
Про «раскатили тест» вам все верно сказали до меня. Хочу заметить, что используем этот термин не только мы, но и многие другие компании, достаточно загуглить эту фразу в поисковике.
Про смелое утверждение о применимости т-теста для данных не попадающих под нормальное распределение: я описываю в статье, какие условия на самом деле требует t-test для корректной работы. Кроме того, я демонстрирую на примере выборок из экспоненциального распределения, что t-test работает. Поэтому, если у вас есть нарекания к примеру или объяснение, почему он некорректен, то мне будет интересно подискутировать на эту тему)
Про «спорно выглядящий метод фильтрации outliers»: я привожу примеры, в каких случаях этот метод может привести к ошибкам, а когда его можно применять в статье. Причем в общих рекомендациях (предпоследнее предложение в статье) я снова предупреждаю, что этот метод опасен и его стоит валидировать. Так что моя совесть чиста.
Про то, что статья получилась огромной – это правда, но это только половина) Вторая половина будет опубликована при хорошем раскладе на этой неделе. Статью можно было бы подробить на более мелкие части, но мне показалось, что тогда сложнее было бы вспоминать, что было в предыдущих статьях. Вполне возможно, здесь я был не прав.
Надеюсь я смог ответить на ваши вопросы и замечания, готов отвечать и далее)