Перейти к содержанию

Формулы статистики

~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-интервью.

Описательная статистика

Меры центральной тенденции

Среднее арифметическое

\[\bar{x} = \frac{1}{n} \sum_{i=1}^{n} x_i\]

Медиана

Значение, разделяющее упорядоченную выборку пополам

Мода

Наиболее часто встречающееся значение

Взвешенное среднее

\[\bar{x}_w = \frac{\sum_{i=1}^{n} w_i x_i}{\sum_{i=1}^{n} w_i}\]

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

Дисперсия (population)

\[\sigma^2 = \frac{1}{N} \sum_{i=1}^{N} (x_i - \mu)^2\]

Дисперсия (sample, несмещённая)

\[s^2 = \frac{1}{n-1} \sum_{i=1}^{n} (x_i - \bar{x})^2\]

Стандартное отклонение

\[\sigma = \sqrt{\sigma^2}, \quad s = \sqrt{s^2}\]

Коэффициент вариации

\[CV = \frac{s}{\bar{x}} \times 100\%\]

Межквартильный размах

\[IQR = Q_3 - Q_1\]

Меры формы

Асимметрия (Skewness)

\[\gamma_1 = \frac{E[(X-\mu)^3]}{\sigma^3} = \frac{\frac{1}{n}\sum(x_i - \bar{x})^3}{s^3}\]
  • \(\gamma_1 > 0\): правый хвост длиннее
  • \(\gamma_1 < 0\): левый хвост длиннее
  • \(\gamma_1 = 0\): симметричное

Эксцесс (Kurtosis)

\[\gamma_2 = \frac{E[(X-\mu)^4]}{\sigma^4} - 3\]
  • \(\gamma_2 > 0\): тяжёлые хвосты
  • \(\gamma_2 < 0\): лёгкие хвосты
  • \(\gamma_2 = 0\): нормальное распределение

Корреляция

Коэффициент Пирсона

\[r = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum(x_i - \bar{x})^2 \sum(y_i - \bar{y})^2}} = \frac{Cov(X,Y)}{\sigma_X \sigma_Y}\]

Коэффициент Спирмена (ранговый)

\[\rho = 1 - \frac{6\sum d_i^2}{n(n^2-1)}\]

где \(d_i\) — разница рангов

R-squared

\[R^2 = r^2 = 1 - \frac{SS_{res}}{SS_{tot}} = 1 - \frac{\sum(y_i - \hat{y}_i)^2}{\sum(y_i - \bar{y})^2}\]

Adjusted R-squared

\[R^2_{adj} = 1 - (1-R^2)\frac{n-1}{n-p-1}\]

Доверительные интервалы

Для среднего (σ известна)

\[\bar{x} \pm z_{\alpha/2} \frac{\sigma}{\sqrt{n}}\]

Для среднего (σ неизвестна)

\[\bar{x} \pm t_{\alpha/2, n-1} \frac{s}{\sqrt{n}}\]

Для пропорции

\[\hat{p} \pm z_{\alpha/2} \sqrt{\frac{\hat{p}(1-\hat{p})}{n}}\]

Критические значения Z

Уровень доверия \(z_{\alpha/2}\)
90% 1.645
95% 1.96
99% 2.576

Проверка гипотез

Общая схема

  1. \(H_0\): нулевая гипотеза
  2. \(H_1\): альтернативная гипотеза
  3. Выбор уровня значимости \(\alpha\)
  4. Расчёт тестовой статистики
  5. Сравнение с критическим значением или p-value

Z-тест (одна выборка)

\[z = \frac{\bar{x} - \mu_0}{\sigma / \sqrt{n}}\]

t-тест (одна выборка)

\[t = \frac{\bar{x} - \mu_0}{s / \sqrt{n}}, \quad df = n-1\]

t-тест (две независимые выборки)

\[t = \frac{\bar{x}_1 - \bar{x}_2}{\sqrt{s_p^2(\frac{1}{n_1} + \frac{1}{n_2})}}, \quad df = n_1 + n_2 - 2\]
\[s_p^2 = \frac{(n_1-1)s_1^2 + (n_2-1)s_2^2}{n_1 + n_2 - 2}\]

Парный t-тест

\[t = \frac{\bar{d}}{s_d / \sqrt{n}}, \quad df = n-1\]

где \(d_i = x_{1i} - x_{2i}\)

Chi-squared тест

\[\chi^2 = \sum_{i=1}^{k} \frac{(O_i - E_i)^2}{E_i}\]

F-тест (ANOVA)

\[F = \frac{MS_{between}}{MS_{within}} = \frac{SS_B / (k-1)}{SS_W / (N-k)}\]

p-value

\[p = P(\text{получить такую или более экстремальную статистику} | H_0)\]

Интерпретация

  • \(p < 0.05\): статистически значимо (отвергаем \(H_0\))
  • \(p \geq 0.05\): не можем отвергнуть \(H_0\)

Типы ошибок

  • Type I (α): отвергли \(H_0\), когда она верна
  • Type II (β): не отвергли \(H_0\), когда она ложна
  • Power = \(1 - \beta\): вероятность обнаружить эффект

A/B тестирование

Размер выборки

\[n = \frac{2(z_{\alpha/2} + z_\beta)^2 \sigma^2}{\Delta^2}\]

где \(\Delta\) — минимальный эффект, который хотим обнаружить

Для пропорций

\[n = \frac{(z_{\alpha/2} + z_\beta)^2 [p_1(1-p_1) + p_2(1-p_2)]}{(p_1 - p_2)^2}\]

Z-тест для пропорций

\[z = \frac{\hat{p}_1 - \hat{p}_2}{\sqrt{\hat{p}(1-\hat{p})(\frac{1}{n_1} + \frac{1}{n_2})}}\]

где \(\hat{p} = \frac{x_1 + x_2}{n_1 + n_2}\) (pooled proportion)


Регрессия

Простая линейная регрессия

\[y = \beta_0 + \beta_1 x + \epsilon\]
\[\hat{\beta}_1 = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sum(x_i - \bar{x})^2} = r \frac{s_y}{s_x}\]
\[\hat{\beta}_0 = \bar{y} - \hat{\beta}_1 \bar{x}\]

Стандартная ошибка

\[SE(\hat{\beta}_1) = \frac{s}{\sqrt{\sum(x_i - \bar{x})^2}}\]

где \(s = \sqrt{\frac{\sum(y_i - \hat{y}_i)^2}{n-2}}\)

Доверительный интервал для коэффициента

\[\hat{\beta}_1 \pm t_{\alpha/2, n-2} \cdot SE(\hat{\beta}_1)\]

t-тест для коэффициента

\[t = \frac{\hat{\beta}_1}{SE(\hat{\beta}_1)}\]

Bootstrap

Алгоритм

  1. Из выборки размера n делаем выборку с возвращением размера n
  2. Вычисляем статистику
  3. Повторяем B раз
  4. Строим распределение статистики

Доверительный интервал (percentile)

\[CI_{95\%} = [\theta^*_{2.5\%}, \theta^*_{97.5\%}]\]

Множественные сравнения

Проблема

При \(m\) тестов вероятность хотя бы одной ошибки I рода: $\(P(\text{хотя бы одна ошибка}) = 1 - (1-\alpha)^m\)$

Bonferroni коррекция

\[\alpha_{corrected} = \frac{\alpha}{m}\]

Benjamini-Hochberg (FDR)

  1. Упорядочить p-values: \(p_{(1)} \leq p_{(2)} \leq ... \leq p_{(m)}\)
  2. Найти наибольшее \(k\): \(p_{(k)} \leq \frac{k}{m}\alpha\)
  3. Отвергнуть \(H_0\) для всех \(i \leq k\)

Байесовская статистика

Теорема Байеса

\[P(\theta|D) = \frac{P(D|\theta)P(\theta)}{P(D)}\]
  • \(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

\[P(\theta_L < \theta < \theta_U | D) = 0.95\]

В отличие от частотного 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