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