Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
80 - Telegram Web
Telegram Web
Привет, товарищи статистики!

1.1 Вчера завершился 4-ый поток "Основы A/B", подумать только, уже 4-ый... Спасибо участникам! Рад, что "пристатистились", надеюсь, вам действительно понравилось!

4-ый поток был на 2 встречи дольше, так как я решил, во-первых, выделить в отдельную тему множественное тестирование, добавив нее разбор поправок Бенъямими-Хохберга и Сториса; во-вторых, осознал, что надо обязательно рассказать про метрику отношения, бустрап и линеаризацию.

Поэтому обращаюсь к участникам предыдущих потоков: сделайте мне одолжение, ПРОШУ, посмотрите, пожалуйста, эти две темы (№10 и №11) -> в расшаренную на вас папку уже все выложил, префикс "UPD".

Также я уточнил встречу №6 про Нулевую гипотезу, ее тоже рекомендую пересмотреть-освежить.

1.2. Да, вот уже который раз думаю до старта нового потока: "Ну, вот теперь уж точно материал "тот самый"!". Но нет, каждый раз что-то да и изменю, то ли на слайде, то ли сам слайд; а так как я не удаляю скрытые слайды, то обнаружил, что в среднем с их учетом, - а их примерно половина, - у меня каждая презентация получается на 300 слайдов :)

2. Начинаю набор на 5-ый поток. Я бы хотел начать через пару недель, не раньше, надо немного передохнуть. Минимального кол-ва участников у меня нет, так что даже если будет 1 участник, потоку быть. А вот максимальное кол-во есть, так как нагрузка.

Список тем на картинке, что они включают в себя более подробно тут.

История платная: каждый поток веду лично, оказывая максимальное сопровождение по материалу; веду с удовольствием, в душе педагог; подача такая, будто надо объяснить детям, чтобы они могли объяснить это другим детям, кстати, скоро напишу отдельный пост, связанный с этим.

Обучение идет по вечерам по Мск, 2-3 раза в неделю, идет чуть больше месяца.

Полагаю, интересуют отзывы: часть я еще собираю, часть в картинках. Более того, прошедшие могут при желании написать комментарий к этому посту (с критикой в том числе, если считают нужным).

В общем, желающие, cмело мне пишите в ЛС, если тоже хотите "пристатиститься"!
👍41
Привет, товарищи статистики!

В прошлом посте я обещал рассказать про максимально простое объяснение.

Так вот, этот пост будет о нерепрезентативной, но безусловно прекрасной выборке, которая слушала со мной все потоки от начала и до конца и которой я безмерно благодарен, пост о моей супруге :)

Моя Виктория не занимается аналитикой и не собирается. К моменту старта 1-го потока у нее не было никакой необходимости изучать статистику от слова совсем. И, - что важнее, - желания, как она мне сказала такого хотя бы просто для себя изучить тоже не было; во всяком случае далее научпопа это бы вряд ли зашло, не ее это и все. Из предварительных знаний, которые могли бы помочь в усвоении материала, у нее были некоторые воспоминания о школьный программе по математике; в вузе, кстати, никакой статистики не было.

Но если необходимости нет, желания стать аналитиком тоже, тогда как она оказалась слушателем? А ей было просто интересно послушать меня; правда, она сразу сказала, что если будет ничего не понятно, то извини, любимый, но смысла просто сидеть и смотреть материал нет. Поэтому надо было подойти к материалу так, чтоб ПОНЯТНО было.

И знаете что? Вам, кто еще не был на курсе, придется мне поверить наслово (да-да, красивая маркетинговая история, бла-бла) - Виктории все было понятно. Да, после некоторых встреч кое-что дополнительно объяснял (что, кстати, местами как следствие отразилось на материале, а местами нет, как корень из числа), но она способа ответить на вопросы, - может и не строго по форме, но по сути, - на которые не могут ответить нередко кандидаты.

То есть
если бы компании нужен был дизайнер A/B тестов и только, она могла бы им легко стать!

Именно ее понимание я считаю самым большим успехом своей работы над материалом! Теперь подумайте: каковы ваши шансы, при том, что часть из вас это необходимо узнать, а другой части - желаемо узнать, кому-то и то, и другое? То-то же.

Я очень благодарен любимой за всю оказанную поддержку и помощь!

Видели-слышали Викторию? Нет? А она на курсе была и еще будет :)
👍8
Привет, товарищи статистики!

С праздником труда, товарищи! (но, надеюсь, без труда на сегодня)

Недавно в аналитических чатах, - рабочих и публичных, - скидывали ссылку на курс по прикладной статистике от Авито. Ребята из Авито заслуженно считаются одними из ведущих аналитиков в РФ; время от времени перечитываю статьи их ведущего аб-тестера, Димы Лунина, что и вам советую. В общем, не мог не ознакомиться с курсом, так как:

а) интересно, как ту или иную тему подают коллеги по цеху, как выстроена подача, а главное - логика повествования
б) интересно найти новые определения (с неожиданной стороны) известного

Надо понимать, что ни я, ни ребята не придумывали статистику; мы когда-то сами впервые открывали учебники, статьи, видеоуроки. Теперь настало наше время передавать свой опыт, а передавать мы его будет с учетом не только, как нам это подавали, но и как мы это осмысливали и как практиковали. За подачей я вижу практику и решаемые проблемы, это же переложимо и для ребят из Авито. Итак, впечатления:

Во-первых, хочется сказать, это то, что я полностью согласен с тем, что они написали на лендинге:
"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, но расчеты пока меня позамучили)
👍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. Судя по снегу в мае, это лето снова будет холодным. П - Питер, чтоб его.
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
👍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 (но тоже не без некоторых предварительных требований).
👍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-го рода
👍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
- статья про мощность - про нее-то я ничего не сказал, но статья самодостаточная
- интро-видосик от Райффезана
В остальном материала очень мало, поэтому что? - верно, шарим этот, если зашел. Может, на хабр статью заряжу как переложение этой, думаю.
👍21🔥1
Привет, товарищи-статистики!

Давно ничего не писал, у меня есть в голове пара тем, про которые хочу рассказать, но о них надо очень конкретно, а это требуют времени, с которым сейчас туго, честно говоря.

Поэтому напишу пост в поддержку будущей конференции - Aha '24 (прости, Леша, я слоупок), которая будет 6 июня в Москве. Эту конференцию, как и ее старшую сестру, Матемаркетинг, я считаю стоящей того, чтобы посетить; никогда не жалел, что был ее участником/посетителем, только светлые воспоминания.

Для меня несколько причин ее посетить:
1. Хочу послушать следующие доклады:
- "Causal Impact. Как делать эксперименты там, где нет классический AB-тестов. Теория, практика и "подводные камни" метода" - от Дмитрия Казакова я уже слушал его, вот ссылка (спасибо Юре Борзило); да, вероятно он расскажет в том же ключе, но повторение не будет лишним

- "Как каузальные графы и линейные модели ответят на все ваши вопросы в A/B-тестах"

- "Влияние сетевого эффекта в AБ-тестах на unit-экономику в ритейле"

- "Вечный контроль: зачем он нужен и как организовывать его так, чтобы не сойти с ума"
Уверен, будет интересно!

2. Нетворкинг: хочется пожать лапки не только коллегам лично, все-таки из-за удаленки и другого города давно не виделись, но Юре и Елене (подписывайтесь на их канал, ставьте лайки... - к их постам я обязательно вернусь в рамках волнующих меня тем)

3. Не работать Та не, ноут будет со мной, никуда не денусь))

В общем, будете на конфе, дайте парой слов перекинемся!
🔥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 стат. значимый прирост, но из-за повышенных расходов по экономике убыток.


Уже только благодаря этим докладам я рад, что побывал на конфе. Но помимо этого увиделся со многими вживую: рад был всех увидеть и пообщаться!

Вот такие вот впечатления.
👍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. Буду рад комментариям, стал ли тест для вас понятнее.
👍1210🔥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мело мне пишите в ЛС :) О тех, кто уже это сделал, я помню, напишу.
🔥12👍6
Привет, товарищи статистики!

Все собирался пост написать, да не мог. Но в моем случае часто работает "спросили интересный вопрос" -> "родился пост". В общем, благодаря беседе в чате Юры Борзило и вопросу Сергея в частности (спасибо!) этот пост и появился (но немного с другой постановкой вопроса):

"Допустим запустили мы АБ, получили p-value 0.051 (уровень значимости alpha = 0.05), что делать?"
👍9
Привет, товарищи статистики!

Держите в конце рабочей недели первую часть про введение в психо мета-анализ: разберемся в основной сути метода Фишера для независимых гипотез (это когда у нас из теста в тест конкретной фичи идет разная конфигурация юзеров/объектов в A/B), попутно ответив на вопрос, почему комбинация [0.051, 0.051] стат. значима. Точнее не то, что ответим, а все как я люблю - увидим это.

Тест комбинированной вероятности Фишера, ч-1, основная суть.

В следующий раз пройдемся по преобразованию для этого метода. Какому и зачем? А в статье все написано, читайте!
🔥12👍5
Привет, товарищи статистики!

Я вам тут 2-ю часть про метод Фишера принес (1-ая выше):

Тест комбинированной вероятности Фишера, ч-2, преобразование и "вывод" формулы

Надеюсь, вопрос об оперируемой формуле этого мета-анализа для вас снимется. Have fun!
🔥10👍3
2025/07/10 20:09:26
Back to Top
HTML Embed Code: