English translation is not available yet. Showing Russian content.
Что такое statistical power evaluation и как определять размер выборки для A/B теста?
Краткий тезис
Statistical power (power|статистическая мощность) — это вероятность обнаружить реальный эффект в A/B тесте, если он существует. Оценка мощности и расчёт размера выборки критичны для планирования экспериментов: недостаточная выборка ведёт к ложноотрицательным результатам (Type II error), а избыточная — к лишним затратам. Для A/B тестов в LLM/RAG системах, где метрики часто имеют высокую дисперсию, требуется тщательный подбор размера выборки, обычно 500–2000 примеров на группу для обнаружения эффекта в 5% при мощности 80%.
1. Термин: Statistical Power (статистическая мощность)
Statistical power (мощность теста]]) — это вероятность отвергнуть нулевую гипотезу, когда она ложна (т.е. когда реальный эффект существует). Формально: Power = 1 - β, где β — вероятность ошибки II рода (ложноотрицательного результата). Чем выше мощность, тем меньше шанс пропустить реальное улучшение.
В контексте A/B тестирования: если новая версия (B) действительно лучше старой (A) на некоторую величину, мощность — это вероятность того, что тест покажет статистически значимое различие.
Обычно целевая мощность — 0.8 (80%), что соответствует β = 0.2. Это означает, что мы готовы мириться с 20% вероятностью пропустить реальный эффект.
2. Компоненты Power Analysis
Для расчёта мощности и размера выборки нужно задать четыре параметра (три известных, один вычисляется):
| Параметр | Обозначение | Описание |
|---|---|---|
| Уровень значимости | α (alpha) | Вероятность ошибки I рода (ложноположительный результат). Обычно 0.05. |
| Мощность | 1 - β | Вероятность обнаружить эффект. Обычно 0.8. |
| Размер эффекта | δ (effect size) | Минимальный практически значимый эффект, который мы хотим обнаружить. Например, улучшение метрики на 5%. |
| Дисперсия | σ² (variance) | Разброс метрики в популяции. Оценивается по историческим данным или пилотному эксперименту. |
| Размер выборки | n | Количество наблюдений в каждой группе (для двухвыборочного теста). |
Формула для двухвыборочного t-теста (приближённо):
n = 2 * (Z_{α/2} + Z_β)² * σ² / δ²
где Z_{α/2} и Z_β — квантили стандартного нормального распределения для заданных α и β.
Для α=0.05 (двусторонний) Z_{0.025} ≈ 1.96, для β=0.2 (мощность 0.8) Z_{0.2} ≈ 0.84. Тогда (1.96+0.84)² ≈ 7.84, и формула упрощается до:
n ≈ 15.7 * σ² / δ²
3. Как определить размер выборки на практике
Шаги:
- Выберите метрику (например, conversion rate, CTR, score в RAG).
- Определите минимальный эффект (δ), который вы считаете практически значимым. Обычно 1–10% относительного изменения.
- Оцените дисперсию (σ²) метрики. Для бинарных метрик (конверсия) дисперсия = p*(1-p), где p — базовая конверсия. Для непрерывных метрик (время ответа, оценка качества) — по историческим данным.
- Задайте α и β (обычно 0.05 и 0.2).
- Рассчитайте n по формуле или используйте готовые библиотеки (statsmodels, scipy).
- Учтите множественное тестирование (поправка Бонферрони) и возможные потери (например, 10% пользователей отваливаются).
Пример для бинарной метрики: базовая конверсия 10%, хотим обнаружить относительное улучшение на 20% (т.е. с 10% до 12%, δ = 0.02). Дисперсия σ² = p*(1-p) = 0.1*0.9 = 0.09. Тогда n ≈ 15.7 * 0.09 / (0.02)² = 15.7 * 0.09 / 0.0004 = 15.7 * 225 = 3532.5. То есть нужно около 3500 наблюдений на группу.
4. Особенности для LLM/RAG A/B тестов
В контексте LLM и RAG систем A/B тесты часто проводятся на ограниченном наборе запросов (например, 1000–10000). Метрики могут быть:
- Объективные: latency, cost, количество токенов.
- Субъективные: оценка качества ответа (human evaluation или LLM-as-judge), faithfulness, relevance.
Дисперсия субъективных метрик может быть высокой из-за вариативности LLM и разной сложности запросов. Поэтому для обнаружения небольших эффектов (δ=5%) требуется больше примеров. Эмпирическое правило: для power 80% и δ=5% нужно 500–2000 примеров на ветку, но точное число зависит от дисперсии.
Также важно учитывать multiple comparisons при тестировании нескольких метрик одновременно.
5. Пример расчёта в Python
import scipy.stats as stats
import statsmodels.stats.power as smp
# Параметры
alpha = 0.05
power = 0.8
effect_size = 0.05 # Cohen's d для непрерывной метрики
# Или для пропорций:
prop_A = 0.5
prop_B = 0.55
effect_size_prop = prop_B - prop_A # 0.05
# Для t-теста (непрерывная метрика)
n = smp.TTestIndPower().solve_power(effect_size=effect_size, alpha=alpha, power=power, alternative='two-sided')
print(f"Необходимый размер выборки на группу (t-test): {n:.0f}")
# Для z-теста пропорций (бинарная метрика)
from statsmodels.stats.proportion import proportion_effectsize
es = proportion_effectsize(prop_A, prop_B)
n_prop = smp.NormalIndPower().solve_power(effect_size=es, alpha=alpha, power=power, alternative='two-sided')
print(f"Необходимый размер выборки на группу (пропорции): {n_prop:.0f}")
6. Ошибки и подводные камни
- Игнорирование дисперсии: если дисперсия оценена неправильно, расчёт размера выборки будет неверен. Используйте пилотные данные или бутстреп.
- Множественное тестирование: если проверяете много метрик, увеличивайте α или используйте поправки (Bonferroni, FDR).
- Неучёт сезонности и когортных эффектов: данные могут быть нестационарны.
- Peeking (подглядывание): не останавливайте тест раньше времени, если результат стал значимым. Используйте sequential testing.
- Неравные группы: если группы разного размера, мощность падает.
7. Пет-проект для закрепления
Задача: Разработать скрипт для расчёта размера выборки для A/B теста метрики "faithfulness" в RAG системе. Faithfulness оценивается LLM-as-judge по шкале 0–1 (непрерывная метрика). Базовая средняя faithfulness = 0.7, стандартное отклонение = 0.2. Хотим обнаружить улучшение на 0.05 (до 0.75) с мощностью 80% и α=0.05.
Инструменты: Python, scipy, statsmodels, pandas.
Шаги:
- Собрать исторические данные faithfulness на контрольной группе (пилот).
- Оценить среднее и стандартное отклонение.
- Рассчитать Cohen's d = (0.75 - 0.7) / 0.2 = 0.25.
- Использовать TTestIndPower().solve_power(effect_size=0.25, alpha=0.05, power=0.8).
- Вывести необходимый размер выборки.
- Добавить симуляцию: сгенерировать синтетические данные для контрольной и тестовой групп с заданным эффектом, провести t-тест, проверить, что доля значимых результатов близка к 80%.
Ожидаемый результат: Скрипт выводит n ≈ 253 на группу (для Cohen's d=0.25). Симуляция подтверждает мощность около 80%.
8. Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 490 | Как проводить A/B тестирование в RAG системах |
| 492 | Метрики для оценки RAG (faithfulness, relevance) |
| 493 | Bootstrap и доверительные интервалы |
| 494 | Множественное тестирование и поправки |
| 495 | Sequential testing и stopping rules |
| 496 | Power analysis для непараметрических тестов |
9. Навигация
- Предыдущий: 490
- Следующий: 492
- Индекс: 00. Индекс разборов
Навигация
- Предыдущий: 490
- Следующий: 492
- Индекс: 00. Индекс разборов