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
68 - Telegram Web
Telegram Web
Понимаем процедуру последовательного тестирование 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
Привет, comrades statisticians!

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

Со статьей и интервью рекомендую ознакомиться, если не видели.
👍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 альфой же для себя как-то разобрались :)
- Надо помнить, мы можем говорить о пределе только ссылкой на набор наших параметров в рамках теста: сигма, альфа, аудитория. Оно не может быть обобщающим.
👍2
Привет, товарищи-статистики!

В полку свидетелей A/B прибыло: недавно завершился 6-ой поток, самый большой из всех на данный момент! Отзывы выше, и это лишь их часть, остальное как соберу, закину в комменты.

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

1. Занятий снова стало больше, так как разбил блок по множественному тестированию, чтобы они легче усвоились. Для всех, кто был ранее, только их и рекомендую пересмотреть, особенно часть про A/B и много метрик, там я переосмыслил процедуры первичной проверки и рассказал про тест Hotelling'a.

Для следующего потока я также подумываю некоторый материал разбить на части, например, Хи-Квадрат и Бутстрап.

2. Материал каждой встречи также был переработан в сторону большей атомизации для более последовательной подачи. Это делалось для того, чтобы упростить восприятие и снизить темп повествования, хотя все равно есть фидбек, что быстровато. Услышал, думаю, как себя притормозить.

Существенно дополнил и то, что я пишу до и после встреч. Например, теперь мы вспоминаем элементы школьного курса алгебры, разбирая, например, операции возведения в степень и взятия логарифма.

Добавлены и материалы про ковариацию и корреляцию. В рамках следующего потока немного иначе расскажу про стандартную ошибку, кажется текущая версия проще и вообще еще больше опирается на логику, чем математику.

(не покидает ощущение, что я пишу об очередном релизе будь то приложения/патча :))

4. У меня есть желание дополнить материал к новому потоку про синтетический контроль с заходом через анализ временных рядов: AR, MA, ARMA и вот это все, чтоб окончательно закрыть 2-3% специфического тестах. Это материал, если и будет, то в формате "beta", а потому на цене никак не скажется до тех пор, пока не отшлифуется.

Тестирование по Байесу я также хотел бы, вся подводка в наличии, но, пожалуй, пока воздержусь (прости, Виктор).

5. Также есть запрос на колабы/ноутбуки и еще доп. ДЗ на достаточно частные темы. Хоть по тому и другому я все еще придерживаюсь позиции, что "если оно нужно, значит мы пошли куда-то не туда в плане представленного материала", но глас народа важнее. В целом пока есть идея сделать больше подводок к дизайну тестов, расширяя пример из встречи ко встречи, чтобы к выпускному заданию вы были готовы по максимум.

Продолжение далее.
🔥51👍1
2025/10/12 11:39:05
Back to Top
HTML Embed Code: