Что такое t-тест простыми словами
Что такое t-тест
T-тест — статистический тест, который проверяет, действительно ли среднее между двумя группами отличается, или это случайное колебание.
Используется в A/B-тестах, когда нужно сравнить средний чек, время на сайте, конверсию.
Интуиция
У вас две группы: контроль и тест. Вы видите:
- Среднее A: 1000₽.
- Среднее B: 1050₽.
Вопрос: реально ли B лучше, или просто выборка такая случайная?
T-test даёт p-value — вероятность такого или большего отличия при условии, что реальной разницы нет. Если p < 0.05 — разница значима.
Виды t-теста
1. One-sample (одновыборочный)
Сравниваем среднее выборки с заданным числом.
from scipy import stats
# Является ли средний чек 1000?
t, p = stats.ttest_1samp(amounts, popmean=1000)2. Two-sample independent (двухвыборочный независимый)
Сравниваем средние двух независимых групп. Классический A/B.
# Контроль и тест
t, p = stats.ttest_ind(control, treatment, equal_var=False)
# equal_var=False — Welch's t-test (не требует равных дисперсий)3. Paired (парный)
Те же пользователи в двух состояниях (до / после).
# Результаты теста до обучения и после
t, p = stats.ttest_rel(before, after)Когда использовать
Хорошо подходит
- Две независимые группы пользователей.
- Метрика — среднее (чек, время, количество событий).
- Большая выборка (n > 30).
- Распределения примерно нормальные (или ЦПТ срабатывает).
Плохо подходит
- Бинарные метрики (конверсия) — для них лучше z-test пропорций.
- Очень скошенные данные с тяжёлыми хвостами — Mann-Whitney U.
- Маленькие выборки с не-нормальным распределением.
Попробовать силы на подобных вопросах проще всего в тренажёре Карьерник — прямо в Telegram, без регистрации через сайт.
Формула (не учить)
t = (mean_A - mean_B) / SEгде SE — стандартная ошибка разности средних.
На практике считаете через scipy, не руками.
T-test vs Z-test
- T-test — когда дисперсия выборки неизвестна и оценивается из самих данных.
- Z-test — когда дисперсия известна заранее или выборка очень большая.
В продуктовой аналитике почти всегда используют t-test. Z-test — редкое (обычно только для пропорций).
T-test vs Mann-Whitney
- T-test — параметрический (предполагает нормальное распределение).
- Mann-Whitney — непараметрический, робастный к выбросам.
Для LTV, revenue, session length с тяжёлыми хвостами — часто Mann-Whitney лучше.
Пример в Python
import numpy as np
from scipy import stats
# Симулируем A/B-тест
np.random.seed(42)
control = np.random.normal(loc=100, scale=30, size=1000)
treatment = np.random.normal(loc=103, scale=30, size=1000)
t_stat, p_value = stats.ttest_ind(control, treatment, equal_var=False)
print(f't-statistic: {t_stat:.3f}, p-value: {p_value:.4f}')
# t-statistic: -2.241, p-value: 0.0251
# p < 0.05 → разница значимаИнтерпретация p-value
p = 0.001 → значимо, разница очень уверенная
p = 0.04 → значимо по стандарту α=0.05
p = 0.06 → почти значимо, но формально нет
p = 0.20 → не значимоНЕ «p — это вероятность, что разница случайна».
ЕСТЬ «p — вероятность получить такое или большее различие, если бы разницы на самом деле не было».
Пройти 30–50 задач по теме за вечер можно в Telegram-тренажёре. Это то, что отличает «знаю» от «уверенно отвечу на собесе».
Ограничения
1. Размер выборки
Маленькая выборка → тест может не задетектировать реальный эффект (низкая мощность).
2. Нормальность
На малых выборках (n < 30) без нормальности t-test может давать неправильный результат.
3. Выбросы
Один гигантский чек в 100x от медианы ломает t-test. Используйте trimming или Mann-Whitney.
4. Множественные сравнения
Если делаете 20 t-тестов — один случайно окажется «значимым». Поправка Бонферрони: α / количество тестов.
На собеседовании
Вопросы, которые могут задать:
- «Когда t-test, а когда Mann-Whitney?»
- «Чем отличается от z-test?»
- «Как интерпретировать p-value?»
- «Что такое мощность теста?»
- «Зачем Welch's t-test?» (не требует равных дисперсий).
Читайте также
FAQ
Welch's t-test vs Student's t-test?
Welch's не требует равных дисперсий. Используйте его по умолчанию (equal_var=False). Student's — только если дисперсии точно равны.
Сколько должна быть выборка?
Для нормальных данных — n > 30 на группу. Для ненормальных — n > 100.
Что делать, если распределение не нормальное?
- Трансформировать (log).
- Использовать Mann-Whitney.
- Увеличить выборку (ЦПТ сработает).
T-test всегда симметричный?
Двусторонний t-test (scipy по умолчанию) — да. Есть и односторонний (one-tailed), если гипотеза направленная.