Что такое ANOVA простыми словами
Что такое ANOVA
ANOVA, или Analysis of Variance, — это статистический метод для сравнения средних в нескольких группах одновременно. Если t-test сравнивает две группы, ANOVA — три и больше.
Перевод на русский — дисперсионный анализ. Название звучит технически, но идея простая: мы смотрим, насколько различия между средними групп значимо больше, чем случайный разброс внутри групп.
Когда использовать
Типичный случай — эксперимент с тремя или более вариантами. Вы тестируете три версии лендинга: A, B, C. Хотите узнать, отличаются ли конверсии хотя бы у одной из них от других.
Можно сделать три попарных t-test: A vs B, A vs C, B vs C. Но при этом растёт риск ложноположительного результата (multiple comparisons problem). ANOVA решает эту проблему, делая один тест сразу на все группы.
Другие сценарии:
- Сравнение retention пользователей из разных стран.
- Анализ средних чеков в разных сегментах.
- Оценка эффективности разных каналов привлечения.
Как работает
ANOVA смотрит на два типа дисперсии. Within-group variance — разброс внутри каждой группы. Between-group variance — разброс между средними групп.
Если between-group variance намного больше within-group, это говорит, что группы действительно разные. Если примерно одинаковые, различия могут быть случайными.
Итоговая статистика — F-statistic, отношение between к within. Большая F означает значимое различие.
Типы ANOVA
Одно-факторная ANOVA (one-way). Смотрит на один фактор, который делит данные на группы. Например, страна пользователя как единственная переменная.
Двух-факторная ANOVA (two-way). Два фактора одновременно: страна и платформа. Позволяет видеть не только main effects, но и interaction effects — когда эффект одного фактора зависит от другого.
Repeated measures ANOVA. Для случаев, когда те же люди измеряются в разных условиях (до/после какого-то events).
Обычно junior-аналитику хватает one-way ANOVA.
Прокачать тему на реальных задачах удобно в боте @kariernik_bot — база вопросов собрана с собеседований в Яндексе, Авито, Ozon, Тинькофф.
Пример в Python
Одно-факторная ANOVA:
from scipy.stats import f_oneway
group_a = [100, 120, 110, 130, 115]
group_b = [150, 160, 155, 145, 165]
group_c = [200, 210, 195, 205, 215]
f_stat, p_value = f_oneway(group_a, group_b, group_c)
print(f'F = {f_stat:.3f}, p = {p_value:.4f}')Если p < 0.05, значит хотя бы одна из групп отличается от других. Но ANOVA не говорит, какая именно — для этого нужны post-hoc тесты.
Post-hoc тесты
После значимой ANOVA обычно делают попарные сравнения с поправкой на множественные сравнения. Популярные методы:
- Tukey HSD — стандарт для попарных сравнений.
- Bonferroni correction — консервативнее, делит альфа на количество тестов.
- Scheffé — самый консервативный.
Пример с Tukey:
from statsmodels.stats.multicomp import pairwise_tukeyhsd
import pandas as pd
df = pd.DataFrame({
'value': group_a + group_b + group_c,
'group': ['A']*5 + ['B']*5 + ['C']*5
})
result = pairwise_tukeyhsd(df['value'], df['group'])
print(result)Это показывает, какие конкретно пары групп отличаются значимо.
Предположения
ANOVA требует нескольких предположений. Данные в каждой группе должны быть примерно нормально распределены. Дисперсии в группах должны быть похожими (homoscedasticity). Наблюдения должны быть независимыми.
Если предположения нарушены, результаты могут быть ненадёжными. Для сильно скошенных данных используют непараметрическую альтернативу — Kruskal-Wallis test.
На практике при больших выборках (n > 30 на группу) нарушения предположений обычно не критичны благодаря центральной предельной теореме.
ANOVA vs множественные t-tests
Главная проблема множественных t-test — рост ошибки I рода. При альфа 0.05 и трёх попарных сравнениях реальная вероятность хотя бы одного ложноположительного — около 14%.
ANOVA контролирует эту ошибку на уровне всего теста. Если ANOVA значима, мы знаем, что хотя бы одна разница реальна, с вероятностью ошибки 5%.
После значимой ANOVA мы делаем post-hoc тесты, но с поправкой, которая сохраняет общую ошибку на нужном уровне.
Применение в аналитике
ANOVA полезна при сравнении сегментов. Средний чек в 5 регионах — отличается ли какой-то? Retention в 4 каналах — есть ли лучший?
Для стандартных A/B тестов с двумя вариантами ANOVA избыточна — достаточно t-test. Но для multi-variant тестов A/B/C/D ANOVA — правильный инструмент.
Ещё одно применение — смотреть impact факторов в ML-моделях. Двух-факторная ANOVA помогает понять, какой из предикторов сильнее влияет на target.
На собесе такие штуки часто спрашивают. Быстрый способ довести до автоматизма — тренажёр в Telegram с задачами из реальных интервью.
Ограничения
ANOVA говорит, что «есть различие», но не «какое и между кем». Для ответа нужны post-hoc тесты.
Она не работает для категориальных targets — для них есть chi-square. И не работает для ordinal данных — для них подходят непараметрические методы.
ANOVA чувствительна к выбросам. Один экстремальный выброс может сильно повлиять на дисперсию и смазать результат. Поэтому перед ANOVA полезно делать EDA и проверять на outliers.
На собеседовании
Вопросы:
- «Чем ANOVA отличается от t-test?» — t-test для двух групп, ANOVA для трёх и больше, контролирует multiple comparisons.
- «Когда применять?» — A/B/C тесты, сравнение сегментов, impact факторов.
- «Какие предположения?» — нормальность, homoscedasticity, независимость.
- «Что делать после значимой ANOVA?» — post-hoc тесты (Tukey, Bonferroni).
Читайте также
FAQ
ANOVA обязательна на собеседовании?
Для middle+ — да. Для junior — желательно знать концепцию.
Непараметрическая альтернатива?
Kruskal-Wallis test. Работает на ordinal-данных и не требует нормальности.
ANOVA для A/B/C тестов практично?
Да, стандарт для multi-variant тестов.
Сложнее ли понимать, чем t-test?
Концептуально — нет. Реализация в scipy одной строкой. Сложность — в интерпретации при многофакторной версии.