Привет, товарищи статистики!
С праздником труда, товарищи! (но, надеюсь, без труда на сегодня)
Недавно в аналитических чатах, - рабочих и публичных, - скидывали ссылку на курс по прикладной статистике от Авито. Ребята из Авито заслуженно считаются одними из ведущих аналитиков в РФ; время от времени перечитываю статьи их ведущего аб-тестера, Димы Лунина, что и вам советую. В общем, не мог не ознакомиться с курсом, так как:
а) интересно, как ту или иную тему подают коллеги по цеху, как выстроена подача, а главное - логика повествования
б) интересно найти новые определения (с неожиданной стороны) известного
Надо понимать, что ни я, ни ребята не придумывали статистику; мы когда-то сами впервые открывали учебники, статьи, видеоуроки. Теперь настало наше время передавать свой опыт, а передавать мы его будет с учетом не только, как нам это подавали, но и как мы это осмысливали и как практиковали. За подачей я вижу практику и решаемые проблемы, это же переложимо и для ребят из Авито. Итак, впечатления:
Во-первых, хочется сказать, это то, что я полностью согласен с тем, что они написали на лендинге:
"90% - применение наиболее частых критериев; 5% - критериев, которые не на слуху; 5% - кастомной жести". Так оно и есть!
Во-вторых, скорее всего неспроста после вводной части про критерий и мощность переходят на биномиальный тест и его апроксимацию. Мне это говорит о том, что путь промышленной проверки стат. гипотез у Авито начинался не с A/B-тестов, а мониторинга метрик: вероятно, они следили за поведением всяких CR'ов в регистрации, оплаты и пр. в рамках некоторого временного окна соотнося с предпериодом, который служил историческими данными, наблюдали отклонения. А первые же A/B были на тоталах по CR (как и у всех без сырья по юзерам).
Интересно! Отдельно бы отметил простую подачу поправки Ейтса и упоминание про дов.интервалы Вилсона: что еще раз говорит о фокусе Авито.
В-третьих, Тимур (ведущий) рассказывал все с большим энтузиазмом, видно, что ему по душе это, нескучно + лично меня мотивирует!
Но кому я мог бы его порекомендовать?
1) Точно не новичкам.
- Ребята полуакадемичны, сразу идут с тяжелых фигур и с тем, которые волнуют именно их, это заметно (но в этом есть плюс, о нем ниже), а потому у вас должно быть на входе сразу базовый мат. аппарат с пониманием, например, что такое биномиальное распределение; они объясняют, но видят в аудитории не новичков; они прямо говорят на лендинге, что делать, если возникнут вопросы: "Подать заявку на поступление в Академию Аналитиков Авито =)"
- используют питон, подчеркивая, что ключевой навык будет такой: "студент умеет использовать специализированные библиотеки Python для решения статистических задач". Отмечу, что для решения стат. задач надо понимать статистику и то, что представляют собой все эти критерии, при этом весьма досконально. Библиотеки же являются просто удобным инструментом; сами по себе роли не играют.
Итого, требования на входе: крепкая мат.база + питон. Новички или те, кто не первый месяц ломает зубы о статистику, проходите мимо, я серьезно, может демотивировать.
2) Курс скорее подходит как доп. материал по темам статистики сильным джунам-аналитикам и выше по грейду.
3) НО! По-настоящему он может быть вам полезен, если... вы хотите работать в Авито. Если вы уделите внимание тестам, про которые они рассказывают, - особенно связанными с метриками отношения (как есть и в агреггированом виде), - и не постесняетесь взять их слова себе в уста, то у вас будет больше шансов на успех в собеседовании с ними. Темы курса - это то, что они будут спрашивать с особой тщательностью (я б так точно бы сделал); не удивлюсь, если этот курс пополнит рекомендованных список тем для кандидатов в их HR-секции.
Напоследок, надо сказать ребятам из Авито большое спасибо за вклад в образование! 👏
P.S. Их материал в том числе сказался на моем курсе, что тут скажешь, еще +1 лекция, хорошо-хорошо, убедили, биномиальное и Ко теперь в базе. Ох, я уж и забыл, что такое весь выходной потратить на презентацию.
С праздником труда, товарищи! (но, надеюсь, без труда на сегодня)
Недавно в аналитических чатах, - рабочих и публичных, - скидывали ссылку на курс по прикладной статистике от Авито. Ребята из Авито заслуженно считаются одними из ведущих аналитиков в РФ; время от времени перечитываю статьи их ведущего аб-тестера, Димы Лунина, что и вам советую. В общем, не мог не ознакомиться с курсом, так как:
а) интересно, как ту или иную тему подают коллеги по цеху, как выстроена подача, а главное - логика повествования
б) интересно найти новые определения (с неожиданной стороны) известного
Надо понимать, что ни я, ни ребята не придумывали статистику; мы когда-то сами впервые открывали учебники, статьи, видеоуроки. Теперь настало наше время передавать свой опыт, а передавать мы его будет с учетом не только, как нам это подавали, но и как мы это осмысливали и как практиковали. За подачей я вижу практику и решаемые проблемы, это же переложимо и для ребят из Авито. Итак, впечатления:
Во-первых, хочется сказать, это то, что я полностью согласен с тем, что они написали на лендинге:
"90% - применение наиболее частых критериев; 5% - критериев, которые не на слуху; 5% - кастомной жести". Так оно и есть!
Во-вторых, скорее всего неспроста после вводной части про критерий и мощность переходят на биномиальный тест и его апроксимацию. Мне это говорит о том, что путь промышленной проверки стат. гипотез у Авито начинался не с A/B-тестов, а мониторинга метрик: вероятно, они следили за поведением всяких CR'ов в регистрации, оплаты и пр. в рамках некоторого временного окна соотнося с предпериодом, который служил историческими данными, наблюдали отклонения. А первые же A/B были на тоталах по CR (как и у всех без сырья по юзерам).
Интересно! Отдельно бы отметил простую подачу поправки Ейтса и упоминание про дов.интервалы Вилсона: что еще раз говорит о фокусе Авито.
В-третьих, Тимур (ведущий) рассказывал все с большим энтузиазмом, видно, что ему по душе это, нескучно + лично меня мотивирует!
Но кому я мог бы его порекомендовать?
1) Точно не новичкам.
- Ребята полуакадемичны, сразу идут с тяжелых фигур и с тем, которые волнуют именно их, это заметно (но в этом есть плюс, о нем ниже), а потому у вас должно быть на входе сразу базовый мат. аппарат с пониманием, например, что такое биномиальное распределение; они объясняют, но видят в аудитории не новичков; они прямо говорят на лендинге, что делать, если возникнут вопросы: "Подать заявку на поступление в Академию Аналитиков Авито =)"
- используют питон, подчеркивая, что ключевой навык будет такой: "студент умеет использовать специализированные библиотеки Python для решения статистических задач". Отмечу, что для решения стат. задач надо понимать статистику и то, что представляют собой все эти критерии, при этом весьма досконально. Библиотеки же являются просто удобным инструментом; сами по себе роли не играют.
Итого, требования на входе: крепкая мат.база + питон. Новички или те, кто не первый месяц ломает зубы о статистику, проходите мимо, я серьезно, может демотивировать.
2) Курс скорее подходит как доп. материал по темам статистики сильным джунам-аналитикам и выше по грейду.
3) НО! По-настоящему он может быть вам полезен, если... вы хотите работать в Авито. Если вы уделите внимание тестам, про которые они рассказывают, - особенно связанными с метриками отношения (как есть и в агреггированом виде), - и не постесняетесь взять их слова себе в уста, то у вас будет больше шансов на успех в собеседовании с ними. Темы курса - это то, что они будут спрашивать с особой тщательностью (я б так точно бы сделал); не удивлюсь, если этот курс пополнит рекомендованных список тем для кандидатов в их HR-секции.
Напоследок, надо сказать ребятам из Авито большое спасибо за вклад в образование! 👏
P.S. Их материал в том числе сказался на моем курсе, что тут скажешь, еще +1 лекция, хорошо-хорошо, убедили, биномиальное и Ко теперь в базе. Ох, я уж и забыл, что такое весь выходной потратить на презентацию.
👍14
Привет, товарищи статистики!
Набросок по одному из способов останавливать тест заранее.
Если вы читали пост по подглядыванию в тест, то могли увидеть/предположить, что p-value при верности нулевой гипотезы как будто редко когда последовательно [0.04, 0.039 ... ] находится в рамках уровня значимости (в примере альфа=0.05). И все же такое случается и мы как будто этим можем воспользоваться для предварительной остановки теста.
То есть вместо правила "вижу значимость - останавливаю тест", которое давало больше ошибок 1-го рода, чем уровень значимости, использовать иное правило "вижу стат. значимую последовательность значимых p-value - останавливаю тест", где как будто ошибка 1-го рода на все семейство тестов будет на уровне альфа, а мы при этом сможем останавливать тест раньше времени, если повезет.
Но как понять, какая последовательность p-value будет значима <= alpha? Очевидно, нам нужно распределение, которое отразит частоту p-value подряд при верности нулевой гипотезы.
Вообще, первым делом стоит поискать, а нет ли такого распределения с соответствующей формулой, которое это могло бы описать? Ведь прелесть нашего положения в том, что таких распределений случайных величин предшественники-статистики вывели много (собственно, и тема поста не нова, новое вообще сложно придумать нынче, только переоткрыть старое). В начале-то я думал над геометрическим распределением, переиначивая под нашу задачу: вероятность конкретного кол-ва стат. значимых p-value (успехов) до наступление нестат.значимого (неуспехов): оно имеет вид экспоненциального распределения, то есть чаще всего 1, реже 2, еще реже 3 значения подряд и пр. - то, чего мы и ожидаем.
Проблема только в требований к получению такой случайной величины: все-таки каждое следующее p-value зависимо от своего предыдущего значения, а геометрическое распределение хочет независимые испытания. Поэтому, к сожалению (или я плохо искал, что вероятно), готового варианта не нашлось.
Но такое распределение помогло построить еще один результат работы предтечи: компуктер. А точнее симуляция. Есть, правда, одно но: вычисления были ОЧЕНЬ долгие, а потому есть сомнения в состоятельности распределения (в комментарии); но и пересчитывать сил нет. Что получено, то получено; критическое значение при том же уровне значимости на графике >= 13.
Запускаем новую симуляцию из серии тестов. В ней отрабатывало правило "вижу 13 и более последовательных p-value - останавливаю тест". Итого, были ложноположительные прокрасы при этом правиле + ложноположительные прокрасы в конце теста. На все семейство тестов - в рамках уровня значимости (1.5% в среднем приходилось на правло, 3.5% на исход в конце). Клево? Не совсем. Есть один момент, - помимо сомнений в репрезентативности распределения, - в симуляции не как в жизни: данные для групп поступали по одному за период, одновременно. А в жизни же все равно есть неравномерность в получении данных - допускаю, что она может в целом рушить такую сходимость p-value для вообще какой-то вменяемой проверки, если только эффект не ярковыраженный, что тоже явление нечастое.
Тут-то и начинается работа напильником по доработке метода (вообще любого), когда проявляются такие тонкости с необходимостью лезть в исторические данные. Доработка может стоит уйму времени с сомнительным результатом. С другой стороны это и не подсчет очередного ABс сомнительным бизнес-результатом, а как раз уже повод для исследования. Пока думаю, продолжать или нет.
P.S. Обычным и даже обязательным является и проверка мощности, когда верна HA, но расчеты пока меня позамучили)
Набросок по одному из способов останавливать тест заранее.
Если вы читали пост по подглядыванию в тест, то могли увидеть/предположить, что p-value при верности нулевой гипотезы как будто редко когда последовательно [0.04, 0.039 ... ] находится в рамках уровня значимости (в примере альфа=0.05). И все же такое случается и мы как будто этим можем воспользоваться для предварительной остановки теста.
То есть вместо правила "вижу значимость - останавливаю тест", которое давало больше ошибок 1-го рода, чем уровень значимости, использовать иное правило "вижу стат. значимую последовательность значимых p-value - останавливаю тест", где как будто ошибка 1-го рода на все семейство тестов будет на уровне альфа, а мы при этом сможем останавливать тест раньше времени, если повезет.
Но как понять, какая последовательность p-value будет значима <= alpha? Очевидно, нам нужно распределение, которое отразит частоту p-value подряд при верности нулевой гипотезы.
Вообще, первым делом стоит поискать, а нет ли такого распределения с соответствующей формулой, которое это могло бы описать? Ведь прелесть нашего положения в том, что таких распределений случайных величин предшественники-статистики вывели много (собственно, и тема поста не нова, новое вообще сложно придумать нынче, только переоткрыть старое). В начале-то я думал над геометрическим распределением, переиначивая под нашу задачу: вероятность конкретного кол-ва стат. значимых p-value (успехов) до наступление нестат.значимого (неуспехов): оно имеет вид экспоненциального распределения, то есть чаще всего 1, реже 2, еще реже 3 значения подряд и пр. - то, чего мы и ожидаем.
Проблема только в требований к получению такой случайной величины: все-таки каждое следующее p-value зависимо от своего предыдущего значения, а геометрическое распределение хочет независимые испытания. Поэтому, к сожалению (или я плохо искал, что вероятно), готового варианта не нашлось.
Но такое распределение помогло построить еще один результат работы предтечи: компуктер. А точнее симуляция. Есть, правда, одно но: вычисления были ОЧЕНЬ долгие, а потому есть сомнения в состоятельности распределения (в комментарии); но и пересчитывать сил нет. Что получено, то получено; критическое значение при том же уровне значимости на графике >= 13.
Запускаем новую симуляцию из серии тестов. В ней отрабатывало правило "вижу 13 и более последовательных p-value - останавливаю тест". Итого, были ложноположительные прокрасы при этом правиле + ложноположительные прокрасы в конце теста. На все семейство тестов - в рамках уровня значимости (1.5% в среднем приходилось на правло, 3.5% на исход в конце). Клево? Не совсем. Есть один момент, - помимо сомнений в репрезентативности распределения, - в симуляции не как в жизни: данные для групп поступали по одному за период, одновременно. А в жизни же все равно есть неравномерность в получении данных - допускаю, что она может в целом рушить такую сходимость p-value для вообще какой-то вменяемой проверки, если только эффект не ярковыраженный, что тоже явление нечастое.
Тут-то и начинается работа напильником по доработке метода (вообще любого), когда проявляются такие тонкости с необходимостью лезть в исторические данные. Доработка может стоит уйму времени с сомнительным результатом. С другой стороны это и не подсчет очередного AB
P.S. Обычным и даже обязательным является и проверка мощности, когда верна HA, но расчеты пока меня позамучили)
👍5
Привет, товарищи статистики!
Пониманием процедуру последовательного тестирование mSPRT в 5 частях, часть-1
Разговор Димой, который ведет канал (подписывайтесь, ставьте лайки, так, что там еще по сценарию), а также его посты, смотивировали написать цикл статей про mSRPT. Картинки размещу в комментариях, хотя по сути они не нужны.
Итак, последовательное тестирование (Sequential Testing) это процедура проверки гипотезы по мере накоплений данных, в наших реалиях - во время проведения теста до его установленной даты окончания. Основная цель - ускорение процесса тестирования гипотезы, но так, чтобы ложноложительных прокрасов было не более заданного уровня значимости, а не так, как это может при наивном подглядывании. Одной из таких процедур, для пущей вводной, можно считать как раз проверку, например, последовательности p-value, о котором был прошлый пост.
Но есть методы предтеч, которые более красивы, продвинутее и вообще. Один из таких это mSPRT, о нем и будем говорить, но прежде, нам нужно забазироваться, вспомнив:
- Шансы
- Отношение шансов
- Bayesian Factor
- Likelihood (Правдоподобие).
- Likelihood Ratio
- SPRT
- еще элементы из байесовской статистики (но уже походу mSRPT)
Итак, начнем.
Шанс:
Всю свою жизнь живу в Петербурге, каждый год СМИ твердят о том, что вот уж это лето будем жарким. Но память о "былых летах" за период лет в 10 дает примерно такой расклад:
- 3 лета были жаркими
- 7 были холодными
3 к 7, что и это будет жарким. Это и есть шансы, в данном случае жаркого лета к холодному.
Давайте стандартизируем через минимальное значение из этих двух, то есть через 3. Было "3 к 7", а стало "3/3 к 7/3"
-> 1 к 2.5 - так ведь привычнее, да? Все эти "1 к 100" вот про тоже самое.
1 к 2.5 -> на каждое жаркое лето приходится в среднем по 2.5 холодных, раскладывается это так [жаркое, холодное, холодное, жаркое, холодное, холодное, холодное, ...] и так в бесконечность на базе текущих данных.
Отношение шансов
Где Петербург, там и Венеция, - подозреваю, что в тамошнем городе шансы жаркого лета 9:1 или 1:011
Поделим шансы Венеции на шансы Питеры: 9/1 / 3/7 = 21 -> у Венеции в 21 раз больше шансов лета здорового человека. Эх, Италия...
Bayesian Factor
1. Естественно, какое-то событие может, - мое любимое слово, - перевзвесить гипотезу о жарком лете. Допустим погода в мае, а именно жаркий май.
P(Ж.Лето|Ж.Май)=P(Ж.Май|Ж.Лето)*P(Ж.Лето) / P(Ж.Май) - допустим, перезвесили и получили постериор.
2. Теперь можно подсчитать соотношение постериора с приором (вероятностью ДО перевзвешивания) с аналоличной интерпретацией, как в отношении шансов:
P(Ж.Лето|Ж.Май) / P(Ж.Лето) - допустим = 3. Это значение можно интерпретировать как прирост информации в виду новых данных, а также "усиление" нашей изначальной гипотезы.
3. Но в A/B мы оприруем H0 и HA, в нашем примере HA - это холодное лето, P(Х.Лето):
P(Х.Лето|Ж.Май)=P(Ж.Май|Х.Лето)*P(Х.Лето) / P(Ж.Май)
Тогда отношение двух постериоров это:
P(Ж.Май|Ж.Лето)*P(Ж.Лето) / P(Ж.Май)
/
P(Ж.Май|Х.Лето)*P(Х.Лето) / P(Ж.Май)
По правилу деления у нас вторая дробь переворачивается и P(Ж.Май) сокращается.
P(Ж.Май|Ж.Лето)*P(Ж.Лето) / P(Ж.Май|Х.Лето)*P(Х.Лето) = K
Готово: мы подсчитали соотношение, а точнее коэффициент K - "поддержку" постериорной гипотезы жаркого лета против гипотезы холодного лета с учетом данных. Чем K больше, тем кратно больше поддержка гипотеза о жарком лете (в общем виде - о гипотезе в числителе).
Статистики Kass и Raftery предлагают так интерпретировать K при сравнении двух гипотез:
от 1 до 3.2 - "не стоит даже упоминания"
3.2 - 10 -> "что-то значимое"
10 - 100 -> "сильное доказательство" (в пользу гипотезы в числителе)
>100 -> "железобетонно" (числитель лучше знаменателя)
P.S. Судя по снегу в мае, это лето снова будет холодным. П - Питер, чтоб его.
Пониманием процедуру последовательного тестирование mSPRT в 5 частях, часть-1
Разговор Димой, который ведет канал (подписывайтесь, ставьте лайки, так, что там еще по сценарию), а также его посты, смотивировали написать цикл статей про mSRPT. Картинки размещу в комментариях, хотя по сути они не нужны.
Итак, последовательное тестирование (Sequential Testing) это процедура проверки гипотезы по мере накоплений данных, в наших реалиях - во время проведения теста до его установленной даты окончания. Основная цель - ускорение процесса тестирования гипотезы, но так, чтобы ложноложительных прокрасов было не более заданного уровня значимости, а не так, как это может при наивном подглядывании. Одной из таких процедур, для пущей вводной, можно считать как раз проверку, например, последовательности p-value, о котором был прошлый пост.
Но есть методы предтеч, которые более красивы, продвинутее и вообще. Один из таких это mSPRT, о нем и будем говорить, но прежде, нам нужно забазироваться, вспомнив:
- Шансы
- Отношение шансов
- Bayesian Factor
- Likelihood (Правдоподобие).
- Likelihood Ratio
- SPRT
- еще элементы из байесовской статистики (но уже походу mSRPT)
Итак, начнем.
Шанс:
Всю свою жизнь живу в Петербурге, каждый год СМИ твердят о том, что вот уж это лето будем жарким. Но память о "былых летах" за период лет в 10 дает примерно такой расклад:
- 3 лета были жаркими
- 7 были холодными
3 к 7, что и это будет жарким. Это и есть шансы, в данном случае жаркого лета к холодному.
Давайте стандартизируем через минимальное значение из этих двух, то есть через 3. Было "3 к 7", а стало "3/3 к 7/3"
-> 1 к 2.5 - так ведь привычнее, да? Все эти "1 к 100" вот про тоже самое.
1 к 2.5 -> на каждое жаркое лето приходится в среднем по 2.5 холодных, раскладывается это так [жаркое, холодное, холодное, жаркое, холодное, холодное, холодное, ...] и так в бесконечность на базе текущих данных.
Отношение шансов
Где Петербург, там и Венеция, - подозреваю, что в тамошнем городе шансы жаркого лета 9:1 или 1:011
Поделим шансы Венеции на шансы Питеры: 9/1 / 3/7 = 21 -> у Венеции в 21 раз больше шансов лета здорового человека. Эх, Италия...
Bayesian Factor
1. Естественно, какое-то событие может, - мое любимое слово, - перевзвесить гипотезу о жарком лете. Допустим погода в мае, а именно жаркий май.
P(Ж.Лето|Ж.Май)=P(Ж.Май|Ж.Лето)*P(Ж.Лето) / P(Ж.Май) - допустим, перезвесили и получили постериор.
2. Теперь можно подсчитать соотношение постериора с приором (вероятностью ДО перевзвешивания) с аналоличной интерпретацией, как в отношении шансов:
P(Ж.Лето|Ж.Май) / P(Ж.Лето) - допустим = 3. Это значение можно интерпретировать как прирост информации в виду новых данных, а также "усиление" нашей изначальной гипотезы.
3. Но в A/B мы оприруем H0 и HA, в нашем примере HA - это холодное лето, P(Х.Лето):
P(Х.Лето|Ж.Май)=P(Ж.Май|Х.Лето)*P(Х.Лето) / P(Ж.Май)
Тогда отношение двух постериоров это:
P(Ж.Май|Ж.Лето)*P(Ж.Лето) / P(Ж.Май)
/
P(Ж.Май|Х.Лето)*P(Х.Лето) / P(Ж.Май)
По правилу деления у нас вторая дробь переворачивается и P(Ж.Май) сокращается.
P(Ж.Май|Ж.Лето)*P(Ж.Лето) / P(Ж.Май|Х.Лето)*P(Х.Лето) = K
Готово: мы подсчитали соотношение, а точнее коэффициент K - "поддержку" постериорной гипотезы жаркого лета против гипотезы холодного лета с учетом данных. Чем K больше, тем кратно больше поддержка гипотеза о жарком лете (в общем виде - о гипотезе в числителе).
Статистики Kass и Raftery предлагают так интерпретировать K при сравнении двух гипотез:
от 1 до 3.2 - "не стоит даже упоминания"
3.2 - 10 -> "что-то значимое"
10 - 100 -> "сильное доказательство" (в пользу гипотезы в числителе)
>100 -> "железобетонно" (числитель лучше знаменателя)
P.S. Судя по снегу в мае, это лето снова будет холодным. П - Питер, чтоб его.
❤5🔥1
Понимаем процедуру последовательного тестирование mSPRT, часть-2
Likelihood (Правдоподобие).
Вводная:
Мы не раз пересекались с моим другом, Петр Ермаковом, попить пива, но правда в том, что чтобы вытащить меня на встречу, Пете надо насколько раз меня об этом спрашивать. Отсюда ему примерно надо раз 7 об этом меня спросить, чтобы я ответил утвердительно.
Значит, у Пети есть представление о вероятности о моем согласии
P("Да" на вопрос "Пойдем пить пиво?") = 1/7
Очевидно, что спроси он других этот вопрос, была бы и другая вероятность.
То есть, это именно я обладаю такой вероятность, обозначу себя за θ (тета):
P(θ) = 1/7
Так как Петя также занимается статистикой, то он может прикинуть вероятность неудачных попыток до моего согласия, получается экспоненциальное распределение (убедитесь сами, подставив 1/7):
0 (сразу) - 0.14
1 (то есть согласен буду на 2-м обращении) - 0.12
и так далее.
Ситуация:
И вот однажды Пете звонит некто с моим голосом и просит денег. Подозрительно. Петр решает сделать проверку: "Пойдешь пиво пить?" - в ответ: "Да".
Первый ход мысли:
"Вероятность, что если это Серега, то он согласится сразу = 0.14"
P(сразу|θ) = 0.14. Но с другой стороны: насколько вероятно, что если собеседник согласился сразу, то это Серега?
Обратите внимание, вместо "сразу|θ" мы теперь рассуждаем о "θ|сразу". Итого, ответ: настолько же -> P(θ|сразу) = 0.14, только P при такой постановке меняется на L от слова Likelihood:
L(θ|сразу) = 0.14
Второй ход мысли: "Если это не Серега, то кто? Мошенник? А какова вероятность согласия сразу, если это мошенник?"
Петр предположил, что мошенники в принципе на вопросы вероятнее всего соглашаются, чтобы не разводить полемику: P(θ_2) = 9/10. Отсюда вероятность согласия сразу, раз это мошенник: P(сразу|θ_2) = 0.9. Но с другой стороны: насколько правдоподобно, что если собеседник согласился сразу, то это мошенник? L(сразу|θ_2) = 0.9
Раз у нас два Likelihood, то их можно сравнить!
L(θ_2|сразу) больше, чем L(θ|сразу), значит скорее всего просьба про денег порождена θ_2, то есть мошенником. Иными словами, куда как правдоподобнее, что это мошенник, чем Серега. Кладем трубку, значит.
Есть подставить вместо конкретных лиц, которые отвечали на вопрос, слово "модель", то в статистике правдоподобие или Likelihood это насколько хорошо некий факт, - моментальное согласие попить пиво, - поддерживает предположение о модели, которых у нас их две (кто из сразу ответит "да").
Более того, сам по себе Likelihood бессмысленен: ну и что, что L(θ|сразу) = 0.14? Ну мало, да. Но а у если ввести θ_3 = "кот", тогда L(θ_3|сразу)=0.00... (или 1? Кто знает этих котов). То есть нужно две и более моделей, так как только в сравнении понятие "Правдоподобие" обретает практический смысл.
Likelihood Ratio
Аналогично отношению шансов / Bayesian Factor
L(θ_2|сразу) / L(θ|сразу) - 0.9/0.1 = 9 -> L(θ_2|сразу) в 9 раз "правдоподобнее", вероятнее, если хотите.
По сути (вернув порядок условности -> сразу|θ) это все тот же уровень поддержки одной гипотезы против другой.
База закончена, теперь к первой процедуре, к SPRT
Likelihood (Правдоподобие).
Вводная:
Мы не раз пересекались с моим другом, Петр Ермаковом, попить пива, но правда в том, что чтобы вытащить меня на встречу, Пете надо насколько раз меня об этом спрашивать. Отсюда ему примерно надо раз 7 об этом меня спросить, чтобы я ответил утвердительно.
Значит, у Пети есть представление о вероятности о моем согласии
P("Да" на вопрос "Пойдем пить пиво?") = 1/7
Очевидно, что спроси он других этот вопрос, была бы и другая вероятность.
То есть, это именно я обладаю такой вероятность, обозначу себя за θ (тета):
P(θ) = 1/7
Так как Петя также занимается статистикой, то он может прикинуть вероятность неудачных попыток до моего согласия, получается экспоненциальное распределение (убедитесь сами, подставив 1/7):
0 (сразу) - 0.14
1 (то есть согласен буду на 2-м обращении) - 0.12
и так далее.
Ситуация:
И вот однажды Пете звонит некто с моим голосом и просит денег. Подозрительно. Петр решает сделать проверку: "Пойдешь пиво пить?" - в ответ: "Да".
Первый ход мысли:
"Вероятность, что если это Серега, то он согласится сразу = 0.14"
P(сразу|θ) = 0.14. Но с другой стороны: насколько вероятно, что если собеседник согласился сразу, то это Серега?
Обратите внимание, вместо "сразу|θ" мы теперь рассуждаем о "θ|сразу". Итого, ответ: настолько же -> P(θ|сразу) = 0.14, только P при такой постановке меняется на L от слова Likelihood:
L(θ|сразу) = 0.14
Второй ход мысли: "Если это не Серега, то кто? Мошенник? А какова вероятность согласия сразу, если это мошенник?"
Петр предположил, что мошенники в принципе на вопросы вероятнее всего соглашаются, чтобы не разводить полемику: P(θ_2) = 9/10. Отсюда вероятность согласия сразу, раз это мошенник: P(сразу|θ_2) = 0.9. Но с другой стороны: насколько правдоподобно, что если собеседник согласился сразу, то это мошенник? L(сразу|θ_2) = 0.9
Раз у нас два Likelihood, то их можно сравнить!
L(θ_2|сразу) больше, чем L(θ|сразу), значит скорее всего просьба про денег порождена θ_2, то есть мошенником. Иными словами, куда как правдоподобнее, что это мошенник, чем Серега. Кладем трубку, значит.
Есть подставить вместо конкретных лиц, которые отвечали на вопрос, слово "модель", то в статистике правдоподобие или Likelihood это насколько хорошо некий факт, - моментальное согласие попить пиво, - поддерживает предположение о модели, которых у нас их две (кто из сразу ответит "да").
Более того, сам по себе Likelihood бессмысленен: ну и что, что L(θ|сразу) = 0.14? Ну мало, да. Но а у если ввести θ_3 = "кот", тогда L(θ_3|сразу)=0.00... (или 1? Кто знает этих котов). То есть нужно две и более моделей, так как только в сравнении понятие "Правдоподобие" обретает практический смысл.
Likelihood Ratio
Аналогично отношению шансов / Bayesian Factor
L(θ_2|сразу) / L(θ|сразу) - 0.9/0.1 = 9 -> L(θ_2|сразу) в 9 раз "правдоподобнее", вероятнее, если хотите.
По сути (вернув порядок условности -> сразу|θ) это все тот же уровень поддержки одной гипотезы против другой.
База закончена, теперь к первой процедуре, к SPRT
👍2🔥1
Понимаем процедуру последовательного тестирование mSPRT, часть-3
SPRT
Представим, что мы давненько собираем данные про какую-то метрику, а тут решили запустить тест.
Так как данные собираются давно, то у нас есть консистентные исторические данные, данные до эксперимента. Скажем, они распределены нормально со средней 100, отклонение, условно, 10.
Допустим, что тестируем гипотезу, которая имеет под собой крепкую базу исследований бла-бла-бла, в общем, серьезный шанс дать прирост средней на +30 рублей (отклонение же не затронет).
То есть:
H0 = θ_0 = 100
HA = θ_A = 130
Зная про Likelihood Ratio, вы можете вполне прийти к идее: а давайте при каждом поступлении данных смотреть Likelihood Ratio, это будет нашей очередной статистикой, обозначим как Λ:
Λ = L(data|θ_A)/L(data|θ_B) и смотреть, попадает ли она в некоторый диапазон, например, 3.2 - 10 (Bayesian Factor с его границами интерпретации по Kass и Raftery)?
- Если да, стопаем, отклоняем что нужно и готово)
- Если нет, продолжаем до момента окончания теста по заранее рассчитанному размеру выборок.
Собственно, это тест Wald, который был разработан в 1945 году (!)
Абстракцию низведем до конкретрики, все как мы любим. Data это у нас данные из группы B
День №1:
B = [120]
- Интуивно, как будто правдопободнее, что это из HA (θ_A = 130), чем из H0 (θ_0=100) поэтому мы могли бы получить такое ratio:
Λ = L(data|θ_A)/L(data|θ_B) = 0.13/0.06 = 2.16
0.13 и 0.06 - тут и далее просто из головы беру значения.
День №2:
B = [120, 125]
- Теперь мы должны учесть L и 1-го И 2-го дня. Когда нас просят подсчитать ту же вероятность совместных событий: событие №1 И событие №2, мы умножаем вероятности. С Likelihood тож самое.
Чуть перепишем теперь формулу:
П[ L(data|θ_A)/L(data|θ_B) ], где П - это Product или Произведение.
Раскрыли бы мы это так:
Λ = П[ L(data|θ_A)/L(data|θ_B) ] =
= L(data_день-1|θ_A)*L(data_день-2|θ_A) / L(data_день-1|θ_0)*L(data_день-2|θ_0)
К нашим данным: 125 снова правдопободнее, что это из HA, чем из H0, и даже БОЛЕЕ правдопободнее, чем было 120. Скажем, равно это 0.15. Ну а для H0 менее правдопободнее, 0.02.
Λ =П [ L(data|θ_A)/L(data|θ_B) ] = 0.13*0.15/0.06*0.02= 16.12 - да, вот тут уже даже больше 10 -> "сильное доказательство" (в пользу гипотезы в числителе), отклоняем H0 бла-бла.
Но для закрепления:
День №3:
B = [120, 125, 160]
- 160 хоть и правдоподобнее для HA на фоне H0, но сама вероятность этого в рамках HA все же мала (на правом конце HA), будет 0.01. Для H0 = 0.0001.
Λ = П [ L(data|θ_A)/L(data|θ_B) ] = 0.13*0.15*0.01/0.06*0.02*0.0001= 1625
——
Проблемы такого подхода:
1) Нужны исторические данные для H0
2) Но самая засада - это надо знать точное значение HA
mSPRT как раз и решает п.2 (но тоже не без некоторых предварительных требований).
SPRT
Представим, что мы давненько собираем данные про какую-то метрику, а тут решили запустить тест.
Так как данные собираются давно, то у нас есть консистентные исторические данные, данные до эксперимента. Скажем, они распределены нормально со средней 100, отклонение, условно, 10.
Допустим, что тестируем гипотезу, которая имеет под собой крепкую базу исследований бла-бла-бла, в общем, серьезный шанс дать прирост средней на +30 рублей (отклонение же не затронет).
То есть:
H0 = θ_0 = 100
HA = θ_A = 130
Зная про Likelihood Ratio, вы можете вполне прийти к идее: а давайте при каждом поступлении данных смотреть Likelihood Ratio, это будет нашей очередной статистикой, обозначим как Λ:
Λ = L(data|θ_A)/L(data|θ_B) и смотреть, попадает ли она в некоторый диапазон, например, 3.2 - 10 (Bayesian Factor с его границами интерпретации по Kass и Raftery)?
- Если да, стопаем, отклоняем что нужно и готово)
- Если нет, продолжаем до момента окончания теста по заранее рассчитанному размеру выборок.
Собственно, это тест Wald, который был разработан в 1945 году (!)
Абстракцию низведем до конкретрики, все как мы любим. Data это у нас данные из группы B
День №1:
B = [120]
- Интуивно, как будто правдопободнее, что это из HA (θ_A = 130), чем из H0 (θ_0=100) поэтому мы могли бы получить такое ratio:
Λ = L(data|θ_A)/L(data|θ_B) = 0.13/0.06 = 2.16
0.13 и 0.06 - тут и далее просто из головы беру значения.
День №2:
B = [120, 125]
- Теперь мы должны учесть L и 1-го И 2-го дня. Когда нас просят подсчитать ту же вероятность совместных событий: событие №1 И событие №2, мы умножаем вероятности. С Likelihood тож самое.
Чуть перепишем теперь формулу:
П[ L(data|θ_A)/L(data|θ_B) ], где П - это Product или Произведение.
Раскрыли бы мы это так:
Λ = П[ L(data|θ_A)/L(data|θ_B) ] =
= L(data_день-1|θ_A)*L(data_день-2|θ_A) / L(data_день-1|θ_0)*L(data_день-2|θ_0)
К нашим данным: 125 снова правдопободнее, что это из HA, чем из H0, и даже БОЛЕЕ правдопободнее, чем было 120. Скажем, равно это 0.15. Ну а для H0 менее правдопободнее, 0.02.
Λ =П [ L(data|θ_A)/L(data|θ_B) ] = 0.13*0.15/0.06*0.02= 16.12 - да, вот тут уже даже больше 10 -> "сильное доказательство" (в пользу гипотезы в числителе), отклоняем H0 бла-бла.
Но для закрепления:
День №3:
B = [120, 125, 160]
- 160 хоть и правдоподобнее для HA на фоне H0, но сама вероятность этого в рамках HA все же мала (на правом конце HA), будет 0.01. Для H0 = 0.0001.
Λ = П [ L(data|θ_A)/L(data|θ_B) ] = 0.13*0.15*0.01/0.06*0.02*0.0001= 1625
——
Проблемы такого подхода:
1) Нужны исторические данные для H0
2) Но самая засада - это надо знать точное значение HA
mSPRT как раз и решает п.2 (но тоже не без некоторых предварительных требований).
👍2
Понимаем процедуру последовательного тестирование mSPRT, часть-4
Проблему SPRT, - точное значение HA, - решила модификация за авторством Роббинса в 1970 (!) и которую применили в 2015.
В примере части-3 у нас были исторические данные. Cейчас: у нас есть исторические данные по проведенным тестам, в рамках которых мы способы подсчитать средний положительный эффект и его дисперсию. Если у вас таких данных нет, штош, "подбирайте" свой приор (бич Байеса)
Но допустим, они в наличии: у нас есть возможность аппроксимировать распределение эффекта, приора, с этим средней и отклонением τ. А где распределение (чаще нормальное), там и вероятность.
1) Тут для простоты пускай распределение будет буквально из трех значений θ_A=[1%, 2%, 3%], отклонение τ, c соотв-щими вероятностями P(θ_A)=[0.25, 0.5, 0.25]
2) Что если при получении новых данных, применяя частично Байеса, перевзвешивать P(θ_A)?
Частично это значит вот что: в примере про лето была формула, когда мы переоценивали вероятность жаркого лета при жарком мае:
P(Ж.Лето|Ж.Май) = P(Ж.Май|Ж.Лето)*P(Ж.Лето) / P(Ж.Май)
Уберем знаменатель:
P(Ж.Лето|Ж.Май) ~ P(Ж.Май|Ж.Лето)*P(Ж.Лето)
Собственно, вот.
В текущем кейсе:
P(θ_A|data) ~ L(data|θ_A)*P(θ_A)
2) Что если вместо значений только B использовать всевозможные разницы между А и B?
A = [100]
B = [101]
B - A = [1]
Эффект = 1%
(более сложный пример далее)
3) При этом для знаменателя θ_0 = 0, нет эффекта
4) То есть у нас в числителе будет L(data|θ_A)*P(θ_A), а в знаменателе только L(data|θ_0 = 0)
L(data|θ_A)*P(θ_A)/L(data|θ_0 = 0)
Пока забудем про *P(θ_A) ->
подсчитаем L(data|θ_A)/L(data|θ_0 = 0), где θ_A=[1%, 2%, 3%]
5) Полученное значение разницы B-А в процентом виде = 1%, считаем L-ки:
5.1. θ_A_1 = 1% - строит распределение со средним = 1% с отклонением τ и смотрим
L(data=1|θ_A=1) = 0.5 (тут и далее данные из головы)
Рассмотрим cо стороны знаменателя:
L(data=1|θ_A=0) = 0.2
Поделим, как это было в SPRT:
L(data=1|θ_A=1)/L(data=1|θ_A=0) = 0.5/0.2 = 2.5
5.2. По аналогии для θ_A_2 = 2%:
L(1|θ_A=2) = 0.2 - тут у нас среднее = 2% с отклонением τ
L(1|θ_A=2)/L(data=1|θ_A=0) = 0.2/0.2 = 1
5.3. По аналогии для θ_A_3 = 3%:
L(1|θ_A=3) = 0.1
L(1|θ_A=3)/L(data=1|θ_A=0) = 0.1/0.2 = 0.5
6) вспоминаем про *P(θ_A)
= [результат 5.1*P(θ_A=1), результат 5.2*P(θ_A=2), результат 5.3*P(θ_A=3)]
= [2.5*0.25, 1*0.5, 0.5*0.25] = [0.625, 0.5, 0.125] -> тут НЕ обязательно должно равно быть единице, переходим в п.7
—-
Для любознательных, если бы не было бы деления и нам надо было бы пересчитать постериор (редко показывают в учебниках):
P(θ_A|data) ~ L(data|θ_A)*P(θ_A)
P(θ_A|data) = [ L(data|θ_A=1)*P(θ_A=1), L(data|θ_A=2)*P(θ_A=2), L(data|θ_A=3)*P(θ_A=3) ] =
= [0.5*0.25, 0.2*0.5, 0.1*0.25] = [0.125, 0.1, 0.025] -> в сумме нет 1 и вот тут это проблема
Чтобы у нас получились корректные вероятности с суммой 1, нужно нормализовать каждое значение на их сумму 0.125+0.1+0.025 =0.25 -> [0.125/0.25, 0.1/0.25, 0.025/0.25] = [0.5, 0.4, 0.1] ~ наш новый P(θ_A), помним, что считали приблизительно.
—-
7) Дальше суммируем [0.625, 0.5, 0.125] = 1.25 -> это мы с вами получили оценку для Λ
Нам бы знак суммы в формуле: L(data|θ_A)*P(θ_A)/L(data|θ_0 = 0), но так как на самом деле θ_A распределяется не так [1%, 2%, 3%], а так [1%, 1.00001%, .... 3%] (так как величина непрерывная), то мы делаем по сути суммирование по бесконечно малому приращению, а это, - ВНЕЗАПНО, - интеграл:
Отсюда полная формула это:
∫ П[ L(all_data|θ_A) / L(all_data|θ_0]*P( θ_A) dθ_A
Обратите внимание: сначала мы считаем поддержку, - L(all_data|θ_A) / L(all_data|θ_0, - в пользу альтернативной гипотезы, заданной распределением, а после делаем умножение с P(θ_A).
Последнее важно сделать, так как в сущности это смягчение оценки поддержки HA с учетом приора этого же HA. Без этого это было бы тоже самое, что, подкинув пару раз монетку, сделать уверенный вывод, что она честная/нечестная; приорные знания оттормаживают наши скороспелые выводы. Без них алгоритм работал бы не лучше правила "вижу значимость - останавливаю". Ну, в целом, это к вопросу, как mSPRT контролирует ошибку 1-го рода
Проблему SPRT, - точное значение HA, - решила модификация за авторством Роббинса в 1970 (!) и которую применили в 2015.
В примере части-3 у нас были исторические данные. Cейчас: у нас есть исторические данные по проведенным тестам, в рамках которых мы способы подсчитать средний положительный эффект и его дисперсию. Если у вас таких данных нет, штош, "подбирайте" свой приор (бич Байеса)
Но допустим, они в наличии: у нас есть возможность аппроксимировать распределение эффекта, приора, с этим средней и отклонением τ. А где распределение (чаще нормальное), там и вероятность.
1) Тут для простоты пускай распределение будет буквально из трех значений θ_A=[1%, 2%, 3%], отклонение τ, c соотв-щими вероятностями P(θ_A)=[0.25, 0.5, 0.25]
2) Что если при получении новых данных, применяя частично Байеса, перевзвешивать P(θ_A)?
Частично это значит вот что: в примере про лето была формула, когда мы переоценивали вероятность жаркого лета при жарком мае:
P(Ж.Лето|Ж.Май) = P(Ж.Май|Ж.Лето)*P(Ж.Лето) / P(Ж.Май)
Уберем знаменатель:
P(Ж.Лето|Ж.Май) ~ P(Ж.Май|Ж.Лето)*P(Ж.Лето)
Собственно, вот.
В текущем кейсе:
P(θ_A|data) ~ L(data|θ_A)*P(θ_A)
2) Что если вместо значений только B использовать всевозможные разницы между А и B?
A = [100]
B = [101]
B - A = [1]
Эффект = 1%
(более сложный пример далее)
3) При этом для знаменателя θ_0 = 0, нет эффекта
4) То есть у нас в числителе будет L(data|θ_A)*P(θ_A), а в знаменателе только L(data|θ_0 = 0)
L(data|θ_A)*P(θ_A)/L(data|θ_0 = 0)
Пока забудем про *P(θ_A) ->
подсчитаем L(data|θ_A)/L(data|θ_0 = 0), где θ_A=[1%, 2%, 3%]
5) Полученное значение разницы B-А в процентом виде = 1%, считаем L-ки:
5.1. θ_A_1 = 1% - строит распределение со средним = 1% с отклонением τ и смотрим
L(data=1|θ_A=1) = 0.5 (тут и далее данные из головы)
Рассмотрим cо стороны знаменателя:
L(data=1|θ_A=0) = 0.2
Поделим, как это было в SPRT:
L(data=1|θ_A=1)/L(data=1|θ_A=0) = 0.5/0.2 = 2.5
5.2. По аналогии для θ_A_2 = 2%:
L(1|θ_A=2) = 0.2 - тут у нас среднее = 2% с отклонением τ
L(1|θ_A=2)/L(data=1|θ_A=0) = 0.2/0.2 = 1
5.3. По аналогии для θ_A_3 = 3%:
L(1|θ_A=3) = 0.1
L(1|θ_A=3)/L(data=1|θ_A=0) = 0.1/0.2 = 0.5
6) вспоминаем про *P(θ_A)
= [результат 5.1*P(θ_A=1), результат 5.2*P(θ_A=2), результат 5.3*P(θ_A=3)]
= [2.5*0.25, 1*0.5, 0.5*0.25] = [0.625, 0.5, 0.125] -> тут НЕ обязательно должно равно быть единице, переходим в п.7
—-
Для любознательных, если бы не было бы деления и нам надо было бы пересчитать постериор (редко показывают в учебниках):
P(θ_A|data) ~ L(data|θ_A)*P(θ_A)
P(θ_A|data) = [ L(data|θ_A=1)*P(θ_A=1), L(data|θ_A=2)*P(θ_A=2), L(data|θ_A=3)*P(θ_A=3) ] =
= [0.5*0.25, 0.2*0.5, 0.1*0.25] = [0.125, 0.1, 0.025] -> в сумме нет 1 и вот тут это проблема
Чтобы у нас получились корректные вероятности с суммой 1, нужно нормализовать каждое значение на их сумму 0.125+0.1+0.025 =0.25 -> [0.125/0.25, 0.1/0.25, 0.025/0.25] = [0.5, 0.4, 0.1] ~ наш новый P(θ_A), помним, что считали приблизительно.
—-
7) Дальше суммируем [0.625, 0.5, 0.125] = 1.25 -> это мы с вами получили оценку для Λ
Нам бы знак суммы в формуле: L(data|θ_A)*P(θ_A)/L(data|θ_0 = 0), но так как на самом деле θ_A распределяется не так [1%, 2%, 3%], а так [1%, 1.00001%, .... 3%] (так как величина непрерывная), то мы делаем по сути суммирование по бесконечно малому приращению, а это, - ВНЕЗАПНО, - интеграл:
Отсюда полная формула это:
∫ П[ L(all_data|θ_A) / L(all_data|θ_0]*P( θ_A) dθ_A
Обратите внимание: сначала мы считаем поддержку, - L(all_data|θ_A) / L(all_data|θ_0, - в пользу альтернативной гипотезы, заданной распределением, а после делаем умножение с P(θ_A).
Последнее важно сделать, так как в сущности это смягчение оценки поддержки HA с учетом приора этого же HA. Без этого это было бы тоже самое, что, подкинув пару раз монетку, сделать уверенный вывод, что она честная/нечестная; приорные знания оттормаживают наши скороспелые выводы. Без них алгоритм работал бы не лучше правила "вижу значимость - останавливаю". Ну, в целом, это к вопросу, как mSPRT контролирует ошибку 1-го рода
👍2
Понимаем процедуру последовательного тестирование mSPRT, часть-5
8.1) Что делать с этой оценкой? Где p-value? Будет, но все же в пейперах подход иной: для статистики Λ выводят границы через ошибки 1 и 2-го рода, возьмем классику 0.05/0.2:
A = (1-Beta)/Alpha = 0.8/0.05 = 16
B = Beta/(1-Alpha) = 0.2/0.95 = 0.21
Далее руководствуются следующим:
- Если B < Λ < A, то тест продолжают (вплоть до окончания, но при каждых новых данных считают снова Λ)
- Если Λ > A, отклоняем H0, останавливаем тест.
- Если Λ < B, не можем отклонить H0, останавливаем тест
Разберемся с этими A и B:
A - это та точка, где мы и достигаем желаемого баланса мощности против ошибки 1-го рода по нашему дизайну.
B - чуть сложнее. 1-Аlpha это зона, где мы верно не отклоняем H0, поэтому B та точка, достигается баланс между верным не отклонением H0 и ошибкой 2-го рода, но тоже согласно дизайну.
Итого эти границы это точки согласия, которые мы прорабатывали ранее, дизайня тест, то есть ошибки 1, 2-го рода, мощности (предполагается, что вы осмысленно к этому подходите при дизайне, принимаете решение)
8.2) В качестве альтернативы еще используют p-value. Просто поделим-ка 1/Λ. В нашем примере = 1/1.25 = 0.8 - это по сути p-value нашего теста.
При этом замечу, что 1/A = 1/16 = 0.0625. То есть если у нас будет Λ > 16, то это было бы почти тоже самое, что 1/Λ >= alpha.
Комментарии:
1. Понять движение Λ в большую или меньшую несложно:
Если разница очень большая, то думайте о знаменателе, у него-то θ_0 = 0. Знаменатель будет занулятся (а числитель каким бы маленьким бы ни был, - так как слишком большая разница и для θ_A не характерна, - будет все равно больше). Чем ближе к нулю, тем результат стремится к бесконечности.
Если разница очень маленькая, - что часто не имеет практической значимости, - значение Λ будет болтаться в окрестностях 1 и ниже, но если эффект вообще обратный для B, то зануляться. Тут по правилу Λ < B можно и оставиться, но вот думаю, что можно построить аппроксимацию и по отрицательным эффектам и выставить границу -A вместо B. Не знаю, тут еще думаю.
3. Если используете mSPRT, то, считайте, что используйте сплав байесовского тестирования с фреквенсистским. Хотели Байеса, получили.
4. Видел реализацию mSPRT через средние и z-score, но по сути это все одно и тоже.
——
Фух, вроде это все и вроде как без ошибок (надеюсь, во всяком случае, что без грубых).
Мне кажется, что разложил если не на молекулярном уровне, то на клеточном.
Используйте с пониманием!
P.S. Ясен хрен, минутка рекламы: на курсе по базе (!) A/B все разжевано вообще до атомов с 100500 картинками, как я люблю. Залетайте!
P.S.S. Более сложный пример разниц
A = [100, 101]
B = [101, 102]
B - A = [101 - 100, 101 - 101, 102 - 100, 102 - 101] = [1, 0, 2, 1]
Далее каждую из обсчитываем как было с примером выше. Хорошо, что есть компуктер, да?
Приложение (спасибо Диме):
- бумажулька №1
- бумажулька №2
- статья про мощность - про нее-то я ничего не сказал, но статья самодостаточная
- интро-видосик от Райффезана
В остальном материала очень мало, поэтому что? - верно, шарим этот, если зашел. Может, на хабр статью заряжу как переложение этой, думаю.
8.1) Что делать с этой оценкой? Где p-value? Будет, но все же в пейперах подход иной: для статистики Λ выводят границы через ошибки 1 и 2-го рода, возьмем классику 0.05/0.2:
A = (1-Beta)/Alpha = 0.8/0.05 = 16
B = Beta/(1-Alpha) = 0.2/0.95 = 0.21
Далее руководствуются следующим:
- Если B < Λ < A, то тест продолжают (вплоть до окончания, но при каждых новых данных считают снова Λ)
- Если Λ > A, отклоняем H0, останавливаем тест.
- Если Λ < B, не можем отклонить H0, останавливаем тест
Разберемся с этими A и B:
A - это та точка, где мы и достигаем желаемого баланса мощности против ошибки 1-го рода по нашему дизайну.
B - чуть сложнее. 1-Аlpha это зона, где мы верно не отклоняем H0, поэтому B та точка, достигается баланс между верным не отклонением H0 и ошибкой 2-го рода, но тоже согласно дизайну.
Итого эти границы это точки согласия, которые мы прорабатывали ранее, дизайня тест, то есть ошибки 1, 2-го рода, мощности (предполагается, что вы осмысленно к этому подходите при дизайне, принимаете решение)
8.2) В качестве альтернативы еще используют p-value. Просто поделим-ка 1/Λ. В нашем примере = 1/1.25 = 0.8 - это по сути p-value нашего теста.
При этом замечу, что 1/A = 1/16 = 0.0625. То есть если у нас будет Λ > 16, то это было бы почти тоже самое, что 1/Λ >= alpha.
Комментарии:
1. Понять движение Λ в большую или меньшую несложно:
Если разница очень большая, то думайте о знаменателе, у него-то θ_0 = 0. Знаменатель будет занулятся (а числитель каким бы маленьким бы ни был, - так как слишком большая разница и для θ_A не характерна, - будет все равно больше). Чем ближе к нулю, тем результат стремится к бесконечности.
Если разница очень маленькая, - что часто не имеет практической значимости, - значение Λ будет болтаться в окрестностях 1 и ниже, но если эффект вообще обратный для B, то зануляться. Тут по правилу Λ < B можно и оставиться, но вот думаю, что можно построить аппроксимацию и по отрицательным эффектам и выставить границу -A вместо B. Не знаю, тут еще думаю.
3. Если используете mSPRT, то, считайте, что используйте сплав байесовского тестирования с фреквенсистским. Хотели Байеса, получили.
4. Видел реализацию mSPRT через средние и z-score, но по сути это все одно и тоже.
——
Фух, вроде это все и вроде как без ошибок (надеюсь, во всяком случае, что без грубых).
Мне кажется, что разложил если не на молекулярном уровне, то на клеточном.
Используйте с пониманием!
P.S. Ясен хрен, минутка рекламы: на курсе по базе (!) A/B все разжевано вообще до атомов с 100500 картинками, как я люблю. Залетайте!
P.S.S. Более сложный пример разниц
A = [100, 101]
B = [101, 102]
B - A = [101 - 100, 101 - 101, 102 - 100, 102 - 101] = [1, 0, 2, 1]
Далее каждую из обсчитываем как было с примером выше. Хорошо, что есть компуктер, да?
Приложение (спасибо Диме):
- бумажулька №1
- бумажулька №2
- статья про мощность - про нее-то я ничего не сказал, но статья самодостаточная
- интро-видосик от Райффезана
В остальном материала очень мало, поэтому что? - верно, шарим этот, если зашел. Может, на хабр статью заряжу как переложение этой, думаю.
👍2❤1🔥1
Привет, товарищи-статистики!
Давно ничего не писал, у меня есть в голове пара тем, про которые хочу рассказать, но о них надо очень конкретно, а это требуют времени, с которым сейчас туго, честно говоря.
Поэтому напишу пост в поддержку будущей конференции - Aha '24 (прости, Леша, я слоупок), которая будет 6 июня в Москве. Эту конференцию, как и ее старшую сестру, Матемаркетинг, я считаю стоящей того, чтобы посетить; никогда не жалел, что был ее участником/посетителем, только светлые воспоминания.
Для меня несколько причин ее посетить:
1. Хочу послушать следующие доклады:
- "Causal Impact. Как делать эксперименты там, где нет классический AB-тестов. Теория, практика и "подводные камни" метода" - от Дмитрия Казакова я уже слушал его, вот ссылка (спасибо Юре Борзило); да, вероятно он расскажет в том же ключе, но повторение не будет лишним
- "Как каузальные графы и линейные модели ответят на все ваши вопросы в A/B-тестах"
- "Влияние сетевого эффекта в AБ-тестах на unit-экономику в ритейле"
- "Вечный контроль: зачем он нужен и как организовывать его так, чтобы не сойти с ума"
Уверен, будет интересно!
2. Нетворкинг: хочется пожать лапки не только коллегам лично, все-таки из-за удаленки и другого города давно не виделись, но Юре и Елене (подписывайтесь на их канал, ставьте лайки... - к их постам я обязательно вернусь в рамках волнующих меня тем)
3. Не работать Та не, ноут будет со мной, никуда не денусь))
В общем, будете на конфе, дайте парой слов перекинемся!
Давно ничего не писал, у меня есть в голове пара тем, про которые хочу рассказать, но о них надо очень конкретно, а это требуют времени, с которым сейчас туго, честно говоря.
Поэтому напишу пост в поддержку будущей конференции - Aha '24 (прости, Леша, я слоупок), которая будет 6 июня в Москве. Эту конференцию, как и ее старшую сестру, Матемаркетинг, я считаю стоящей того, чтобы посетить; никогда не жалел, что был ее участником/посетителем, только светлые воспоминания.
Для меня несколько причин ее посетить:
1. Хочу послушать следующие доклады:
- "Causal Impact. Как делать эксперименты там, где нет классический AB-тестов. Теория, практика и "подводные камни" метода" - от Дмитрия Казакова я уже слушал его, вот ссылка (спасибо Юре Борзило); да, вероятно он расскажет в том же ключе, но повторение не будет лишним
- "Как каузальные графы и линейные модели ответят на все ваши вопросы в A/B-тестах"
- "Влияние сетевого эффекта в AБ-тестах на unit-экономику в ритейле"
- "Вечный контроль: зачем он нужен и как организовывать его так, чтобы не сойти с ума"
Уверен, будет интересно!
2. Нетворкинг: хочется пожать лапки не только коллегам лично, все-таки из-за удаленки и другого города давно не виделись, но Юре и Елене (подписывайтесь на их канал, ставьте лайки... - к их постам я обязательно вернусь в рамках волнующих меня тем)
В общем, будете на конфе, дайте парой слов перекинемся!
🔥8
Привет, товарищи статистики.
Хотел поделится впечатлениям от докладов, которые хотел посетить и посетил на Aha.
1) "Causal Impact. Как делать эксперименты там, где нет классический AB-тестов. Теория, практика и "подводные камни" метода"
Очень надеялся, что подача будет иная. Так и получилось. Лучший доклад из всех, что был на конференции. Конкретный, последовательный. Вообще, очень классно, что презентация сама по себе содержательна: так и надо делать.
Дмитрий наглядно погружает в метод, библиотеку, ряд проблем и далее дает рекомендации, как проблемы эти преодолеть. Опять-таки, наглядно (я такое очень люблю и сам стараюсь практиковать)
Выделю несколько моментов, не по порядку:
- Отдавать предпочтение классическим A/B-тестам (sic!)
- Оценивать уровень стат. значимости и мощность через Монте-Карло (так вы поймете не просто их значения, но и надо ли вам тюнить модель прогноза или нет)
- Критерии качества модели прогноза и указания на работу с гиперпараметрами (были ссылки на видео и на статью)
- Поиск ковариат (независимая предсказательная/контрольная переменная)
Очень хороший доклад как опорный материал к Causual Impact. В целом, этот метод становится востребованым к пониманию на рынке, рекомендую погрузится. Сделать это можно через следующие материалы (на английском):
- онлайн книга в открытом доступе
- онлайн курс от того автора в открытом доступе
2) Как каузальные графы и линейные модели ответят на все ваши вопросы в A/B-тестах
Докладчиком был Кирилл, глава аналитики в HH (как оказалось, как автора я его знаю - ninja на medium, вот статья, которую я чаще видел в репостах, про требования нормальности в t-test'e). После его выступления я поговорил с ним, чтобы "спрямить" свои впечатления.
Поэтому выскажусь в хорошем ключе так: я согласен с прогнозом Кирилла, который он высказал в личной беседе, что линейные модели это вероятно новый будущий хайп в ближайшие годы. Действительно, A/B через линейки это тот же самый t-test, только сбоку, а если накидывать контрольных переменных, то можно "очищать эффект", и, - чего не было в докладе, - сразу оценивать по сегментам результаты. Все в рамках одного кода.
Но есть проблемы:
- спутывающие переменные (confounding var.), которые влияют и на воздействие и на то, на что целится воздействие
- графах связанности переменных: визуально штуки-то простые, три "шарика" переменных, три связи (цепочка, вилка,бумага, коллайдер), а далее их вариации, но сами связи и то, что происходит, если "условится", непривычно воспринимать.
- надо исследовать метрики на предмет того, какой вид группировок "шариков" сходится с реальностью: в общем, вместо дерева метрик предлагается строить графы метрик (что так-то методологически правильнее)
Все это по сути тоже про Causal, но c другой стороны: Сausal Inference
Есть очень хороший видео-материал на английском. Достаточно понятный, но все равно немного привыкнуть к "шарикам" и способу мысли за ними будет нужно.
В общем, штука перспективная, по словам Кирилла уже давно в практике зарубежом (подход вроде выработал гугл в 10-х годах), а до нас катится лишь сейчас, классика. Интересно посмотреть, сбудется ли прогноз. Но в любом случае перейти в свои ноутах на линейные модели в пост-хоке рекомендую.
Если же сделать шаг назад и рассказать о докладе, то, кратко говоря, это был порыв души сообщить не без волнения о том, что возможно грядетпокайтесь, грешники; учите матчасть. Будет непонятно, но если посмотрите курс выше с пересмотром, то понятно :)
3) - "Влияние сетевого эффекта в AБ-тестах на unit-экономику в ритейле"
Вообще, я бы тут не столько говорил о сетевом эффекте, сколько об учете костов в рамках вашей инициативы, то есть в идеале проводить A/B с учетом затрат по каждой группе (короче, быть в рамках unit-экономики). А то вполне может быть так, что в группе B стат. значимый прирост, но из-за повышенных расходов по экономике убыток.
—
Уже только благодаря этим докладам я рад, что побывал на конфе. Но помимо этого увиделся со многими вживую: рад был всех увидеть и пообщаться!
Вот такие вот впечатления.
Хотел поделится впечатлениям от докладов, которые хотел посетить и посетил на Aha.
1) "Causal Impact. Как делать эксперименты там, где нет классический AB-тестов. Теория, практика и "подводные камни" метода"
Очень надеялся, что подача будет иная. Так и получилось. Лучший доклад из всех, что был на конференции. Конкретный, последовательный. Вообще, очень классно, что презентация сама по себе содержательна: так и надо делать.
Дмитрий наглядно погружает в метод, библиотеку, ряд проблем и далее дает рекомендации, как проблемы эти преодолеть. Опять-таки, наглядно (я такое очень люблю и сам стараюсь практиковать)
Выделю несколько моментов, не по порядку:
- Отдавать предпочтение классическим A/B-тестам (sic!)
- Оценивать уровень стат. значимости и мощность через Монте-Карло (так вы поймете не просто их значения, но и надо ли вам тюнить модель прогноза или нет)
- Критерии качества модели прогноза и указания на работу с гиперпараметрами (были ссылки на видео и на статью)
- Поиск ковариат (независимая предсказательная/контрольная переменная)
Очень хороший доклад как опорный материал к Causual Impact. В целом, этот метод становится востребованым к пониманию на рынке, рекомендую погрузится. Сделать это можно через следующие материалы (на английском):
- онлайн книга в открытом доступе
- онлайн курс от того автора в открытом доступе
2) Как каузальные графы и линейные модели ответят на все ваши вопросы в A/B-тестах
Докладчиком был Кирилл, глава аналитики в HH (как оказалось, как автора я его знаю - ninja на medium, вот статья, которую я чаще видел в репостах, про требования нормальности в t-test'e). После его выступления я поговорил с ним, чтобы "спрямить" свои впечатления.
Поэтому выскажусь в хорошем ключе так: я согласен с прогнозом Кирилла, который он высказал в личной беседе, что линейные модели это вероятно новый будущий хайп в ближайшие годы. Действительно, A/B через линейки это тот же самый t-test, только сбоку, а если накидывать контрольных переменных, то можно "очищать эффект", и, - чего не было в докладе, - сразу оценивать по сегментам результаты. Все в рамках одного кода.
Но есть проблемы:
- спутывающие переменные (confounding var.), которые влияют и на воздействие и на то, на что целится воздействие
- графах связанности переменных: визуально штуки-то простые, три "шарика" переменных, три связи (цепочка, вилка,
- надо исследовать метрики на предмет того, какой вид группировок "шариков" сходится с реальностью: в общем, вместо дерева метрик предлагается строить графы метрик (что так-то методологически правильнее)
Все это по сути тоже про Causal, но c другой стороны: Сausal Inference
Есть очень хороший видео-материал на английском. Достаточно понятный, но все равно немного привыкнуть к "шарикам" и способу мысли за ними будет нужно.
В общем, штука перспективная, по словам Кирилла уже давно в практике зарубежом (подход вроде выработал гугл в 10-х годах), а до нас катится лишь сейчас, классика. Интересно посмотреть, сбудется ли прогноз. Но в любом случае перейти в свои ноутах на линейные модели в пост-хоке рекомендую.
Если же сделать шаг назад и рассказать о докладе, то, кратко говоря, это был порыв души сообщить не без волнения о том, что возможно грядет
3) - "Влияние сетевого эффекта в AБ-тестах на unit-экономику в ритейле"
Вообще, я бы тут не столько говорил о сетевом эффекте, сколько об учете костов в рамках вашей инициативы, то есть в идеале проводить A/B с учетом затрат по каждой группе (короче, быть в рамках unit-экономики). А то вполне может быть так, что в группе B стат. значимый прирост, но из-за повышенных расходов по экономике убыток.
—
Уже только благодаря этим докладам я рад, что побывал на конфе. Но помимо этого увиделся со многими вживую: рад был всех увидеть и пообщаться!
Вот такие вот впечатления.
👍14🔥6
Привет, товарищи статистики!
Ну, что, совершилось - статья про Mann-Whitney, и то, как он упакован в промышленной аб-тестилке у Яндекса, Varioqub:
https://habr.com/ru/companies/X5Tech/articles/823078/
Статья писалась уже, получается, больше года. Я перечитывал ее и редактировал после ревью, в том числе n своих, очень много раз. Видеть ее больше не могу/не хочу, страшусь комментариев (хоть ее и вычитывали) "фсё ни так!!!11", но не опубликовать уже нельзя. Надеюсь, вам понравится. Сделайте паузу на обед, возьмите чашечку кофе и вперед.
А чтобы пост не был просто PR-кампанией, то поделись тем, что из статьи пришлось вырезать:
Помимо классических параметрических 3-х тенденций среднего (среднее, медиана, мода) есть и непараметрический аналог, оценка Hodges-Lehman’a. Алгоритм ее подсчета следующий:
1) сначала вам нужно составить все уникальные пары измерений в рамках выборки
2) далее в рамках каждой пары считается их среднее, итого у вас есть набор средних
3) подсчет медианы этих средних. Готово, это и есть эта оценка.
Для нормального распределения эта оценка совпадает с медианой, для всех прочий ее можно интерпретировать как псевдомедиану. Интересное решение для оценки средней тенденции для ненормальных распределений.
Все, не отвлекайтесь, вас по ссылке ждет паста текста, после которой, я надеюсь, Mann-Whitney станет вам ближе с точки зрения понимания его работы внутри.
P.S. Буду рад комментариям, стал ли тест для вас понятнее.
Ну, что, совершилось - статья про Mann-Whitney, и то, как он упакован в промышленной аб-тестилке у Яндекса, Varioqub:
https://habr.com/ru/companies/X5Tech/articles/823078/
Статья писалась уже, получается, больше года. Я перечитывал ее и редактировал после ревью, в том числе n своих, очень много раз. Видеть ее больше не могу/не хочу, страшусь комментариев (хоть ее и вычитывали) "фсё ни так!!!11", но не опубликовать уже нельзя. Надеюсь, вам понравится. Сделайте паузу на обед, возьмите чашечку кофе и вперед.
А чтобы пост не был просто PR-кампанией, то поделись тем, что из статьи пришлось вырезать:
Помимо классических параметрических 3-х тенденций среднего (среднее, медиана, мода) есть и непараметрический аналог, оценка Hodges-Lehman’a. Алгоритм ее подсчета следующий:
1) сначала вам нужно составить все уникальные пары измерений в рамках выборки
2) далее в рамках каждой пары считается их среднее, итого у вас есть набор средних
3) подсчет медианы этих средних. Готово, это и есть эта оценка.
Для нормального распределения эта оценка совпадает с медианой, для всех прочий ее можно интерпретировать как псевдомедиану. Интересное решение для оценки средней тенденции для ненормальных распределений.
Все, не отвлекайтесь, вас по ссылке ждет паста текста, после которой, я надеюсь, Mann-Whitney станет вам ближе с точки зрения понимания его работы внутри.
P.S. Буду рад комментариям, стал ли тест для вас понятнее.
Хабр
Varioqub: за Mann-Whitney замолвите слово
Привет, с вами команда аналитиков “Пятёрочки” X5 Tech. Как вы уже знаете, мы активно внедряем решение AppMetrica для мобильной аналитики . В AppMetrica есть модуль для проведения A/B тестов на...
👍12❤10🔥3
Привет, товарищи статистики!
Сегодня завершился 5-ый поток по A/B, в рядах стат. секты прибыло :)
1. И в этот раз я снова сделал это: пополнил курс еще 4-ям лекциям, что изменило оный и превратило в cплав базовых и продвинутых тем (которые входу в индустрии).
Вот как это было: к моменту 2-3 встречи, я понял, что не могу не сделать рассказ про Cuped; не могу оставить в стороне Sequential; что нужно разбивать тему про множественное тестирование на несколько встреч, освещая что это такое и как к этому снаряду приступить с нескольких сторон, рассказ про тест Tukey, Dunnett'a, метаанализ Фишера и пр. Итого это дало +3 встречи. Еще одна стала результатам разделение на части уже готового материала про бутстрап и линеаризацию с последующим расширением и того, и другого. Теперь все стало еще понятнее, особенно в части проблемы с линеаризацией.
Поэтому уже второй раз (простите) обращаюсь к участникам предыдущих потоков: сделайте мне второе одолжение и посмотрите, пожалуйста, 12, 13, 14 и 15-ую лекции. Ну или хотя бы про 12-ую про CUPED (там все с картинками и пр.). Или напишите мне, чтобы попасть в момент, когда я буду вести это все у 6-го потока.
Отдельно скажу, что верстка с нуля трех не самых простых тем вызвала во мне флэшбеки того, как я потратил на самую первую версию курса львиную долю прошлого лета, так себе впечатления скажу.
2. Курс почти прошел негласную аккредитацию в родимом X5: сейчас дочитываю последние лекции, вроде как все ок! Фууууух! В общем, это вселило больше уверенности в созданном материале. Хотя даже не представляю, каково было коллегам пересидеть 1-ую и 2-ую встречу про базовую базу.
3. Начинаю набор на 6-ый поток. Мне также нужна пауза - пара недель перед его стартом.
Список актуальных тем на 2-ой картинке, о чем они - тут.
Цену оставляю пока той же - 35к (а материала уже больше!). По сути ничего не изменилось с прошлого набора: "каждый поток веду лично, оказывая максимальное сопровождение по материалу; веду с удовольствием, в душе педагог; подача такая, будто надо объяснить детям, чтобы они могли объяснить это другим детям"
Обучение идет по вечерам по Мск, 2-3 раза в неделю, полтора месяца.
Отзывы прилагал ранее, приложу и сейчас + обращенные есть в этом чате, welcome в комменты)
Желающие "пристатиститься" cмело мне пишите в ЛС :) О тех, кто уже это сделал, я помню, напишу.
Сегодня завершился 5-ый поток по A/B, в рядах стат. секты прибыло :)
1. И в этот раз я снова сделал это: пополнил курс еще 4-ям лекциям, что изменило оный и превратило в cплав базовых и продвинутых тем (которые входу в индустрии).
Вот как это было: к моменту 2-3 встречи, я понял, что не могу не сделать рассказ про Cuped; не могу оставить в стороне Sequential; что нужно разбивать тему про множественное тестирование на несколько встреч, освещая что это такое и как к этому снаряду приступить с нескольких сторон, рассказ про тест Tukey, Dunnett'a, метаанализ Фишера и пр. Итого это дало +3 встречи. Еще одна стала результатам разделение на части уже готового материала про бутстрап и линеаризацию с последующим расширением и того, и другого. Теперь все стало еще понятнее, особенно в части проблемы с линеаризацией.
Поэтому уже второй раз (простите) обращаюсь к участникам предыдущих потоков: сделайте мне второе одолжение и посмотрите, пожалуйста, 12, 13, 14 и 15-ую лекции. Ну или хотя бы про 12-ую про CUPED (там все с картинками и пр.). Или напишите мне, чтобы попасть в момент, когда я буду вести это все у 6-го потока.
Отдельно скажу, что верстка с нуля трех не самых простых тем вызвала во мне флэшбеки того, как я потратил на самую первую версию курса львиную долю прошлого лета, так себе впечатления скажу.
2. Курс почти прошел негласную аккредитацию в родимом X5: сейчас дочитываю последние лекции, вроде как все ок! Фууууух! В общем, это вселило больше уверенности в созданном материале. Хотя даже не представляю, каково было коллегам пересидеть 1-ую и 2-ую встречу про базовую базу.
3. Начинаю набор на 6-ый поток. Мне также нужна пауза - пара недель перед его стартом.
Список актуальных тем на 2-ой картинке, о чем они - тут.
Цену оставляю пока той же - 35к (а материала уже больше!). По сути ничего не изменилось с прошлого набора: "каждый поток веду лично, оказывая максимальное сопровождение по материалу; веду с удовольствием, в душе педагог; подача такая, будто надо объяснить детям, чтобы они могли объяснить это другим детям"
Обучение идет по вечерам по Мск, 2-3 раза в неделю, полтора месяца.
Отзывы прилагал ранее, приложу и сейчас + обращенные есть в этом чате, welcome в комменты)
Желающие "пристатиститься" cмело мне пишите в ЛС :) О тех, кто уже это сделал, я помню, напишу.
🔥12👍6
Привет, товарищи статистики!
Все собирался пост написать, да не мог. Но в моем случае часто работает "спросили интересный вопрос" -> "родился пост". В общем, благодаря беседе в чате Юры Борзило и вопросу Сергея в частности (спасибо!) этот пост и появился (но немного с другой постановкой вопроса):
"Допустим запустили мы АБ, получили p-value 0.051 (уровень значимости alpha = 0.05), что делать?"
Все собирался пост написать, да не мог. Но в моем случае часто работает "спросили интересный вопрос" -> "родился пост". В общем, благодаря беседе в чате Юры Борзило и вопросу Сергея в частности (спасибо!) этот пост и появился (но немного с другой постановкой вопроса):
"Допустим запустили мы АБ, получили p-value 0.051 (уровень значимости alpha = 0.05), что делать?"
👍9
Привет, товарищи статистики!
Держите в конце рабочей недели первую часть про введение впсихо мета-анализ: разберемся в основной сути метода Фишера для независимых гипотез (это когда у нас из теста в тест конкретной фичи идет разная конфигурация юзеров/объектов в A/B), попутно ответив на вопрос, почему комбинация [0.051, 0.051] стат. значима. Точнее не то, что ответим, а все как я люблю - увидим это.
Тест комбинированной вероятности Фишера, ч-1, основная суть.
В следующий раз пройдемся по преобразованию для этого метода. Какому и зачем? А в статье все написано, читайте!
Держите в конце рабочей недели первую часть про введение в
Тест комбинированной вероятности Фишера, ч-1, основная суть.
В следующий раз пройдемся по преобразованию для этого метода. Какому и зачем? А в статье все написано, читайте!
🔥12👍5
Привет, товарищи статистики!
Я вам тут 2-ю часть про метод Фишера принес (1-ая выше):
Тест комбинированной вероятности Фишера, ч-2, преобразование и "вывод" формулы
Надеюсь, вопрос об оперируемой формуле этого мета-анализа для вас снимется. Have fun!
Я вам тут 2-ю часть про метод Фишера принес (1-ая выше):
Тест комбинированной вероятности Фишера, ч-2, преобразование и "вывод" формулы
Надеюсь, вопрос об оперируемой формуле этого мета-анализа для вас снимется. Have fun!
🔥10👍3
Привет, comrades statisticians!
Наконец-то 3-ая заключительная часть про мета-анализ независимых гипотез (вот первая и вторая)
Мы подробно рассмотрим weighted combined z-score, который на мой взгляд имеет ряд преимуществ в сравнении с Fisher's method.
Мета-анализ: weigthed combined z-score, ч-3
Чуть позже возьмемся за зависимые гипотезы.
Приятного чтения!
Наконец-то 3-ая заключительная часть про мета-анализ независимых гипотез (вот первая и вторая)
Мы подробно рассмотрим weighted combined z-score, который на мой взгляд имеет ряд преимуществ в сравнении с Fisher's method.
Мета-анализ: weigthed combined z-score, ч-3
Чуть позже возьмемся за зависимые гипотезы.
Приятного чтения!
👍13
Привет, товарищи статистики!
А знаете ли вы, что одной поваренной книге по A/B "Practitioner’s Guide to Statistical Tests" от VK Team, к которой я время от времени возвращаюсь, базовое заклинание "assumption" встречается 46 раз?
Один из авторов статьи - Никита Маршалкин, когда-то дал интересное интервью Толе Карпову. Ох, оказывается 4 года прошло с тех пор.
Так вот, до сих пор помню пару моментов в этом интервью:
1. (это я понял задним числом) Когда он говорил про метрику отношений, - тот же средний чек, - но тогда он ее так не называл (правда тогда ее так никто особо и не называл), он приводил пример про CTR. Он его разделял на глобальный CTR, то есть CTR множества (группы), и на локальный CTR, то есть CTR на юзера.
Вот думаю, что "глобальный/локальный" - хорошие определения в этом контексте.
2. Его высказывание про книгу "Thustworthy Online Controlled Experiments" от Рона Кохави: "Все статьи можно выбросить, прочитать только это книжку". Книжка действительно очень хорошая, но с ней вот какая штука: она полезна уже тем, кто понимает A/B, хотя бы базу, как оно работает (я про критерии); а вот тем, кто только начал свой путь - скажем так, она хуже не сделает, но и не особо поможет. Но если собирётесь читать, то читайте на английском, на русском хватало опечаток!
3. Хорошие объяснения разных подходов по сплитованию трафика, bootstrap. Но особенно запомнилось рассуждение того, как A/B проводятся в маленькими компаниями в сравнении с большими: когда продукт только на старте, важны большие эффекты, что само по себе требует мало аудитории, а когда продукт уже развит и у него большая аудитория, то эффекты ожидаются не столь большие (все самые бустящие/важные/критичные вещи внедрены/пофикшены), но и MDE на такой аудитории можно отлавливать меньше.
В этом смысле я сейчас думаю о графике MDE vs размер аудитории (2-ая картинка). Что большой MDE вполне имеет право на жизнь, но только если вы стартап. Но когда вы уже большие, вам следует ориентироваться в основном на малый прирост. Менять местами ожидания, - стартапу подавать малый MDE, крупному ребятам - большой MDE, - значит для первых делать бесконечный тест (так как большой размер выборки нужен), а для вторых - ничего не менять на продукте (так как ну вряд ли будет такой эффект). И то и другое тупиковый путь.
Со статьей и интервью рекомендую ознакомиться, если не видели.
А знаете ли вы, что одной поваренной книге по A/B "Practitioner’s Guide to Statistical Tests" от VK Team, к которой я время от времени возвращаюсь, базовое заклинание "assumption" встречается 46 раз?
Один из авторов статьи - Никита Маршалкин, когда-то дал интересное интервью Толе Карпову. Ох, оказывается 4 года прошло с тех пор.
Так вот, до сих пор помню пару моментов в этом интервью:
1. (это я понял задним числом) Когда он говорил про метрику отношений, - тот же средний чек, - но тогда он ее так не называл (правда тогда ее так никто особо и не называл), он приводил пример про CTR. Он его разделял на глобальный CTR, то есть CTR множества (группы), и на локальный CTR, то есть CTR на юзера.
Вот думаю, что "глобальный/локальный" - хорошие определения в этом контексте.
2. Его высказывание про книгу "Thustworthy Online Controlled Experiments" от Рона Кохави: "Все статьи можно выбросить, прочитать только это книжку". Книжка действительно очень хорошая, но с ней вот какая штука: она полезна уже тем, кто понимает A/B, хотя бы базу, как оно работает (я про критерии); а вот тем, кто только начал свой путь - скажем так, она хуже не сделает, но и не особо поможет. Но если собирётесь читать, то читайте на английском, на русском хватало опечаток!
3. Хорошие объяснения разных подходов по сплитованию трафика, bootstrap. Но особенно запомнилось рассуждение того, как A/B проводятся в маленькими компаниями в сравнении с большими: когда продукт только на старте, важны большие эффекты, что само по себе требует мало аудитории, а когда продукт уже развит и у него большая аудитория, то эффекты ожидаются не столь большие (все самые бустящие/важные/критичные вещи внедрены/пофикшены), но и MDE на такой аудитории можно отлавливать меньше.
В этом смысле я сейчас думаю о графике MDE vs размер аудитории (2-ая картинка). Что большой MDE вполне имеет право на жизнь, но только если вы стартап. Но когда вы уже большие, вам следует ориентироваться в основном на малый прирост. Менять местами ожидания, - стартапу подавать малый MDE, крупному ребятам - большой MDE, - значит для первых делать бесконечный тест (так как большой размер выборки нужен), а для вторых - ничего не менять на продукте (так как ну вряд ли будет такой эффект). И то и другое тупиковый путь.
Со статьей и интервью рекомендую ознакомиться, если не видели.
👍12
Привет, товарищи-статистики!
—ВВОДНАЯ—
Я должен был написать продолжение про мета-анализ общей зависимой гипотезы, но, во-первых, на телеграфе с некоторых пор баг, который не позволяет ставлять картинки; во-вторых, я уже пишу статью на Хабр про мета-анализ, где про зависимую гипотезу будет в том числе. Идет статья со скрипом, мои рецензенты как следует дали мне продышаться по методу Фишера, переписываю в том числе и ту часть.
Сегодня напишу по теме, про которую долго думаю, про которую меня позавчера спросили на финальной встрече потока (спасибо за вопрос, Кристина), да и еще к тому же Юра дал ссылку на пост про MDE, который тож триггернул. В общем, пора!
Итак, будем говорить о том, что я для себя называю как "макс. эффект / эффект, которого "скорее всего точно нет""(возможно, придумываю колесо и все уже есть, просто не встречал что-то подобное) . И должен сказать, что нет уверенности в том, чем хочу поделиться.
—ТЕМА ПОСТА—
Вводные:
- Мы дизайним тест: пускай сигма = 2, классические параметры альфа, мощности (0.05 / 0.8) и доступный размер аудитории на группу по 100, получаем MDE = 0.792
- Помним, что мощность определяется как вероятность обнаружить эффект, если он есть. Проблема в том, что на практике мы, конечно, не знаем, есть ли эффект на самом деле или нет, даже с учетом стат. значимого теста (ошибка 1-го рода).
Так вот, меня давно очень интересует на этапе дизайне другое значение MDE, когда максимизируешь мощность, например, до 0.99, назовем это MDE №2 [1.212]. Получаем при этом ошибку 2-го рода 1%.
Почему думаю об этом? Вот мы проводим тест и он не стат. значимый (тут я специально проводил А/А). При этом обычное дело - строим дов. интервал эффекта, скажем [-0.12, 1.08], однако он говорит лишь о том, что с некоторой надежностью (1-alpha) охватывает истинный эффект. Его правая граница, 1.08, может принимать и другие значения, но в принципе с оговорками она дает нам оценку максимального эффекта, так как интервал мог быть и другим.
Но что если зайти со стороны MDE №2? А он, кажется, про "эффект, которого "точно" нет". Почти, так как по логике получается, у нас, как будто, уже 99% против 1%, что такого MDE №2 и более эффекта нет в рамках нашего результата. Более того, А/А симуляция доверительных интервалов эффекта с точки зрения абсолютного максимального значения приближалась к этому MDE №2.
То есть такая мера как MDE №2 = 1.212 в рамках не стат.значимого теста дает, даже с учетом мощности всего 0.99 оценку вашего максимального выхлопа, если ошибка 2-го рода имела место. При этом он прям маловероятен. Ни больше, ни меньше. По идее.
И вроде как оно тем лучше дов. интервала эффекта в таком контексте, что интервал вариативен и правая сторона гуляет, (что можно попробовать решить через бутстрап, например), а MDE №2, условно, предел. Только надо балансировать этот MDE №2 на полученные размеры групп, все-таки плюс-минус размер будет разбегаться от ожидаемого.
Зачем оно нужно?
Дело в том, что тест не запрещает катить нестат. значимый результат, более того, такое может произойти. И вот подобная оценка как будто способна дать. доп. информацию о том, а стоит ли это того? Если конкретизировать: "твой максимум c вероятностью 1% это 1.212, при этом может стать хуже (по дов. интервалу) на -0.12 + ресурсы на раскатку, как тебе с этим?"
Проблемы:
- Возможно, это все-таки "говно без задач" + я мог ошибиться в рассуждениях.
- Мощность мощно изменить c 0.99 на 0.9999 и т.д. Как правильно? Правильно то, что вы принимаете для себя как предел ошибки 2-го рода, Beta. C альфой же для себя как-то разобрались :)
- Надо помнить, мы можем говорить о пределе только ссылкой на набор наших параметров в рамках теста: сигма, альфа, аудитория. Оно не может быть обобщающим.
—ВВОДНАЯ—
Я должен был написать продолжение про мета-анализ общей зависимой гипотезы, но, во-первых, на телеграфе с некоторых пор баг, который не позволяет ставлять картинки; во-вторых, я уже пишу статью на Хабр про мета-анализ, где про зависимую гипотезу будет в том числе. Идет статья со скрипом, мои рецензенты как следует дали мне продышаться по методу Фишера, переписываю в том числе и ту часть.
Сегодня напишу по теме, про которую долго думаю, про которую меня позавчера спросили на финальной встрече потока (спасибо за вопрос, Кристина), да и еще к тому же Юра дал ссылку на пост про MDE, который тож триггернул. В общем, пора!
Итак, будем говорить о том, что я для себя называю как "макс. эффект / эффект, которого "скорее всего точно нет""
—ТЕМА ПОСТА—
Вводные:
- Мы дизайним тест: пускай сигма = 2, классические параметры альфа, мощности (0.05 / 0.8) и доступный размер аудитории на группу по 100, получаем MDE = 0.792
- Помним, что мощность определяется как вероятность обнаружить эффект, если он есть. Проблема в том, что на практике мы, конечно, не знаем, есть ли эффект на самом деле или нет, даже с учетом стат. значимого теста (ошибка 1-го рода).
Так вот, меня давно очень интересует на этапе дизайне другое значение MDE, когда максимизируешь мощность, например, до 0.99, назовем это MDE №2 [1.212]. Получаем при этом ошибку 2-го рода 1%.
Почему думаю об этом? Вот мы проводим тест и он не стат. значимый (тут я специально проводил А/А). При этом обычное дело - строим дов. интервал эффекта, скажем [-0.12, 1.08], однако он говорит лишь о том, что с некоторой надежностью (1-alpha) охватывает истинный эффект. Его правая граница, 1.08, может принимать и другие значения, но в принципе с оговорками она дает нам оценку максимального эффекта, так как интервал мог быть и другим.
Но что если зайти со стороны MDE №2? А он, кажется, про "эффект, которого "точно" нет". Почти, так как по логике получается, у нас, как будто, уже 99% против 1%, что такого MDE №2 и более эффекта нет в рамках нашего результата. Более того, А/А симуляция доверительных интервалов эффекта с точки зрения абсолютного максимального значения приближалась к этому MDE №2.
То есть такая мера как MDE №2 = 1.212 в рамках не стат.значимого теста дает, даже с учетом мощности всего 0.99 оценку вашего максимального выхлопа, если ошибка 2-го рода имела место. При этом он прям маловероятен. Ни больше, ни меньше. По идее.
И вроде как оно тем лучше дов. интервала эффекта в таком контексте, что интервал вариативен и правая сторона гуляет, (что можно попробовать решить через бутстрап, например), а MDE №2, условно, предел. Только надо балансировать этот MDE №2 на полученные размеры групп, все-таки плюс-минус размер будет разбегаться от ожидаемого.
Зачем оно нужно?
Дело в том, что тест не запрещает катить нестат. значимый результат, более того, такое может произойти. И вот подобная оценка как будто способна дать. доп. информацию о том, а стоит ли это того? Если конкретизировать: "твой максимум c вероятностью 1% это 1.212, при этом может стать хуже (по дов. интервалу) на -0.12 + ресурсы на раскатку, как тебе с этим?"
Проблемы:
- Возможно, это все-таки "говно без задач" + я мог ошибиться в рассуждениях.
- Мощность мощно изменить c 0.99 на 0.9999 и т.д. Как правильно? Правильно то, что вы принимаете для себя как предел ошибки 2-го рода, Beta. C альфой же для себя как-то разобрались :)
- Надо помнить, мы можем говорить о пределе только ссылкой на набор наших параметров в рамках теста: сигма, альфа, аудитория. Оно не может быть обобщающим.
👍2
Привет, товарищи-статистики!
В полку свидетелей A/B прибыло: недавно завершился 6-ой поток, самый большой из всех на данный момент! Отзывы выше, и это лишь их часть, остальное как соберу, закину в комменты.
Ух, это было непросто, но теперь я больше уверен в том, какой размер группы мне по плечу так, чтобы это было максимально комфортно группе. ну и чтобы я не закончился.
1. Занятий снова стало больше, так как разбил блок по множественному тестированию, чтобы они легче усвоились. Для всех, кто был ранее, только их и рекомендую пересмотреть, особенно часть про A/B и много метрик, там я переосмыслил процедуры первичной проверки и рассказал про тест Hotelling'a.
Для следующего потока я также подумываю некоторый материал разбить на части, например, Хи-Квадрат и Бутстрап.
2. Материал каждой встречи также был переработан в сторону большей атомизации для более последовательной подачи. Это делалось для того, чтобы упростить восприятие и снизить темп повествования, хотя все равно есть фидбек, что быстровато. Услышал, думаю, как себя притормозить.
Существенно дополнил и то, что я пишу до и после встреч. Например, теперь мы вспоминаем элементы школьного курса алгебры, разбирая, например, операции возведения в степень и взятия логарифма.
Добавлены и материалы про ковариацию и корреляцию. В рамках следующего потока немного иначе расскажу про стандартную ошибку, кажется текущая версия проще и вообще еще больше опирается на логику, чем математику.
(не покидает ощущение, что я пишу об очередном релизе будь то приложения/патча :))
4. У меня есть желание дополнить материал к новому потоку про синтетический контроль с заходом через анализ временных рядов: AR, MA, ARMA и вот это все, чтоб окончательно закрыть 2-3% специфического тестах. Это материал, если и будет, то в формате "beta", а потому на цене никак не скажется до тех пор, пока не отшлифуется.
Тестирование по Байесу я также хотел бы, вся подводка в наличии, но, пожалуй, пока воздержусь (прости, Виктор).
5. Также есть запрос на колабы/ноутбуки и еще доп. ДЗ на достаточно частные темы. Хоть по тому и другому я все еще придерживаюсь позиции, что "если оно нужно, значит мы пошли куда-то не туда в плане представленного материала", но глас народа важнее. В целом пока есть идея сделать больше подводок к дизайну тестов, расширяя пример из встречи ко встречи, чтобы к выпускному заданию вы были готовы по максимум.
Продолжение далее.
В полку свидетелей A/B прибыло: недавно завершился 6-ой поток, самый большой из всех на данный момент! Отзывы выше, и это лишь их часть, остальное как соберу, закину в комменты.
Ух, это было непросто, но теперь я больше уверен в том, какой размер группы мне по плечу так, чтобы это было максимально комфортно группе.
1. Занятий снова стало больше, так как разбил блок по множественному тестированию, чтобы они легче усвоились. Для всех, кто был ранее, только их и рекомендую пересмотреть, особенно часть про A/B и много метрик, там я переосмыслил процедуры первичной проверки и рассказал про тест Hotelling'a.
Для следующего потока я также подумываю некоторый материал разбить на части, например, Хи-Квадрат и Бутстрап.
2. Материал каждой встречи также был переработан в сторону большей атомизации для более последовательной подачи. Это делалось для того, чтобы упростить восприятие и снизить темп повествования, хотя все равно есть фидбек, что быстровато. Услышал, думаю, как себя притормозить.
Существенно дополнил и то, что я пишу до и после встреч. Например, теперь мы вспоминаем элементы школьного курса алгебры, разбирая, например, операции возведения в степень и взятия логарифма.
Добавлены и материалы про ковариацию и корреляцию. В рамках следующего потока немного иначе расскажу про стандартную ошибку, кажется текущая версия проще и вообще еще больше опирается на логику, чем математику.
(не покидает ощущение, что я пишу об очередном релизе будь то приложения/патча :))
4. У меня есть желание дополнить материал к новому потоку про синтетический контроль с заходом через анализ временных рядов: AR, MA, ARMA и вот это все, чтоб окончательно закрыть 2-3% специфического тестах. Это материал, если и будет, то в формате "beta", а потому на цене никак не скажется до тех пор, пока не отшлифуется.
Тестирование по Байесу я также хотел бы, вся подводка в наличии, но, пожалуй, пока воздержусь (прости, Виктор).
5. Также есть запрос на колабы/ноутбуки и еще доп. ДЗ на достаточно частные темы. Хоть по тому и другому я все еще придерживаюсь позиции, что "если оно нужно, значит мы пошли куда-то не туда в плане представленного материала", но глас народа важнее. В целом пока есть идея сделать больше подводок к дизайну тестов, расширяя пример из встречи ко встречи, чтобы к выпускному заданию вы были готовы по максимум.
Продолжение далее.
🔥5❤1👍1