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