Что такое 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 одной строкой. Сложность — в интерпретации при многофакторной версии.