← Назад к вопросам

Что проверяют статистические тесты?

1.0 Junior🔥 221 комментариев
#Машинное обучение#Статистика и A/B тестирование

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Статистические тесты: назначение и сущность

Статистические тесты — это один из фундаментальных инструментов в работе Data Scientist. Они позволяют принимать обоснованные решения на основе данных и минимизировать вероятность ошибок.

Основная цель

Статистические тесты проверяют гипотезы о данных. Они отвечают на вопрос: "Является ли наблюдаемое различие статистически значимым или это просто случайная флуктуация?"

Нулевая и альтернативная гипотезы

Каждый тест работает с двумя гипотезами:

  • H₀ (нулевая гипотеза) — предположение, что эффекта нет (различия случайны)
  • H₁ (альтернативная гипотеза) — предположение, что эффект существует

Тест либо отклоняет H₀, либо не отклоняет её. Это не означает, что H₀ верна — просто недостаточно доказательств против неё.

Ключевые концепции

P-value (p-значение) Вероятность получить такой же или более экстремальный результат при условии, что H₀ верна. Если p < α (обычно 0.05), отклоняем H₀:

from scipy import stats
import numpy as np

# Пример: сравнение двух выборок
group1 = np.array([1.2, 1.5, 1.3, 1.6])
group2 = np.array([1.8, 2.1, 1.9, 2.2])

# t-тест
t_statistic, p_value = stats.ttest_ind(group1, group2)
print(f"p-value: {p_value:.4f}")

if p_value < 0.05:
    print("Различия статистически значимы")
else:
    print("Различия не значимы")

Уровень значимости (α) Порог, при котором мы готовы отклонить H₀. Стандартно α = 0.05 (5% риск ошибки первого рода).

Типы ошибок

ОшибкаОписание
Type I (α)Отклонили H₀, хотя она верна (ложноположительный результат)
Type II (β)Не отклонили H₀, хотя она ложна (ложноотрицательный результат)

Основные тесты в DS

1. t-тест (сравнение средних)

# Одна выборка vs известное значение
stats.ttest_1samp(data, 0)

# Две независимые выборки
stats.ttest_ind(group1, group2)

# Две зависимые выборки (парный тест)
stats.ttest_rel(before, after)

2. ANOVA (сравнение трёх и более групп)

group1, group2, group3 = [1,2,3], [2,3,4], [3,4,5]
f_stat, p_value = stats.f_oneway(group1, group2, group3)

3. Тест хи-квадрат (категориальные данные)

# Проверка независимости категорий
contingency_table = np.array([[10, 20], [15, 25]])
chi2, p_value, dof, expected = stats.chi2_contingency(contingency_table)

4. Mann-Whitney U тест (непараметрический аналог t-теста)

# Когда данные не нормальны
stats.mannwhitneyu(group1, group2)

Допущения тестов

Это критично! Разные тесты требуют разные условия:

  • Нормальность (для t-теста): данные распределены нормально
  • Гомогенность дисперсий: дисперсии в группах одинаковы
  • Независимость: наблюдения независимы друг от друга

Если допущения нарушены, используй непараметрические тесты (Mann-Whitney, Kruskal-Wallis).

Практические примеры

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

# Конверсия контрольной и тестовой группы
control_conversions = 45
control_users = 1000
test_conversions = 55
test_users = 1000

# Тест пропорций
from statsmodels.stats.proportion import proportions_ztest
stat, pval = proportions_ztest([test_conversions, control_conversions], 
                                [test_users, control_users])

Выводы

Статистические тесты — это не просто числа в отчёте. Они помогают:

  • Валидировать гипотезы перед дорогостоящими решениями
  • Оценивать значимость различий между группами
  • Контролировать ошибки при множественном тестировании
  • Принимать обоснованные решения под неопределённостью

В работе всегда проверяю допущения тестов, учитываю размер выборки и применяю поправки для множественного тестирования (Bonferroni, FDR).