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.
Связанные темы
- T-test vs z-test
- Что такое t-test простыми словами
- Что такое chi-square простыми словами
- Поправка на множественные сравнения
FAQ
Какой тест для CR?
Chi-square или two-proportion z-test. Для большого N они эквивалентны.
T-test для binary?
Технически ок, но chi-square стандарт для proportions.
Какой для ранжированных?
Mann-Whitney U или Wilcoxon.
Тренируйте статистику — откройте тренажёр с 1500+ вопросами для собесов.