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
75 - Telegram Web
Telegram Web
Привет, товарищи статистики!

Пока жду выпуска своей большой статьи по Mann-Whitney, я хочу поговорить о моем любимом понятии как ожидаемое значение, оно же expected value, E(X). Его я встречаю в разных областях математики, которыми интересуюсь: само собой в статистике, в теории принятия решений, теории игр и пр.

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

Дело даже не в том, что считаются они по-разному: E(X) через вероятность значения случайной величины, а среднее через сумму значений на кол-во значений. Пример:
[1, 2, 3]
Mean = (1+2+3)/3 = 2

E(X) = 1*P(1) + 2*P(2) + 3*P(3)
Где каждую P мы считаем на основе частоты встречаемости элемента; для всех это P = 1/3, так как у нас каждое значение 1, 2 и 3 встречается по одному разу

Основное различие состоит в том, что E(X) является пределом, к которому сходится среднее в рамках заданной "системы".

1) Классический пример, кубик с 6-ю гранями, о котором заранее известно, что он честный, значит вероятность каждой стороны = 1/6.
E(X) = 1*1/6+2*1/6+3*1/6+4*1/6+5*1/6+6*1/6 = 3.5

Сделаем два броска: [1, 4] - среднее 2.5. Еще бросок: [1, 4, 6] - среднее 3.66. Если мы проведем еще серию бросков, желательно бесконечную)), то среднее будет стремится к 3.5 (картинку оставлю в комментариях)

2) Более наш пример, про данные: пускай у нас есть генеральная с mu=24. Возьмем выборку из n=2 без возвращения (забрали у генеральной и не вернули обратно):
[21, 23] - среднее 22

Возьмем еще элемент:
[21, 23, 26] - среднее 23.33

Если мы будем и далее выгребать всю генеральную до предела, что наша выборка станет самой генеральной, то среднее такой выборки сведется к mu=24.

Это же значение прям круто себя раскрывает, если знаешь вероятности успеха и неуспеха.
- Например, выиграть в казино в рулетке, если делаешь ставку на конкретное поле, = 1/38, а проиграть = 37/38. Тебе обещают кратно увеличить твой рублик при выигрыше, пускай это будет 20р. Но если проиграешь, то минус рубль (-1р.)
20*1/38 + (-1)*37/38 = -0.44р. - интерпретируя, в долгосрок проиграешь. И это не так уж очевидно, не зная про вычисление E(X).
- Или если принимаешь решения, с возможность хотя бы прикинуть их выгоду и стоимость. Например, сделать фичу, которая даст +2000; если не сделать - упущенная выгода (-2000):
->обратиться к подрядчику А -> успех P=0.8 -> стоимость (-1000)
->обратиться к подрядчику B -> успех P=0.7 -> стоимость (-700)
E(A) = (2000-1000)*0.8+(-2000-1000)*0.2 = 200
E(B) = (2000-700)*0.7+(-2000-700)*0.3 = 100
Выбираем А, выгоднее.

Но проблема в том, что эти вероятности системы не даются вот так просто (откуда мы взяли вероятность успеха подрядчиков А и B?). Часто надо собирать статистику, определяя вероятность согласно частотному подходу: сколько успехов из стольки-то попыток. 7 из 10. И, конечно, это лишь та вероятность, которую мы смогли вычленить из доступных нам для наблюдения попыток. Те же 100 попыток могли показать нам 50 успехов, что не только отличается от 7/10, но и взвешеннее.

Поэтому E(X) является теоретическим понятием. И его активно используют в статистике, когда говорят, к чему сведется величина, например среднее выборочных средних больших выборок а-ля E(cр.X) = mu = 24. А среднее - эмпирическим понятием (на практике именно его и считаем), используемым для выборок.
Как отличить математика от статистика?

Привет, товарищи статистики!

Есть два определения ЦПТ, оба я приведу из вики, но с той лишь разницей, первое будет из русской вики, а второе - из английской. Отмечу особенность: обе страницы самобытны и не связаны между собой переводом.

1) Из русской википедии:
*тут: сконцентировались и быстро читаем, особо не задумываемся*
- сумма достаточно большого количества слабо зависимых случайных величин, имеющих примерно одинаковые масштабы (ни одно из слагаемых не доминирует, не вносит в сумму определяющего вклада), имеет распределение, близкое к нормальному.

2) Из английской википедии:
*а вот это для нас, статистиков, важнее*
- states that, under appropriate conditions, the distribution of a normalized version of the sample mean converges to a standard normal distribution.

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

На мой взгляд именно потому, что вопросы, связанные с выборками и проблемами вокруг них, волнуют больше статистика, и он, конечно, мог бы заниматься суммами слабых бла-бла, любя играть в кости, и говорить о них больше, чем о выборочных средних, как это блестяще делает математик 3Blue1Brown но, честно сказать, это вообще мало отвечает на вопросы следствий ЦПТ в рамках работы с выборками, которые коротко может записать так: "И чё? йопта"

Если спуститься с небес определений в найм, то понимание, почему таки работает статистика, у кандидата можно выяснять двумя последовательными вопросами:
1. Что такое ЦПТ? - если ответ будет про суммы, уже очень вероятно, что этого понимания нет, но надо обязательно спросить более сакральное, вы готовы?

2. И чё?
Ну, вот распределяются эти твои средние нормально и-и-и-и?
(я уж не говорю про суммы, это вообще так себе путь для понимания работы статистики)

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

И это бич подачи статистики, при том что статистика это не про математику, которая присутствует там, пожалуй, в основном в виде базовых операций. Да, там есть нетривиальные вещи, но вы будете готовы к ним, когда к ним придете. Отсюда я прям глубоко согласен с картинкой (будет в комменте), что "stats is not math". Верится с трудом, да? Ну, тогда ждите пост про новый поток, а там сами все увидите, заодно и на вопрос "и че?" узнаете ответы.
Так получилось, что за неделю меня спросили несколько разных людей о статье про Mann-Whitney, главный вопрос был - когда. Отвечаю:

В лучшем случае в течение месяца.
Почему так? Редакция и ряд согласований еще не окончены. И это неспроста:

- Сейчас объем этой статьи составляет 48 листов A4, будут сокращения, но это неточно.

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

Поэтому читать придется много и далеко не только об одном Mann-Whitney (внезапно! Да, мы поговорим в деталях и о ряде других тестов), готовьтесь. Единственное, что могу немного успокоить: уровень объяснения будет ровно так, как я и люблю - для детей.

- Чем ближе статья к релизу, тем больше меня просят отработать то один, то другой комментарий. Я, честно сказать, видеть ее уже не могу; сопротивляюсь и немного медлю :)

- Вообще, первый драфт я написал как раз в апреле прошлого года. То есть пишу ее уже год! И переписывал ее не единожды, где-то под напором переосмыслений, где-то мне не нравилась подача и структура, где-то целые абзацы ставились под сомнение аналитиками X5. Некоторые вещи я переписывал в том числе на днях, уже сам напрягая других сделать вычитку.

- Так как контекст статьи это инструмент Яндекса, VarioQub, который как раз и использует Mann-Whitney, то первая публикация будет именно у них на блоге, скорее всего в блоге AppMetrica. Так вот, они предельно серьезно рассматривают каждую запятую, учитывая, что речь пойдет о сердце их инструмента; есть и еще кое-что, но об этом я уже скажу, когда, наконец, будет публикация.

Это далеко не первая моя статья, в том числе по статистике. Но я могу уже уверенно сказать о ней следующее: это мой magnum opus за все время написания постов и статей в народ в рамках аналитики. (есть, конечно, и еще один такой труд в другой области, но о нем как-нибудь в другой раз, не все же карты раскрывать :) )
Хотелось бы верить, что на нее будут массовые ссылки с исключительно положительным оттенком, когда кому-то захочется понять Mann-Whitney раз и навсегда.

В общем, ждите, уверен, вы не пожалеете.
Привет, товарищи статистики!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Во-первых, хочется сказать, это то, что я полностью согласен с тем, что они написали на лендинге:
"90% - применение наиболее частых критериев; 5% - критериев, которые не на слуху; 5% - кастомной жести". Так оно и есть!

Во-вторых, скорее всего неспроста после вводной части про критерий и мощность переходят на биномиальный тест и его апроксимацию. Мне это говорит о том, что путь промышленной проверки стат. гипотез у Авито начинался не с A/B-тестов, а мониторинга метрик: вероятно, они следили за поведением всяких CR'ов в регистрации, оплаты и пр. в рамках некоторого временного окна соотнося с предпериодом, который служил историческими данными, наблюдали отклонения. А первые же A/B были на тоталах по CR (как и у всех без сырья по юзерам).

Интересно! Отдельно бы отметил простую подачу поправки Ейтса и упоминание про дов.интервалы Вилсона: что еще раз говорит о фокусе Авито.

В-третьих, Тимур (ведущий) рассказывал все с большим энтузиазмом, видно, что ему по душе это, нескучно + лично меня мотивирует!

Но кому я мог бы его порекомендовать?

1) Точно не новичкам.
- Ребята полуакадемичны, сразу идут с тяжелых фигур и с тем, которые волнуют именно их, это заметно (но в этом есть плюс, о нем ниже), а потому у вас должно быть на входе сразу базовый мат. аппарат с пониманием, например, что такое биномиальное распределение; они объясняют, но видят в аудитории не новичков; они прямо говорят на лендинге, что делать, если возникнут вопросы: "Подать заявку на поступление в Академию Аналитиков Авито =)"

- используют питон, подчеркивая, что ключевой навык будет такой: "студент умеет использовать специализированные библиотеки Python для решения статистических задач". Отмечу, что для решения стат. задач надо понимать статистику и то, что представляют собой все эти критерии, при этом весьма досконально. Библиотеки же являются просто удобным инструментом; сами по себе роли не играют.

Итого, требования на входе: крепкая мат.база + питон. Новички или те, кто не первый месяц ломает зубы о статистику, проходите мимо, я серьезно, может демотивировать.

2) Курс скорее подходит как доп. материал по темам статистики сильным джунам-аналитикам и выше по грейду.

3) НО! По-настоящему он может быть вам полезен, если... вы хотите работать в Авито. Если вы уделите внимание тестам, про которые они рассказывают, - особенно связанными с метриками отношения (как есть и в агреггированом виде), - и не постесняетесь взять их слова себе в уста, то у вас будет больше шансов на успех в собеседовании с ними. Темы курса - это то, что они будут спрашивать с особой тщательностью (я б так точно бы сделал); не удивлюсь, если этот курс пополнит рекомендованных список тем для кандидатов в их HR-секции.

Напоследок, надо сказать ребятам из Авито большое спасибо за вклад в образование! 👏

P.S. Их материал в том числе сказался на моем курсе, что тут скажешь, еще +1 лекция, хорошо-хорошо, убедили, биномиальное и Ко теперь в базе. Ох, я уж и забыл, что такое весь выходной потратить на презентацию.
Привет, товарищи статистики!

Набросок по одному из способов останавливать тест заранее.

Если вы читали пост по подглядыванию в тест, то могли увидеть/предположить, что 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, но расчеты пока меня позамучили)
Привет, товарищи статистики!

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

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

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

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

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

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

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

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

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

В общем, будете на конфе, дайте парой слов перекинемся!
Привет, товарищи статистики.

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


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

Вот такие вот впечатления.
Привет, товарищи статистики!

Ну, что, совершилось - статья про 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. Буду рад комментариям, стал ли тест для вас понятнее.
2024/12/22 15:48:26
Back to Top
HTML Embed Code: