Статистика
t-тест Стьюдента: как пивовар изменил всю науку
В 1908 году пивовар Гиннесса Уильям Госсет изобрел t-тест, но компания запретила публикацию - коммерческая тайна. Он опубликовал под псевдонимом «Student». Сегодня t-тест работает в каждом A/B тесте Booking.com, Netflix и Google.
- A/B тесты в Booking.com и Netflix - основа каждого эксперимента
- Клинические испытания FDA: сравнение препарата с плацебо
- Google Ads: проверка конверсии новых объявлений vs контроль
- Sklearn t-test в feature selection для ML моделей
- Парный t-тест: эффект обучения нейросети до/после fine-tuning
- Производственный контроль качества: партия соответствует стандарту?
Предварительные знания
- (no prerequisites)
Почему нельзя просто использовать нормальное распределение
**Дублин, 1906 год. Уильям Сили Госсет работает химиком на пивоваренном заводе Guinness.** Его задача: выбрать лучший сорт ячменя. Эксперимент дорогой - можно позволить только 5-10 образцов. Обычная статистика того времени требовала «достаточно большой выборки». Что значит «достаточно»? Госсет выводит точное распределение для малых n. Компания Guinness запрещает публикации (коммерческая тайна). Госсет публикует результат в 1908 году под псевдонимом **«Student»**. Его распределение до сих пор называется «распределением Стьюдента». t-тест Стьюдента - самый используемый статистический тест в мире: каждый A/B тест, каждое клиническое испытание, каждое сравнение ML-моделей. Всё это - пивовар с псевдонимом.
**Чему этот урок учит на самом деле**: не «как подставить в формулу t = (X̄ - μ₀)/(S/√n)», а **зачем нужно отдельное распределение для малых выборок**. При малом n оценка σ сама по себе неточна - и это добавляет дополнительную неопределённость. Распределение Стьюдента честно её учитывает. После урока: три вида t-тестов, Cohen's d, и почему Welch t-тест должен быть дефолтным.
Почему нельзя просто использовать нормальное распределение
При z-тесте используется статистика (X̄ - μ)/(σ/√n) ~ N(0,1). Это работает когда σ известно. Но σ почти никогда не известно - его заменяют на выборочное S. При больших n S ≈ σ и всё хорошо. При малом n (5-30 наблюдений) S сам является случайной величиной с существенным разбросом. Подстановка S вместо σ делает дроби «тяжелее» - больше вероятности далеких значений.
Если X₁,...,Xₙ ~ N(μ, σ²) и σ НЕИЗВЕСТНО: T = (X̄ - μ) / (S/√n) ~ t(n-1) где S = √(1/(n-1)·Σ(Xᵢ-X̄)²) - выборочное СКО (ddof=1) Распределение t(ν) с ν = n-1 степенями свободы: - Симметрично вокруг 0 (как нормальное) - Тяжелее в хвостах при малом ν (честно отражает неопределённость) - При ν → ∞ сходится к N(0,1) Сравнение критических значений для 95% (двустороннего): z = 1.960 (нормальное, n=∞) t₀.₀₂₅,₂₉ = 2.045 (n=30) t₀.₀₂₅,₉ = 2.262 (n=10) t₀.₀₂₅,₄ = 2.776 (n=5) При n=5: критическое значение в 1.42 раза больше! Больше вероятности экстремального → сложнее отвергнуть H₀. Это честно: с 5 измерениями меньше информации о σ.
Почему при малой выборке (n < 30) и неизвестном σ нужно использовать t-распределение, а не нормальное?
Три вида t-теста
Три вида t-теста
1. Одновыборочный: сравнение с константой
H₀: μ = μ₀ (истинное среднее равно заданному значению) H₁: μ ≠ μ₀ (двусторонний) T = (X̄ - μ₀) / (S/√n) ~ t(n-1) Пример: задержка API должна быть ≤ 200 мс (μ₀ = 200). Выборка 20 запросов: X̄ = 215 мс, S = 30 мс. T = (215 - 200) / (30/√20) = 15 / 6.71 = 2.237 df = 19, критическое t₀.₀₂₅,₁₉ = 2.093 2.237 > 2.093 → отвергаем H₀: задержка значимо превышает 200 мс.
2. Двухвыборочный: сравнение двух групп
H₀: μ₁ = μ₂ (средние двух групп равны) H₁: μ₁ ≠ μ₂ Welch t-тест (не предполагает равенство дисперсий): T = (X̄₁ - X̄₂) / √(S₁²/n₁ + S₂²/n₂) Степени свободы (формула Уэлча-Саттертуэйта): df = (S₁²/n₁ + S₂²/n₂)² / ((S₁²/n₁)²/(n₁-1) + (S₂²/n₂)²/(n₂-1)) Почему Welch, а не Student (pooled)? Student предполагает σ₁ = σ₂. Если это не так - тест некорректен. Welch работает в обоих случаях: при равных и неравных σ. Современный стандарт: **использовать Welch по умолчанию**.
3. Парный: до и после
Каждый объект измерен дважды: до и после воздействия. H₀: среднее изменение = 0 Dᵢ = Xᵢ_после - Xᵢ_до T = D̄ / (S_D/√n) ~ t(n-1) Преимущество: убирает межобъектную вариабельность. Пример: latency сервиса до и после оптимизации на 15 серверах. Без паринга: Var(X̄_after - X̄_before) = σ²_after/n + σ²_before/n С парингом: Var(D̄) = σ²_D/n (σ²_D << σ²_after + σ²_before) Парный тест в 2-5 раз мощнее двухвыборочного при парных данных.
Какой вариант t-теста выбрать для сравнения latency сервиса ДО и ПОСЛЕ оптимизации, измеренной на одних и тех же 15 серверах?
Effect size: статистическая значимость ≠ практическая важность
Effect size: статистическая значимость ≠ практическая важность
p-value зависит от n: при миллионе пользователей любая разница в конверсии 0.0001% будет статистически значимой. Cohen's d измеряет **размер эффекта в единицах стандартного отклонения** - независимо от n.
| Cohen's d | Интерпретация | Пример в ML |
|---|---|---|
| < 0.2 | Пренебрежимо малый | Модель лучше baseline на 0.01% accuracy |
| 0.2 - 0.5 | Маленький | Новый feature улучшает F1 на 0.5% |
| 0.5 - 0.8 | Средний | A/B: конверсия 3% vs 3.5% |
| > 0.8 | Большой | Transformer vs RNN на seq2seq задачах |
| > 1.2 | Очень большой | Вакцина против плацебо в COVID trials |
**Правило в production**: всегда отчитываться о трёх числах: p-value (значима ли разница), Cohen's d или relative lift (насколько важна разница), доверительный интервал для разницы. Одного p-value недостаточно для решения о деплое.
В A/B тесте на 1 000 000 пользователей разница в конверсии 0.01% оказалась «статистически значимой» (p < 0.001). Что это значит для решения о деплое?
Где t-тест живёт в реальных системах
Где t-тест живёт в реальных системах
Какой подход СОВРЕМЕННАЯ практика рекомендует по умолчанию при сравнении двух независимых групп?
Практика: A/B тест сервиса рекомендаций
Практика: A/B тест сервиса рекомендаций
A/B тест: контроль CTR = 4.0% (n=2000), вариант CTR = 4.5% (n=2000). p-value двухвыборочного теста = 0.04. Какой грамотный отчёт?
Что унести из урока
- **Распределение t(ν)**: тяжелее нормального из-за неопределённости в оценке σ. При ν = n-1 → ∞ сходится к N(0,1)
- **Три вида**: одновыборочный (X̄ vs константа), двухвыборочный Welch (две независимые группы), парный (одни объекты до/после)
- **Welch = дефолт**: не предполагает σ₁=σ₂, работает в обоих случаях с минимальными потерями мощности
- **Cohen's d**: размер эффекта независимо от n. Маленький (<0.5), средний (0.5-0.8), большой (>0.8). Всегда отчитываться вместе с p-value
- **Парный мощнее**: убирает межобъектный шум, в 2-5 раз эффективнее при правильном применении
- **Статистическая ≠ практическая значимость**: при больших n любая разница значима. Смотреть на lift + CI + ROI
Куда дальше
t-тест - для числовых данных. Для категориальных - другой инструмент.
- Хи-квадрат критерий — Тест для категориальных данных: SRM в A/B, соответствие распределению, независимость
- Ранговые тесты (Манн-Уитни) — Когда данные ненормальные: непараметрическая альтернатива t-тесту
- Bootstrap — t-тест без предположений о нормальности через ресэмплинг
- ANOVA — Обобщение t-теста на k > 2 групп без роста ошибки первого рода