Формулы статистики¶
~6 минут чтения
Предварительно: Формулы теории вероятностей | Подготовка к интервью по математике
Статистика -- язык принятия решений в ML и продуктовой аналитике. Каждый A/B тест в Google/Meta/Yandex опирается на формулы из этого справочника: z-тест для пропорций, power analysis для размера выборки, Bonferroni коррекция при множественных сравнениях. При типичном A/B тесте с baseline conversion 5% и MDE 0.5% (относительный 10%) нужно ~30 000 пользователей на группу при alpha=0.05, power=0.8. Ошибка в формуле размера выборки = недостаточная мощность теста = упущенные или ложные product decisions. Вопросы по A/B тестированию, p-value, доверительным интервалам встречаются на 70%+ Data Science интервью и 40%+ ML-интервью.
Описательная статистика¶
Меры центральной тенденции¶
Среднее арифметическое¶
Медиана¶
Значение, разделяющее упорядоченную выборку пополам
Мода¶
Наиболее часто встречающееся значение
Взвешенное среднее¶
Меры разброса¶
Дисперсия (population)¶
Дисперсия (sample, несмещённая)¶
Стандартное отклонение¶
Коэффициент вариации¶
Межквартильный размах¶
Меры формы¶
Асимметрия (Skewness)¶
- \(\gamma_1 > 0\): правый хвост длиннее
- \(\gamma_1 < 0\): левый хвост длиннее
- \(\gamma_1 = 0\): симметричное
Эксцесс (Kurtosis)¶
- \(\gamma_2 > 0\): тяжёлые хвосты
- \(\gamma_2 < 0\): лёгкие хвосты
- \(\gamma_2 = 0\): нормальное распределение
Корреляция¶
Коэффициент Пирсона¶
Коэффициент Спирмена (ранговый)¶
где \(d_i\) — разница рангов
R-squared¶
Adjusted R-squared¶
Доверительные интервалы¶
Для среднего (σ известна)¶
Для среднего (σ неизвестна)¶
Для пропорции¶
Критические значения Z¶
| Уровень доверия | \(z_{\alpha/2}\) |
|---|---|
| 90% | 1.645 |
| 95% | 1.96 |
| 99% | 2.576 |
Проверка гипотез¶
Общая схема¶
- \(H_0\): нулевая гипотеза
- \(H_1\): альтернативная гипотеза
- Выбор уровня значимости \(\alpha\)
- Расчёт тестовой статистики
- Сравнение с критическим значением или p-value
Z-тест (одна выборка)¶
t-тест (одна выборка)¶
t-тест (две независимые выборки)¶
Парный t-тест¶
где \(d_i = x_{1i} - x_{2i}\)
Chi-squared тест¶
F-тест (ANOVA)¶
p-value¶
Интерпретация¶
- \(p < 0.05\): статистически значимо (отвергаем \(H_0\))
- \(p \geq 0.05\): не можем отвергнуть \(H_0\)
Типы ошибок¶
- Type I (α): отвергли \(H_0\), когда она верна
- Type II (β): не отвергли \(H_0\), когда она ложна
- Power = \(1 - \beta\): вероятность обнаружить эффект
A/B тестирование¶
Размер выборки¶
где \(\Delta\) — минимальный эффект, который хотим обнаружить
Для пропорций¶
Z-тест для пропорций¶
где \(\hat{p} = \frac{x_1 + x_2}{n_1 + n_2}\) (pooled proportion)
Регрессия¶
Простая линейная регрессия¶
Стандартная ошибка¶
где \(s = \sqrt{\frac{\sum(y_i - \hat{y}_i)^2}{n-2}}\)
Доверительный интервал для коэффициента¶
t-тест для коэффициента¶
Bootstrap¶
Алгоритм¶
- Из выборки размера n делаем выборку с возвращением размера n
- Вычисляем статистику
- Повторяем B раз
- Строим распределение статистики
Доверительный интервал (percentile)¶
Множественные сравнения¶
Проблема¶
При \(m\) тестов вероятность хотя бы одной ошибки I рода: $\(P(\text{хотя бы одна ошибка}) = 1 - (1-\alpha)^m\)$
Bonferroni коррекция¶
Benjamini-Hochberg (FDR)¶
- Упорядочить p-values: \(p_{(1)} \leq p_{(2)} \leq ... \leq p_{(m)}\)
- Найти наибольшее \(k\): \(p_{(k)} \leq \frac{k}{m}\alpha\)
- Отвергнуть \(H_0\) для всех \(i \leq k\)
Байесовская статистика¶
Теорема Байеса¶
- \(P(\theta)\): prior
- \(P(D|\theta)\): likelihood
- \(P(\theta|D)\): posterior
- \(P(D)\): evidence (marginal likelihood)
Conjugate priors¶
| Likelihood | Prior | Posterior |
|---|---|---|
| Binomial | Beta | Beta |
| Poisson | Gamma | Gamma |
| Normal (μ) | Normal | Normal |
| Normal (σ²) | Inv-Gamma | Inv-Gamma |
Credible Interval¶
В отличие от частотного CI, интерпретация прямая: "95% вероятность, что параметр в интервале"
Типичные заблуждения¶
Заблуждение: p < 0.05 значит '95% вероятность, что эффект существует'
p-value -- это P(данные | H0), не P(H0 | данные). p=0.03 значит: "если H0 верна, вероятность увидеть такие или более экстремальные данные = 3%". Это НЕ значит "97% вероятность, что H1 верна". Для P(H1 | данные) нужна теорема Байеса с prior P(H1). На практике при low prior (редкий эффект) даже p=0.01 может давать >50% false discovery rate. Это одна из главных причин кризиса воспроизводимости в науке.
Заблуждение: делим на n в формуле дисперсии
Выборочная дисперсия делится на (n-1), не на n. Деление на n даёт смещённую оценку -- систематически занижает истинную дисперсию. Коррекция Бесселя (n-1) компенсирует то, что мы оцениваем среднее из тех же данных. Для n=10 ошибка = 10%, для n=100 = 1%. NumPy по умолчанию np.var() делит на n, а np.var(ddof=1) -- на (n-1). Pandas .var() делит на (n-1) по умолчанию. Эта разница -- частый источник багов.
Заблуждение: если A/B тест не значим, значит эффекта нет
Незначимый результат (p >= 0.05) означает "недостаточно доказательств", не "эффект отсутствует". Типичная ошибка: запустили тест на 1000 пользователей, не получили значимость при MDE=1%, решили "фича не работает". Power analysis показал бы, что для MDE=1% при baseline 5% нужно 300K+ пользователей. Перед тестом обязательно: рассчитать размер выборки через n = 2(z_{alpha/2} + z_beta)^2 * sigma^2 / Delta^2.
Интервью¶
Как бы вы рассчитали размер выборки для A/B теста?
"Нужно побольше пользователей, тысяч 10 хватит"
"Формула: n = 2(z_{alpha/2} + z_beta)^2 * sigma^2 / Delta^2. Для бинарной метрики (CTR): n = (z_{alpha/2} + z_beta)^2 * [p1(1-p1) + p2(1-p2)] / (p1-p2)^2. Конкретный пример: baseline CTR = 5%, MDE = 0.5% абсолютный (p2=5.5%), alpha=0.05 (z=1.96), power=0.8 (z_beta=0.84). Подставляем: n = (1.96 + 0.84)^2 * [0.05*0.95 + 0.055*0.945] / (0.005)^2 ~ 30,000 на группу. Итого ~60K пользователей минимум."
В чём разница между коэффициентами корреляции Пирсона и Спирмена?
"Пирсон -- для нормальных данных, Спирмен -- для ненормальных"
"Пирсон измеряет линейную связь: r = Cov(X,Y) / (sigma_X * sigma_Y). Спирмен = Пирсон, применённый к рангам данных, т.е. измеряет монотонную связь. Пример: X = [1,2,3,4,5], Y = [1,4,9,16,25] -- Пирсон r ~ 0.98, но связь квадратичная. Спирмен rho = 1.0 (идеальная монотонная). Спирмен робастнее к выбросам (ранги ограничены). На практике: Пирсон для feature selection в линейных моделях, Спирмен для EDA и нелинейных зависимостей."
Что такое multiple testing problem и как его решать?
"Используем Bonferroni -- делим alpha на количество тестов"
"При m=20 независимых тестах с alpha=0.05 вероятность хотя бы одного ложного срабатывания = 1-(1-0.05)^20 = 64%. Два основных подхода: (1) Bonferroni -- alpha_corrected = 0.05/20 = 0.0025. Просто, но слишком консервативно -- теряем power. (2) Benjamini-Hochberg (FDR) -- контролируем долю ложных открытий, а не вероятность хотя бы одного. Сортируем p-values, находим наибольшее k где p(k) <= k/m * alpha. BH мощнее Bonferroni в 2--5 раз при m>10. На практике в продуктовой аналитике с 10+ метриками BH -- стандарт."
See Also¶
- Probability & Statistics -- распределения, математическое ожидание, дисперсия
- Metrics Cheatsheet -- R^2, метрики регрессии/классификации
- Hyperparameters Cheatsheet -- Bayesian optimization для подбора гиперпараметров
- sklearn Cheatsheet --
scipy.stats, A/B тесты, bootstrap в Python - LLM Evaluation Metrics -- статистические метрики для оценки LLM