Что такое effect size
Зачем
P-value показывает, есть ли эффект. Effect size — насколько он велик.
Маленький эффект может быть значимым на огромной выборке, но бизнес-бесполезным. Большой эффект на маленькой выборке — может не быть значимым, но важным для бизнеса.
Простой пример
В A/B-тесте конверсия:
- Контроль: 5.0%.
- Тест: 5.1%.
- Lift: +2% (relative).
- p-value < 0.001 (значимо благодаря 1M пользователей).
Effect size очень маленький. Стоит ли катить?
- Если затраты на разработку фичи $10k → возможно нет.
- Если 1 час работы → катим.
Виды effect size
1. Cohen's d (для средних)
Стандартизованная разница средних:
d = (mean₁ - mean₂) / pooled_stdИнтерпретация (Cohen):
- 0.2 — small.
- 0.5 — medium.
- 0.8 — large.
2. Cohen's h (для пропорций)
Для разницы между конверсиями:
h = 2 * arcsin(√p₁) - 2 * arcsin(√p₂)Те же пороги (0.2, 0.5, 0.8).
3. r (correlation)
Для регрессии и корреляций:
- 0.1 — small.
- 0.3 — medium.
- 0.5+ — large.
4. Cramér's V (для chi-square)
Для категориальных переменных:
- 0.1 — small.
- 0.3 — medium.
- 0.5+ — large.
Расчёт в Python
Cohen's d
import numpy as np
def cohens_d(group1, group2):
diff = np.mean(group1) - np.mean(group2)
pooled_std = np.sqrt((np.std(group1)**2 + np.std(group2)**2) / 2)
return diff / pooled_std
d = cohens_d(control, treatment)
print(f'Cohen\'s d: {d:.3f}')Cohen's h для пропорций
def cohens_h(p1, p2):
return 2 * np.arcsin(np.sqrt(p1)) - 2 * np.arcsin(np.sqrt(p2))
h = cohens_h(0.05, 0.06)
print(f'h: {h:.3f}')Через библиотеку
from scipy import stats
import statsmodels.stats.api as sms
# Cohen's d
es = sms.tt_ind_solve_power(...)Больше таких примеров с разборами — в Telegram-тренажёре. Короткие сессии, прогресс по темам, объяснения после каждого ответа.
Effect size vs p-value
p-value effect size
Маленький N | может быть может быть значим
незначим для бизнеса
Большой N | всегда значим значим только если
даже при реально большой
крошечном
эффектеИспользуйте оба: p-value для статистической значимости, effect size для практической.
Effect size в дизайне A/B
При планировании теста через power analysis:
- Какой минимальный effect size, который нам важно поймать (MDE)?
- Какая мощность? (обычно 0.8).
- Какой α? (0.05).
- → Размер выборки.
from statsmodels.stats.power import TTestIndPower
analysis = TTestIndPower()
n = analysis.solve_power(effect_size=0.2, alpha=0.05, power=0.8)
print(f'Sample size: {n:.0f} per group')
# → Sample size: 393 per groupМеньший effect size → больше выборка нужна.
Частые ошибки
1. Полагаться только на p-value
«p < 0.001 → катим». Без эффекта значит, что результат измерим, но возможно бесполезен.
2. Игнорировать effect size
«Lift +0.1%, p<0.05» — радоваться рано. Это технически значимо, бизнесу — нет.
3. Использовать Cohen's d для пропорций
Cohen's d — для непрерывных. Для пропорций — Cohen's h.
4. Слишком высокая планка
«Только large effect (d > 0.8) ловим». Часто реальные эффекты — small / medium. Будете пропускать важные.
Как использовать на практике
При планировании
«Какой effect size мы хотим поймать?» → определяет размер выборки.
При интерпретации
- p-value: значимо?
- Effect size: насколько большой?
- Confidence interval: насколько уверенно?
Все три — для зрелого решения.
При обсуждении с PM
«Мы поймали +5% lift, effect size medium. Это reliable improvement, рекомендую катить.»
Не «p<0.001, катим».
Если готовишься к собесу — бот @kariernik_bot закрывает 80% технических вопросов. SQL, Python, A/B, продуктовые метрики — всё в одном месте.
Примеры из жизни
Хорошо
«Lift конверсии +20%, Cohen's h = 0.4 (medium-large effect), p<0.001 на n=10k. Катим.»
Плохо
«Lift +0.05%, p<0.001 на n=10M. Технически значимо, effect size near zero. Не катим.»
Хитро
«Lift +30%, p=0.07 на n=200. Effect size large, но мощности не хватило. Продлеваем тест.»
Связь с power analysis
Power = вероятность задетектить эффект данного размера.
Power = f(N, effect_size, α)При фиксированных α и power — N обратно пропорционален quadratically effect_size:
- Effect 0.5 → нужно N=64.
- Effect 0.2 → нужно N=400.
- Effect 0.1 → нужно N=1600.
Чем меньше эффект, тем больше нужна выборка.
Читайте также
FAQ
Какой effect size «good»?
Зависит от контекста. В медицине ловят 0.2 (важно). В digital marketing 0.5+ — отлично.
Почему важно вместе с p-value?
P-value говорит «есть эффект». Effect size — «насколько большой». Без второго — неинформативно.
Cohen's d сложно считать?
Нет. (mean1 - mean2) / pooled_std. Pandas / scipy считают за секунду.
Малый effect size = плохо?
Нет. В медицине крошечный effect может спасать жизни. Контекст определяет.