Data Science

EDA и статистические тесты: когда данные лгут

2011 год. Facebook. p=0.04 - статистически значимо. Через месяц выяснили: новые пользователи тестировались вдвое чаще старых. Результат был не про дизайн - он был про смещение выборки. Один A/B тест, миллиард пользователей, неправильный вывод. EDA и понимание статистических тестов - это не академия. Это защита от таких ошибок.

  • **Netflix** использует Bayesian A/B тесты вместо классических - можно останавливать в любой момент без потери гарантий, что критично при тестировании рекомендательного алгоритма на 230 млн подписчиков
  • **Booking.com** тестирует одновременно более 1000 A/B экспериментов - без FDR-коррекции (Benjamini-Hochberg) ложные открытия затопили бы продукт ещё в 2010-х
  • **Airbnb** обнаружила ANOVA-анализом: время ответа хоста (< 1ч vs 1-6ч vs 6-24ч vs > 24ч) объясняет 31% дисперсии в рейтинге листинга - сильнее, чем цена или фото

EDA: что смотреть до построения модели

**2011 год. Facebook. A/B тест нового дизайна.** p-value = 0.04. Статистически значимо. Команда готовится к rollout. Через месяц аналитик замечает: новые пользователи попадали в treatment-группу вдвое чаще старых. Новые пользователи кликают на всё - у них нет паттернов. Результат был не про дизайн. Миллиард пользователей. Неправильный вывод. Смещённая выборка скрылась за значком `p < 0.05`.

EDA (Exploratory Data Analysis) - это не шаг перед моделью. Это иммунная система против этой ошибки. До любого теста: посмотреть на распределения, найти выбросы, проверить баланс групп.

Базовый EDA-чеклист

Skewness - индикатор будущих проблем. `salary`, `price`, `duration` почти всегда имеют правый хвост: медиана 50k, но топ-1% тянет среднее до 80k. Линейная регрессия предполагает нормальные остатки. Log-трансформация превращает экспоненциальный хвост в симметрию.

При n > 10,000 любой тест нормальности отвергает H0 - даже незначительное отклонение статистически значимо. Q-Q plot визуально надёжнее: если точки идут по диагонали с небольшим хвостом - это практически нормальное. Статистическая и практическая значимость - разные вещи.

Колонка `age` при EDA показывает: mean=38.5, median=36, skewness=1.8. Какой вывод и действие?

Статистические тесты: t-тест, хи-квадрат, ANOVA

Статистический тест - это не кнопка 'доказать что хочешь'. Это формальный способ ответить: '**Мог ли этот паттерн возникнуть случайно, если бы никакого эффекта не было?**' H0 (null hypothesis) - нет эффекта. p-value - вероятность получить такой или более экстремальный результат при условии, что H0 правда. Не наоборот.

t-тест: сравнение двух средних

Нужно проверить: в группе A пользователи тратят 12 минут, в группе B - 14 минут. Это реальный эффект или случайность выборки? t-тест отвечает через отношение сигнала к шуму: как велика разница средних относительно вариативности данных и размера выборки.

При n=10,000 разница в 0.1 мин (6 секунд) легко даст p=0.001. Но Cohen's d=0.02 - это эффект размером с пылинку. Практические пороги: d < 0.2 - малый, 0.2-0.5 - средний, > 0.5 - большой. Сообщать обе: статистическую и практическую значимость.

Хи-квадрат: связь категориальных переменных

ANOVA: три и более группы

Три версии лендинга. Можно провести три t-теста: A-B, A-C, B-C. Проблема: при трёх тестах с alpha=0.05 вероятность хотя бы одного ложного срабатывания = 1 - (0.95)^3 = 14%. ANOVA тестирует все группы одновременно, сохраняя уровень ошибки.

ANOVA показала p=0.02. Что это означает и что делать дальше?

p-value ловушки и размер выборки для A/B теста

**2015 год. Журнал Science публикует Reproducibility Project: 100 психологических исследований воспроизведены только 39%.** Большинство имели p < 0.05. Проблема называлась p-hacking: исследователи тестировали разные подгруппы, метрики, временные окна - пока не нашли p < 0.05. Это не мошенничество. Это непонимание того, что значит p-value при многократном тестировании.

Главные заблуждения о p-value

p = 0.04 не означает: '96% вероятность, что эффект реальный'. Означает: 'если эффекта нет, вероятность получить такой или более экстремальный результат - 4%'. Тонкость - в формулировке 'если эффекта нет'. p-value не говорит о силе эффекта, не говорит о воспроизводимости, не говорит о практической важности.

Поправка Бонферрони и FDR

Размер выборки: считать до запуска, не после

Остановка теста при достижении p < 0.05 - это "optional stopping" - одна из самых распространённых ошибок в A/B тестировании. Симуляции показывают: если смотреть на p-value каждый день и останавливаться при p < 0.05, реальный False Positive Rate достигает 22-26% вместо 5%. Корректное решение: Sequential testing (Alpha Spending) или Bayesian A/B, который не зависит от момента просмотра.

Frequentist: нельзя смотреть на данные до конца теста - optional stopping ломает гарантии. Bayesian: можно останавливать в любой момент - posterior обновляется постепенно. Инструменты: `pymc`, `scipy.stats` (prior + likelihood), либо `ab-test` в Pyro. Netflix, Amazon используют Bayesian A/B именно из-за гибкости с остановкой.

p < 0.05 доказывает, что эффект реальный и важный

p < 0.05 говорит только: такой результат редко возникает случайно при H0. О величине эффекта (Cohen's d) и воспроизводимости - ничего

p-value зависит от размера выборки. При n=100,000 разница в 0.01% конверсии даст p=0.0001. Это статистически значимо, но практически бессмысленно. Размер эффекта и доверительный интервал - вот что нужно сообщать рядом с p-value.

A/B тест запущен. Смотришь каждый день: на 5-й день p=0.03. Какое правильное действие?

Ключевые идеи

  • **EDA первична**: распределение, skewness, корреляции - до любого теста. Смещение выборки обнаруживается до построения модели, не после
  • **t-тест / хи-квадрат / ANOVA** - разные инструменты для разных данных. Welch t-тест надёжен при неравных дисперсиях. ANOVA + Tukey HSD для 3+ групп
  • **p-value - не вероятность правоты**: это P(данные | H0). Cohen's d и доверительный интервал рассказывают о практической значимости
  • **Multiple testing correction**: при тестировании N гипотез Bonferroni (строго) или Benjamini-Hochberg FDR (более гибко) - иначе ложные открытия неизбежны
  • **Power analysis до запуска**: размер выборки считается заранее. Optional stopping ломает FWER гарантии

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

EDA и статистические тесты соединяют понимание данных с принятием решений:

  • Hypothesis Testing — Формальный фреймворк H0/H1, ошибки типов I и II, мощность теста
  • t-тест — Детальный разбор t-теста: paired, Welch, assumptions
  • ANOVA — Дисперсионный анализ: от F-статистики до post-hoc тестов

Вопросы для размышления

  • A/B тест показал p=0.001 и Cohen's d=0.03. Какое решение принять и почему?
  • Почему нельзя применять ANOVA без проверки предположений (нормальность, равенство дисперсий) и чем заменить при нарушениях?
  • Исследователь тестирует 50 различных метрик и находит 3 значимых при p < 0.05. Как оценить, сколько из них реальные открытия?

Связанные уроки

  • stat-05-hypothesis — Формальная база для t-теста и хи-квадрата - H0/H1, p-value, мощность
  • stat-06-t-test — Глубокое погружение в t-тест со всеми вариациями (Welch, paired)
  • stat-07-chi-square — Хи-квадрат тест независимости для категориальных переменных
  • stat-10-anova — ANOVA для сравнения трёх и более групп - обобщение t-теста
  • ds-05 — EDA предшествует feature engineering - сначала понять распределения, потом трансформировать
  • ml-04-data-preprocessing
EDA и статистические тесты: когда данные лгут

0

1

Войти