T-тест (критерий Стьюдента): полное руководство по типам, формулам и применению в аналитике

Иван Корнев·6 октября 2026·⏱4 мин

T-тест (критерий Стьюдента) — это метод статистической проверки гипотез о равенстве средних значений в выборках. Он критически важен для принятия обоснованных решений в аналитике данных и A/B-тестах.

Оглавление

Типы T-тестов и их формулы

Выбор конкретного типа t-теста зависит от структуры ваших данных и поставленной задачи.

  1. Одновыборочный t-тест: применяется для проверки гипотезы о равенстве математического ожидания выборки известному значению. Формула: t = (X̄ - m) / (s / √n), где X̄ — выборочное среднее, m — проверяемое значение, s — стандартное отклонение, n — объём выборки.
  2. Двухвыборочный t-тест для независимых выборок: сравнивает средние двух независимых групп (например, контрольная и тестовая группы в A/B-тесте).
    • При предположении о равенстве дисперсий используется формула с объединённой оценкой дисперсии: t = (X̄₁ - X̄₂) / (s_X * √(1/n₁ + 1/n₂)), где s_X = √(((n₁ - 1)s₁² + (n₂ - 1)s₂²) / (n₁ + n₂ - 2)).
    • Если дисперсии неравны, применяется t-критерий Уэлча.
  3. Парный t-тест (для зависимых выборок): применяется для сравнения средних одной и той же группы в двух разных условиях (например, замеры «до» и «после» внедрения изменения). Формула: t = M_d / (s_d / √n), где M_d — средняя разность парных значений, s_d — стандартное отклонение этих разностей, n — количество наблюдений.

Условия применения и проверка данных

Для получения достоверных результатов классический t-тест требует соблюдения ряда условий:

  • Нормальность распределения данных: критично для малых выборок. При больших объёмах выборок (обычно n > 30–50 на группу) t-критерий достаточно устойчив к умеренным отклонениям от нормальности благодаря Центральной предельной теореме.
  • Независимость наблюдений: значения в одной группе не должны влиять на значения в другой (кроме парного теста, где зависимость заложена в дизайн).
  • Гомогенность (равенство) дисперсий: обязательна для классического двухвыборочного теста. Перед его применением рекомендуется проверять равенство дисперсий (например, с помощью теста Левена или эмпирического правила: если отношение большей выборочной дисперсии к меньшей превышает 3–4, лучше сразу использовать тест Уэлча).

Применение классического t-теста к данным с заведомо неравными дисперсиями или к ненормальным данным с выбросами приводит к неверному расчёту p-value. Это может вызвать ложноположительный вывод об эффективности изменения в A/B-тесте и запуск убыточного решения.

Если данные содержат значительное число выбросов или распределение сильно отличается от нормального, следует использовать непараметрические аналоги: U-критерий Манна — Уитни (для независимых выборок) или критерий Уилкоксона (для зависимых).

T-критерий предназначен строго для сравнения средних значений не более чем двух групп. Для сравнения трёх и более групп необходимо применять дисперсионный анализ (ANOVA).

Интерпретация результатов и p-value

Ключевой метрикой при интерпретации t-теста является p-value.

  • Если p-value < выбранного уровня значимости (стандартно 0.05), нулевая гипотеза об отсутствии различий отвергается, и различие средних признаётся статистически значимым.
  • Если p-value >= 0.05, оснований отвергнуть нулевую гипотезу нет: наблюдаемая разница может быть случайной.

Многократное «прогонение» t-теста на одних и тех же данных при разных сегментациях без статистической поправки (например, поправка Бонферрони) искусственно занижает p-value, создавая иллюзию значимости там, где её нет (p-hacking).

В российской аналитической практике терминология («t-критерий Стьюдента», «p-value», «уровень значимости») полностью соответствует международной. В российских инструментах (например, Яндекс Метрика при анализе A/B-тестов) логика проверки статистической значимости аналогична, при больших объёмах данных часто автоматически предлагаются непараметрические аналоги.

Реализация T-теста в Python

В библиотеке SciPy проверка гипотез выполняется с помощью модуля scipy.stats.

Для сравнения двух независимых выборок используется функция scipy.stats.ttest_ind. По умолчанию она выполняет классический тест Стьюдента с предположением о равенстве дисперсий (параметр equal_var=True).

Для выполнения t-критерия Уэлча (когда дисперсии неравны) необходимо явно указать параметр equal_var=False:

from scipy import stats

# Пример данных
group_a = [23, 25, 28, 22, 24]
group_b = [29, 31, 30, 28, 32]

# Классический t-тест (равные дисперсии)
t_stat, p_value = stats.ttest_ind(group_a, group_b, equal_var=True)

# T-критерий Уэлча (неравные дисперсии)
t_stat_welch, p_value_welch = stats.ttest_ind(group_a, group_b, equal_var=False)

Частые ошибки

  1. Игнорирование проверки дисперсий: слепое использование классического t-теста без проверки гомогенности дисперсий ведет к искажению p-value.
  2. Сравнение трёх и более групп: попытка попарно сравнить три группы t-тестом вместо использования ANOVA многократно увеличивает вероятность ошибки первого рода.
  3. Применение к данным с сильными выбросами: t-тест чувствителен к экстремальным значениям. В таких случаях необходимо переходить к непараметрическим аналогам (Манна — Уитни или Уилкоксон).

FAQ

Какой t-тест выбрать для стандартного A/B-теста?
Двухвыборочный t-тест для независимых выборок. Обязательно проверьте дисперсии: если они существенно различаются, используйте t-критерий Уэлча (equal_var=False в Python).

Что делать, если p-value = 0.051?
Формально различие не является статистически значимым на уровне 0.05. Не стоит интерпретировать это как «почти значимо». Рассмотрите возможность увеличения объёма выборки или пересмотра метрики.

Можно ли использовать t-тест для больших выборок с ненормальным распределением?
Да, при объёме более 30–50 наблюдений на группу t-критерий достаточно устойчив к умеренным отклонениям от нормальности благодаря Центральной предельной теореме. Однако при наличии сильных выбросов всё равно рекомендуется использовать непараметрические аналоги.