Данные и аналитика
anthropics/statistical-analysis
Применяет статистические методы для анализа данных: описательная статистика, выявление трендов, обнаружение выбросов и проверка гипотез. Полезен при оценке распределений, выявлении аномалий, сравнении групп и прогнозировании.
Оцените навык первым
SKILL.md
Перевод инструкции, которую получает агент при подключении навыка. Агент всегда использует оригинал.
Навык статистического анализа
Описательная статистика, анализ трендов, обнаружение выбросов, проверка гипотез и рекомендации, когда следует быть осторожным с статистическими утверждениями.
Методология описательной статистики
Меры центральной тенденции
Выбирайте подходящую меру центра в зависимости от данных:
| Ситуация | Используйте | Почему |
|---|---|---|
| Симметричное распределение, без выбросов | Среднее | Наиболее эффективная оценка |
| Скошенное распределение | Медиана | Устойчива к выбросам |
| Категориальные или порядковые данные | Мода | Единственный вариант для нечисловых данных |
| Сильно скошенное с выбросами (например, доход на пользователя) | Медиана + среднее | Отчёт обоих; разрыв показывает скошенность |
Всегда сообщайте среднее и медиану вместе для бизнес-метрик. Если они значительно расходятся, данные скошены, и среднее само по себе вводит в заблуждение.
Разброс и вариабельность
- Стандартное отклонение: Насколько значения обычно отклоняются от среднего. Используйте с нормально распределёнными данными.
- Интерквартильный размах (IQR): Расстояние от 25-го до 75-го процентиля. Устойчив к выбросам. Используйте при скошенных данных.
- Коэффициент вариации (CV): StdDev / Среднее. Используйте для сравнения вариабельности между метриками с разными масштабами.
- Размах: Максимум минус минимум. Чувствителен к выбросам, но даёт быстрое представление о диапазоне данных.
Процентиль для бизнес-контекста
Отчёт ключевых процентилей для более полного описания, чем только среднее:
p1: Нижние 1% (минимальное типичное значение)
p5: Нижний предел нормального диапазона
p25: Первый квартиль
p50: Медиана (типичный пользователь)
p75: Третий квартиль
p90: Верхние 10% / активные пользователи
p95: Верхний предел нормального диапазона
p99: Верхние 1% / экстремальные пользователи
Пример описания: «Медианная длительность сессии — 4,2 минуты, но верхние 10% пользователей проводят в сессии более 22 минут, что тянет среднее вверх до 7,8 минут.»
Описание распределений
Характеризуйте каждое числовое распределение, которое анализируете:
- Форма: Нормальное, скошенное вправо, скошенное влево, бимодальное, равномерное, с тяжёлыми хвостами
- Центр: Среднее и медиана (и разрыв между ними)
- Разброс: Стандартное отклонение или IQR
- Выбросы: Сколько и насколько экстремальные
- Границы: Есть ли естественный минимум (ноль) или максимум (100%)?
Анализ трендов и прогнозирование
Выявление трендов
Скользящие средние для сглаживания шума:
# 7-дневное скользящее среднее (хорошо для ежедневных данных с недельной сезонностью)
df['ma_7d'] = df['metric'].rolling(window=7, min_periods=1).mean()
# 28-дневное скользящее среднее (сглаживает недельные И месячные паттерны)
df['ma_28d'] = df['metric'].rolling(window=28, min_periods=1).mean()
Сравнение периодов:
- Неделя к неделе (WoW): Сравнение с тем же днём прошлой недели
- Месяц к месяцу (MoM): Сравнение с тем же месяцем ранее
- Год к году (YoY): Золотой стандарт для сезонного бизнеса
- Тот же день прошлого года: Сравнение конкретного календарного дня
Темпы роста:
Простой рост: (текущий - предыдущий) / предыдущий
CAGR: (конец / начало) ^ (1 / количество лет) - 1
Логарифмический рост: ln(текущий / предыдущий) -- лучше для волатильных рядов
Обнаружение сезонности
Проверьте периодические паттерны:
- Постройте график исходного временного ряда — сначала визуальный осмотр
- Вычислите средние по дням недели: есть ли явный недельный паттерн?
- Вычислите средние по месяцам года: есть ли годовой цикл?
- При сравнении периодов всегда используйте YoY или сравнения за одинаковые периоды, чтобы не путать тренд с сезонностью
Прогнозирование (простые методы)
Для бизнес-аналитиков (не дата-сайентистов) используйте простые методы:
- Наивный прогноз: Завтра = сегодня. Используйте как базу.
- Сезонный наивный: Завтра = тот же день прошлой недели/года.
- Линейный тренд: Аппроксимируйте линией исторические данные. Только для явно линейных трендов.
- Прогноз на основе скользящего среднего: Используйте скользящее среднее как прогноз.
Всегда сообщайте неопределённость. Даёте диапазон, а не точечную оценку:
- «Ожидаем 10–12 тыс. регистраций в следующем месяце на основе тренда за 3 месяца»
- НЕ «Мы получим ровно 11 234 регистрации в следующем месяце»
Когда обращаться к дата-сайентисту: Нелинейные тренды, множественные сезонности, внешние факторы (маркетинговые расходы, праздники) или когда точность прогноза критична для распределения ресурсов.
Обнаружение выбросов и аномалий
Статистические методы
Метод Z-оценки (для нормально распределённых данных):
z_scores = (df['value'] - df['value'].mean()) / df['value'].std()
outliers = df[abs(z_scores) > 3] # Более 3 стандартных отклонений
Метод IQR (устойчив к ненормальным распределениям):
Q1 = df['value'].quantile(0.25)
Q3 = df['value'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
outliers = df[(df['value'] < lower_bound) | (df['value'] > upper_bound)]
Метод процентилей (самый простой):
outliers = df[(df['value'] < df['value'].quantile(0.01)) |
(df['value'] > df['value'].quantile(0.99))]
Обработка выбросов
НЕ удаляйте выбросы автоматически. Вместо этого:
- Исследуйте: Ошибка ли это в данных, настоящий экстремум или другая популяция?
- Ошибки данных: Исправьте или удалите (например, отрицательный возраст, метки времени 1970 года)
- Настоящие экстремумы: Оставьте, но рассмотрите использование устойчивой статистики (медиана вместо среднего)
- Другая популяция: Выделите для отдельного анализа (например, корпоративные vs. SMB клиенты)
Отчёт о действиях: «Мы исключили 47 записей (0,3%) с суммами транзакций >50 тыс. $, которые представляют крупные корпоративные заказы, анализируемые отдельно.»
Обнаружение аномалий во временных рядах
Для выявления необычных значений во временном ряду:
- Вычислите ожидаемое значение (скользящее среднее или тот же период прошлого года)
- Вычислите отклонение от ожидаемого
- Отметьте отклонения за пределами порога (обычно 2-3 стандартных отклонения остатков)
- Различайте точечные аномалии (одиночные необычные значения) и точки изменения (устойчивое смещение)
Основы проверки гипотез
Когда использовать
Используйте проверку гипотез, когда нужно определить, является ли наблюдаемая разница реальной или могла возникнуть случайно. Типичные случаи:
- Результаты A/B теста: действительно ли вариант B лучше A?
- Сравнение до/после: изменился ли показатель после обновления продукта?
- Сравнение сегментов: действительно ли корпоративные клиенты имеют более высокую удерживаемость?
Основы
- Нулевая гипотеза (H0): Разницы нет (базовое предположение)
- Альтернативная гипотеза (H1): Разница есть
- Выбор уровня значимости (alpha): Обычно 0,05 (5% шанс ложноположительного результата)
- Вычисление статистики теста и p-значения
- Интерпретация: Если p < alpha, отвергаем H0 (есть доказательства реальной разницы)
Распространённые тесты
| Сценарий | Тест | Когда использовать |
|---|---|---|
| Сравнение средних двух групп | t-тест (независимый) | Нормальные данные, две группы |
| Сравнение долей двух групп | z-тест для пропорций | Конверсия, бинарные исходы |
| Сравнение парных измерений | Парный t-тест | До/после на одних и тех же объектах |
| Сравнение средних 3+ групп | ANOVA | Несколько сегментов или вариантов |
| Ненормальные данные, две группы | Тест Манна-Уитни | Скошенные метрики, порядковые данные |
| Связь между категориями | Хи-квадрат тест | Две категориальные переменные |
Практическая значимость vs. статистическая значимость
Статистическая значимость означает, что разница маловероятна случайной.
Практическая значимость означает, что разница достаточно велика, чтобы иметь значение для бизнеса.
Разница может быть статистически значимой, но практически неважной (часто при больших выборках). Всегда сообщайте:
- Размер эффекта: Насколько велика разница? (например, «Вариант B улучшил конверсию на 0,3 процентных пункта»)
- Доверительный интервал: Каков диапазон правдоподобных истинных эффектов?
- Влияние на бизнес: Что это значит в терминах дохода, пользователей или других бизнес-показателей?
Учет размера выборки
- Малые выборки дают ненадёжные результаты, даже при значимых p-значениях
- Правило для пропорций: минимум 30 событий на группу для базовой надёжности
- Для обнаружения малых эффектов (например, изменение конверсии на 1%) нужны тысячи наблюдений на группу
- Если выборка мала, укажите это: «При всего 200 наблюдениях на группу мощность обнаружения эффектов меньше X% ограничена»
Когда следует быть осторожным со статистическими утверждениями
Корреляция не равна причинности
При обнаружении корреляции явно учитывайте:
- Обратная причинность: Возможно, B вызывает A, а не A вызывает B
- Смешивающие переменные: Возможно, C вызывает и A, и B
- Совпадение: При большом числе переменных ложные корреляции неизбежны
Что можно сказать: «Пользователи, использующие функцию X, имеют на 30% выше удержание» Что нельзя сказать без дополнительных доказательств: «Функция X вызывает удержание на 30% выше»
Проблема множественных сравнений
При множественном тестировании некоторые результаты будут «значимыми» случайно:
- Тестирование 20 метрик при p=0,05 даёт примерно 1 ложноположительный результат
- Если вы смотрели много сегментов, прежде чем нашли отличающийся, укажите это
- Корректируйте множественные сравнения с помощью поправки Бонферрони (делите alpha на число тестов) или сообщайте, сколько тестов было проведено
Парадокс Симпсона
Тренд в агрегированных данных может измениться при разбиении на сегменты:
- Всегда проверяйте, сохраняется ли вывод в ключевых сегментах
- Пример: общая конверсия растёт, но в каждом сегменте она падает — из-за смещения в сторону сегмента с более высокой конверсией
Смещение выживших
Можно анализировать только те объекты, которые «выжили» и попали в данные:
- Анализ активных пользователей игнорирует ушедших
- Анализ успешных компаний игнорирует провалившиеся
- Всегда спрашивайте: «Кто отсутствует в этих данных и изменит ли их включение вывод?»
Экологическая ошибка
Агрегированные тренды могут не применяться к отдельным лицам:
- «Страны с более высоким X имеют более высокий Y» НЕ значит «индивиды с более высоким X имеют более высокий Y»
- Будьте осторожны при применении групповых выводов к индивидуальным случаям
Привязка к конкретным числам
Остерегайтесь ложной точности:
- «Отток будет 4,73% в следующем квартале» подразумевает большую уверенность, чем есть на самом деле
- Предпочитайте диапазоны: «Ожидаем отток 4–6% на основе исторических данных»
- Округляйте адекватно: «Около 5%» часто честнее, чем «4,73%»