Короткий ответ
z-test обычно применяют для сравнения пропорций (конверсий) на больших выборках; t-test — для сравнения средних непрерывных метрик, особенно при умеренных выборках и допущении о нормальности (или достаточно большом n для центральной предельной теоремы); Mann-Whitney — непараметрическая альтернатива t-test, когда данные сильно скошены, есть выбросы или выборка мала.
Как это работает подробнее
t-test сравнивает средние и чувствителен к форме распределения на малых выборках, а также к выбросам, так как опирается на среднее и дисперсию. Mann-Whitney сравнивает ранги значений, а не сами значения, и проверяет сдвиг распределений, а не именно равенство средних — это делает его устойчивее к выбросам и скошенности. z-test для пропорций использует нормальную аппроксимацию биномиального распределения, которая хорошо работает при достаточно большом n и не слишком экстремальной конверсии.
Пример кода
from scipy import stats
revenue_a = [5,7,6,8,5,120,6,7] # выброс 120
revenue_b = [10,12,11,9,13,10,11,12]
t_stat, p_t = stats.ttest_ind(revenue_a, revenue_b)
u_stat, p_u = stats.mannwhitneyu(revenue_a, revenue_b)
print(p_t, p_u)Что использовать на практике
- На практике. для метрик вроде revenue per user, где распределение сильно скошено и есть выбросы (крупные заказы), часто надёжнее использовать Mann-Whitney или предварительно логарифмировать данные, либо применять бутстрэп. Для сравнения конверсий, если выборка большая, разница между z-test и аналогичным t-test для пропорций обычно незначительна. На очень маленьких выборках с редкими событиями ни одна из нормальных аппроксимаций не работает хорошо, и уместнее точные тесты (например, тест Фишера).
- Пример. Sanity check: при наличии выброса p_t может сильно отличаться от p_u — стоит изучить оба результата и явно решить, какой вопрос важнее для бизнеса: «изменилось ли типичное поведение» (ближе к Mann-Whitney) или «изменилась ли общая выручка на пользователя» (ближе к t-test/сумме).
Подводные камни
- Частые ошибки. автоматически применять t-test ко всем метрикам без проверки формы распределения и наличия выбросов; использовать Mann-Whitney и интерпретировать результат как «разница средних», хотя тест проверяет сдвиг распределения в целом, что не всегда то же самое; выбирать тест постфактум, исходя из того, какой из них дал «нужный» результат.