Урок по треку Статистика и A/B-тесты 6 мин

Описательная статистика за 6 минут

Среднее, медиана, мода, дисперсия, квантили, выбросы и асимметрия.

Прежде чем проверять гипотезы, данные нужно описать: где центр, какой разброс, есть ли длинный хвост и выбросы. На собесе аналитика с этого начинается почти любой кейс: «средний чек вырос, что вы посмотрите первым?».

Меры центра

  • Среднее (mean): сумма, делённая на число наблюдений. Чувствительно к выбросам: один заказ на миллион поднимает средний чек всего магазина.
  • Медиана: значение посередине отсортированного ряда. При чётном числе наблюдений это среднее двух центральных. Устойчива к выбросам.
  • Мода: самое частое значение. Полезна для категорий и дискретных величин.
import statistics as st

checks = [500, 700, 800, 900, 50_000]
st.mean(checks)    # 10580
st.median(checks)  # 800

Если среднее сильно больше медианы, у распределения длинный правый хвост. Так выглядят почти все денежные метрики: чек, выручка на пользователя, LTV.

Меры разброса

  • Размах: максимум минус минимум. Зависит только от двух крайних точек.
  • Дисперсия: средний квадрат отклонения от среднего. Стандартное отклонение (std) это корень из дисперсии, оно в тех же единицах, что и данные.
  • Межквартильный размах (IQR): Q3 - Q1, разброс средней половины данных. Устойчив к выбросам.

Выборочная дисперсия делится на n - 1, а не на n (поправка Бесселя). Причина: отклонения считаются от выборочного среднего, которое само подогнано под данные, и без поправки дисперсия генеральной совокупности систематически занижается.

st.pvariance([2, 4, 6])  # 2.667  делим на n
st.variance([2, 4, 6])   # 4.0    делим на n - 1

Осторожно: в numpy np.std по умолчанию делит на n (ddof=0), а в pandas Series.std() на n - 1 (ddof=1). Отсюда разные цифры на одних и тех же данных.

Квантили

Квантиль уровня p это значение, ниже которого лежит доля p данных. Медиана это квантиль 0.5, квартили это 0.25 и 0.75, перцентиль 95 это квантиль 0.95. Для времени ответа сервиса смотрят p95 и p99, а не среднее: среднее прячет медленный хвост.

Способов интерполяции между точками несколько, поэтому разные библиотеки могут дать немного разные квартили на маленьких выборках. Это нормально.

Выбросы

Классическое правило Тьюки: выбросы лежат ниже Q1 - 1.5·IQR или выше Q3 + 1.5·IQR. Это же правило рисует «усы» на boxplot. Правило «3 сигмы» работает для данных, близких к нормальным; на скошенных данных оно режет честный хвост.

Что делать с выбросами, решает не формула, а смысл:

  • ошибка данных (возраст 300 лет) удаляется или исправляется;
  • реальные «киты» (крупные покупатели) остаются, но для тестов метрику можно винзоризовать: обрезать значения выше, скажем, 99-го перцентиля до самого перцентиля.

Форма распределения

  • Асимметрия (skewness): положительная, если хвост справа.
  • Эксцесс (kurtosis): насколько тяжёлые хвосты по сравнению с нормальным распределением.

На практике форму проще увидеть гистограммой, чем читать коэффициенты.

Взвешенное среднее и средние по группам

Средняя конверсия по странам, усреднённая без весов, не равна общей конверсии: у стран разный трафик. Общая метрика это сумма успехов, делённая на сумму попыток, или взвешенное среднее с весами-размерами групп.

Корреляция

Коэффициент Пирсона измеряет линейную связь от -1 до 1. Он чувствителен к выбросам и не видит нелинейных зависимостей. Спирмен считает корреляцию рангов: устойчив к выбросам и ловит любую монотонную связь. И главное: корреляция не означает причинность.

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

  • Отчитываться средним по денежной метрике без медианы и квантилей.
  • Путать дисперсию выборки и генеральной совокупности, ddof в numpy и pandas.
  • Удалять «выбросы» по формуле, не проверив, что это ошибка.
  • Усреднять доли или средние групп без весов.

Что спросят на собесе

  • Когда медиана лучше среднего и почему?
  • Почему выборочная дисперсия делится на n - 1?
  • Как найти выбросы и что с ними делать?
  • Что такое p95 и зачем он нужен?
  • Чем корреляция Пирсона отличается от Спирмена?

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.