Мода простыми словами

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

Зачем знать моду

Мода — одна из трёх мер центральной тенденции (mean, median, mode). На собесе спрашивают про все три: «когда какая лучше?». Mean — для symmetric. Median — для скошенных. Mode — для категориальных и мulti-modal.

Чаще всего аналитик использует mean и median. Mode — менее популярна, но незаменима: «какой самый частый product в корзине», «самая часто выбираемая категория», «какое время заказа пиковое». Mean не скажет — усреднит.

В статье:

  • Что такое мода
  • Пример расчёта
  • Mode vs mean vs median
  • Bimodal distributions
  • Когда mode нужна
  • В SQL, Python, pandas

Короткое объяснение

Мода — самое часто встречающееся значение в выборке.

Пример

Чеки: 100, 200, 200, 300, 200, 400.

  • Mean = 233
  • Median = 200
  • Mode = 200 (встречается 3 раза)

Mode vs Mean vs Median

  • Mean — среднее (чувствителен к выбросам)
  • Median — середина сортированной выборки (устойчив к выбросам)
  • Mode — самое частое (работает для категориальных)

Для нормального распределения все три равны.

Для скошенного — отличаются. В зарплатах обычно mean > median > mode.

Когда использовать моду

Категориальные данные

Mean и median не работают для строк. Mode — работает.

Пример: топ-категория товаров — mode.

Discrete data

Сколько детей у семей в выборке: 2 встречается чаще всего → mode = 2.

Bimodal / multi-modal

Два «горба» в распределении — две моды.

Пример: рост population. Мужчины 175см, женщины 165см — две моды.

Mean не покажет разделения.

В SQL

Нет встроенной функции MODE — ищем через GROUP BY:

SELECT
    category,
    COUNT(*) AS cnt
FROM orders
GROUP BY category
ORDER BY cnt DESC
LIMIT 1;

Или через MODE() WITHIN GROUP (Postgres):

SELECT MODE() WITHIN GROUP (ORDER BY category) AS most_common
FROM orders;

В Python

# одна мода
df['category'].mode()  # Series, может вернуть несколько если multi-modal

# через scipy
from scipy import stats
stats.mode(df['category'])

Проблемы моды

1. Многозначность

Если несколько значений встречаются одинаково часто — несколько мод.

2. Малая выборка

На 10 строках mode случаен.

3. Continuous data

Для continuous каждое значение уникально → mode бесполезна. Binning сначала.

Bi-modal distribution

График с двумя пиками:

   /\        /\
  /  \      /  \
 /    \    /    \
/      \  /      \
        \/

Mean — где-то посередине (плохо). Mode — показывает оба пика.

Причина: смешение двух групп. Нужно segmentize.

В продуктовой аналитике

Peak hours

Mode по часам заказа:

SELECT EXTRACT(HOUR FROM created_at) AS hour, COUNT(*)
FROM orders
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1;

«Пиковый час заказов — 19:00».

Top-1 category

SELECT category, COUNT(*)
FROM orders
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1;

Typical basket size

Если basket_size = 1 встречается чаще всего → mode = 1.

На собесе

«Что такое мода?» Самое частое значение.

«Когда использовать?» Для категориальных / дискретных / multi-modal.

«Mode vs mean?» Mean — для числовых. Mode — для frequent values.

«Multi-modal distribution?» Несколько пиков → несколько мод → есть разные subgroups.

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

1. Mode на continuous

Каждая точка уникальна → каждая «мода». Бесполезно.

2. Mean как default

Для категорий mean не работает. Используйте mode.

3. Mode для центра

Mode не всегда в «центре». Может быть на краю.

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

FAQ

Mode == mean?

В normal distribution — да. В скошенных — нет.

Несколько значений с max count?

Называется multi-modal, возвращаете все.

Для цветного массива?

Да, mode работает для строк / категорий.

Mode и correlation?

Нет прямой связи. Mode — descriptive statistic.


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