🆎 MDE и Uplift в A/B тестах



MDE - минимальный детектируемый эффект в A/B тестах. Тот эффект, который мы планируем задетектировать при заданном уровне мощности и ошибке первого рода.



Например, мы рассчитали критическое значение из нулевого распределения статистики (верной H0). Придумали критерий и зафиксировали alpha на уровне 0.05.



1️⃣ Что в данном случае ошибка первого рода?

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



2️⃣ Что такое ошибка второго рода?

Теперь представьте, что у нас есть альтернативное распределение статистики (H1). Мощность - это вероятность того, что мы отклонили нулевую гипотезу, при условии, что альтернатива верны (TP).



😙 Так вот, MDE говорит следующее. При заданном уровне мощности и ошибки первого рода найди мне МИНИМАЛЬНЫЙ ЭФФЕКТ.



Напоминаю, что формула MDE выглядит так, в предыдущем посте есть:



import numpy as np

from scipy.stats import norm



alpha = 0.05

power = 0.8

std = 20

sample_size = 10000



(norm.ppf(1 - alpha) + norm.ppf(power)) * std / np.sqrt(sample_size)




🐍 Самостоятельно можно запрогать и посмотреть следующим образом:



from scipy.stats import norm



mu_h0 = 100

std = 20

alpha = 0.05

power = 0.8



crit_value = norm(mu_h0, std).ppf(1 - alpha)

diff = np.linspace(0, 100, 10000)

powers = 1 - norm(mu_h0 + diff, std).cdf(crit_value)

mu_h1 = mu_h0 + diff

mu_actual_power = mu_h1[powers >= power].min()



print(mu_actual_power)



print(mu_h0 + (norm.ppf(1 - alpha) + norm.ppf(power)) * std)




Как мы видим: минимальное значение статистики при условии, что мощность = 0.8.



😱 А когда мы сравниваем наблюдаемый аплифт с MDE, подставляя фактические значения после теста, мы можем получить, например, мощность, которая оказалась меньше, чем при дизайне



✝️ Означает ли это то, что критерий плох?

Нет, потому что в ситуации получения статзначимых результатов нас волнует только значение p-value при верной H0 (при односторонней гипотезе).



🥂 Дополнительные материалы, которые советую почитать по этой теме:

1. Статья на Хабр. Как же мощно я провел A/B-тест, или почему не стоит сравнивать наблюдаемый аплифт с MDE.

2. Статья на Medium. Когда останавливать A/B-тест? Часть 1: MDE

3. Статья на X engineering. Power, minimal detectable effect, and bucket size estimation in A/B tests

4. Хабр. Шесть причин, почему ваши A/B-тесты не работают



Ставьте 🕺, если пост был интересным, делитесь с друзьями, пишите комментарии



🍔 Если захотите какие-то кастомные реакции, оформление текстов, велком (буст).

Поддержать канал