t-test vs z-test — в чём разница и когда какой использовать

Коротко

z-тест используется, когда известна дисперсия генеральной совокупности или выборка большая (n > 30). t-тест — когда дисперсия неизвестна и оценивается по выборке. На практике аналитики почти всегда используют t-тест, потому что истинная дисперсия редко известна.

Когда использовать z-тест

Z-тест подходит, когда:

  • Известна дисперсия генеральной совокупности (σ²)
  • Выборка большая (n > 30) — по ЦПТ распределение среднего приближается к нормальному
z = (x̄ - μ₀) / (σ / √n)

Где x̄ — выборочное среднее, μ₀ — гипотетическое среднее, σ — известное стандартное отклонение, n — размер выборки.

Результат сравнивается со стандартным нормальным распределением N(0,1).

Когда использовать t-тест

T-тест подходит, когда:

  • Дисперсия неизвестна (оценивается по выборке через s²)
  • Выборка малая (n < 30), но данные примерно нормальны
t = (x̄ - μ₀) / (s / √n)

Отличие: вместо σ используется s (выборочное стандартное отклонение). Результат сравнивается с распределением Стьюдента с df = n - 1 степенями свободы.

Ключевые отличия

z-тест t-тест
Дисперсия Известна (σ²) Неизвестна (оценивается s²)
Распределение Нормальное N(0,1) Стьюдента с df степенями свободы
Размер выборки Обычно n > 30 Любой, но особенно важен при n < 30
На практике Редко (σ² почти никогда не известна) Почти всегда
Хвосты распределения Тоньше Толще (больше неопределённости)

Почему t-распределение шире нормального

Когда мы оцениваем дисперсию по выборке, добавляется дополнительная неопределённость. T-распределение учитывает это через более толстые хвосты — крайние значения более вероятны.

При малых выборках (n = 5–10) разница между t и z существенная: доверительные интервалы шире, p-value выше. При больших выборках (n > 30) t-распределение сходится к нормальному, и разница исчезает.

Виды t-теста

Одновыборочный — сравнение среднего с известным значением:

  • «Средний чек отличается от 500 рублей?»

Двухвыборочный — сравнение средних двух групп:

  • «Средний чек в контроле vs тесте в A/B-тесте»

Парный — сравнение связанных измерений:

  • «Время на сайте до и после редизайна у тех же пользователей»

В A/B-тестах чаще всего используется двухвыборочный t-тест (или его модификацию Уэлча, не предполагающую равенство дисперсий).

На практике в A/B-тестах

В реальных A/B-тестах выборки обычно большие (тысячи пользователей), поэтому разница между z и t минимальна. Но аналитики всё равно используют t-тест — он корректен при любом размере выборки.

from scipy import stats

# Двухвыборочный t-тест (Уэлча)
control = [120, 130, 115, 140, 125]
treatment = [135, 145, 150, 130, 155]

stat, p_value = stats.ttest_ind(control, treatment, equal_var=False)
print(f't-statistic: {stat:.3f}, p-value: {p_value:.3f}')

Вопросы с собеседований

  • «Когда можно использовать z-тест вместо t-теста?» — Когда известна дисперсия популяции, что на практике почти не бывает. При больших выборках результаты совпадают.
  • «Что такое тест Уэлча?» — Модификация t-теста, не требующая равенства дисперсий в двух группах. В scipy это ttest_ind(equal_var=False).
  • «При каком размере выборки t и z дают одинаковый результат?» — При n > 30–50 разница пренебрежимо мала.

FAQ

Нужно ли проверять нормальность перед t-тестом?

При больших выборках (n > 30) — нет, ЦПТ обеспечивает нормальность среднего. При малых выборках — да, стоит проверить (тест Шапиро-Уилка или QQ-plot).

Какой тест использовать для пропорций?

Для сравнения пропорций (конверсий) используется z-тест для пропорций, а не t-тест. Это связано с тем, что дисперсия биномиального распределения вычисляется из самой пропорции.

Что если данные не нормальные и выборка маленькая?

Используйте непараметрические тесты: критерий Манна-Уитни (аналог двухвыборочного t-теста) или критерий Уилкоксона (аналог парного t-теста).