TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Интересное что-то

3 May 2024, 20:49

Открыть в Telegram Поделиться Пожаловаться

Репост из: Заскуль питона (Аналитика данных)
🆎 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-тесты не работают

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

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

70 0 3
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot