T-test vs chi-square: разница

Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.

Короткий ответ

  • T-test: сравнение средних (continuous data)
  • Chi-square: сравнение пропорций / частот (categorical data)

Выбор зависит от типа данных.

Когда t-test

Сравниваете среднее между группами.

Примеры

  • Средний чек control vs test
  • Среднее время сессии до vs после
  • LTV у two сегментов

Варианты

  • One-sample: сравнение mean с известным значением
  • Two-sample independent: сравнение двух групп
  • Paired: до/после для одних пользователей

В Python

from scipy.stats import ttest_ind

stat, p = ttest_ind(control, test, equal_var=False)  # Welch's
if p < 0.05:
    print('significant')

Когда chi-square

Сравниваете categorical переменные.

Примеры

  • Conversion rate (converted / not) в двух группах
  • Распределение по тарифам (free/paid) до и после
  • Выбор товара по полу

Варианты

  • Goodness of fit: соответствует ли наблюдаемое ожидаемому
  • Test of independence: связаны ли две categorical variables

В Python

from scipy.stats import chi2_contingency

# contingency table
#          converted  not_converted
# control      100           900
# test         120           880
table = [[100, 900], [120, 880]]

chi2, p, dof, expected = chi2_contingency(table)
if p < 0.05:
    print('significant difference')

Конкретный пример: A/B с CR

Метрика — conversion rate. Это proportion (converted/total).

Два подхода:

1. Chi-square на contingency table

table = [
    [converted_control, not_converted_control],
    [converted_test,    not_converted_test]
]
chi2_contingency(table)

2. Two-proportion z-test (аналогичное)

Для больших N — результат такой же. Можно через statsmodels:

from statsmodels.stats.proportion import proportions_ztest
count = [converted_control, converted_test]
nobs = [n_control, n_test]
stat, p = proportions_ztest(count, nobs)

Равнозначно chi-square для 2×2.

3. T-test на binary (0/1)

Технически можно, но не рекомендуется. Лучше chi-square для proportions.

Главные отличия

T-test Chi-square
Данные continuous (числа) categorical
Сравниваем средние пропорции / частоты
Статистика t chi-squared
Примеры метрик AOV, session time CR, click rate
Размер выборки меньше ок нужен больше (частот)

Когда ни тот, ни другой

Non-normal + continuous

Для скошенных distributions — Mann-Whitney U.

Ranked data

Для ordinal — Mann-Whitney / Kruskal-Wallis.

Paired proportions

McNemar test вместо chi-square.

Small counts (<5 в ячейке)

Fisher's exact test вместо chi-square.

На собесе

«T-test или chi-square для A/B CR?» Chi-square (или proportions z-test). T-test — для AOV, session time.

«Assumptions t-test?» Нормальность (при малом N), независимость наблюдений, равенство дисперсий (для Student's).

«Когда chi-square не работает?» Малые частоты (<5). Используйте Fisher's exact.

«T-test для proportion?» Технически можно, но chi-square / z-test — стандарт для pure proportions.

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

1. T-test на proportions

Не ошибка, но chi-square / z-test обычно лучше.

2. Chi-square на continuous

Не работает. Нужны дискретные bins.

3. Student's вместо Welch's

Student's требует равной variance. Welch's — нет. В A/B — почти всегда Welch's.

4. Игнорировать small counts

Chi-square с частотой 3 → неверный результат. Fisher's exact.

5. Multiple testing без поправки

Много метрик → хотя бы Bonferroni.

Связанные темы

FAQ

Какой тест для CR?

Chi-square или two-proportion z-test. Для большого N они эквивалентны.

T-test для binary?

Технически ок, но chi-square стандарт для proportions.

Какой для ранжированных?

Mann-Whitney U или Wilcoxon.


Тренируйте статистику — откройте тренажёр с 1500+ вопросами для собесов.