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

Что такое ошибки первого и второго рода в статистике?

2.0 Middle🔥 181 комментариев
#Статистика и теория вероятностей#Статистические критерии и тесты

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

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

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

Что такое ошибки первого и второго рода в статистике?

Ошибки первого и второго рода — это два типа ошибок при проверке статистических гипотез. Для Data Analyst понимание этих ошибок критично при работе с A/B тестами, анализом значимости и принятии решений на основе данных.

Контекст: проверка гипотез

При проверке гипотезы мы проверяем два варианта:

  • H0 (нулевая гипотеза) — предположение, которое мы тестируем (обычно — нет эффекта)
  • H1 (альтернативная гипотеза) — предположение, которое мы принимаем если H0 ложна (есть эффект)

Ошибка первого рода (Type I Error) — ложный положительный результат

Ошибка первого рода (α) — это отклонение нулевой гипотезы когда она на самом деле верна. Мы утверждаем, что есть эффект, когда его нет.

Вероятность ошибки первого рода — это уровень значимости α (обычно 0.05 или 5%).

Ошибка второго рода (Type II Error) — ложный отрицательный результат

Ошибка второго рода (β) — это принятие нулевой гипотезы когда она ложна. Мы не находим эффект, когда он есть.

Вероятность ошибки второго рода — это β (обычно 0.1 или 0.2 или 10-20%).

Мощность теста (Power) — вероятность правильно отклонить ложную гипотезу (1 - β), обычно целимся на 80-90%.

Матрица ошибок:

                   Реальность H0 верна    Реальность H0 ложна
                   (Нет эффекта)          (Есть эффект)
─────────────────────────────────────────────────────────────
Мы отклоняем H0   Ошибка I рода (α)      Правильно (Power = 1-β)
(Говорим: есть     Ложный положит.        Истинный положит.
 эффект)
─────────────────────────────────────────────────────────────
Мы принимаем H0   Правильно              Ошибка II рода (β)
(Говорим: нет      (Истинный              Ложный отрицательный
 эффекта)          отрицательный)

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

Пример 1: Медицинский тест

Гипотеза: У пациента есть болезнь

Ошибка I рода (α): Сказать, что болезнь есть, когда её нет
→ Последствие: Ненужное лечение, беспокойство пациента
→ Вероятность: α = 0.05 (5%)

Ошибка II рода (β): Сказать, что болезни нет, когда она есть
→ Последствие: Пациент не получает лечение, болезнь прогрессирует
→ Вероятность: β = 0.10 (10%)

Пример 2: A/B тест в интернет-магазине

from scipy.stats import ttest_ind

# Новый дизайн кнопки (версия B) vs старый дизайн (версия A)
version_a_conversions = [1, 0, 1, 1, 0, 1, 0, 1, 1, 0]  # 60% конверсия
version_b_conversions = [1, 1, 1, 1, 0, 1, 1, 1, 1, 0]  # 80% конверсия

t_stat, p_value = ttest_ind(version_a_conversions, version_b_conversions)

alpha = 0.05  # Уровень значимости

print(f'p-значение: {p_value:.4f}')
print(f'Уровень значимости α: {alpha}')

if p_value < alpha:
    print('Отклоняем H0: версия B лучше')
    # Риск ошибки I рода: 5% шанс, что мы ошиблись
    # (на самом деле версии одинаковые)
else:
    print('Принимаем H0: различий нет')
    # Риск ошибки II рода: мы можем пропустить реальное улучшение
    # (нужна большая выборка, чтобы его обнаружить)

Пример 3: Обнаружение мошенничества

Гипотеза: Транзакция мошенническая

Ошибка I рода: Считаем транзакцию мошеннической, когда она легальна
→ Последствие: Блокируем легального покупателя, теряем клиента
→ Вероятность: α (высокая стоимость)

Ошибка II рода: Не замечаем мошеннический платёж
→ Последствие: Финансовые потери компании
→ Вероятность: β (высокая стоимость)

Компромисс между α и β:

Есть инверсная связь между α и β: при уменьшении одной, другая увеличивается (при фиксированном размере выборки).

import numpy as np
from scipy.stats import norm

# Визуализация компромисса
# Левая кривая: распределение при H0 верна
# Правая кривая: распределение при H0 ложна

plt.figure(figsize=(12, 6))

# H0 верна (среднее = 0)
x1 = np.linspace(-4, 4, 1000)
y1 = norm.pdf(x1, 0, 1)
plt.plot(x1, y1, 'b-', linewidth=2, label='H0 верна')

# H0 ложна (среднее = 2)
y2 = norm.pdf(x1, 2, 1)
plt.plot(x1, y2, 'r-', linewidth=2, label='H0 ложна')

# Критическое значение при α = 0.05
alpha = 0.05
critical = norm.ppf(1 - alpha)
plt.axvline(critical, color='green', linestyle='--', label=f'Критическое значение (α={alpha})')

# Ошибка I рода (α) — синяя область справа от критического значения
plt.fill_between(x1[x1 > critical], y1[x1 > critical], alpha=0.3, color='blue', label='Ошибка I (α)')

# Ошибка II рода (β) — красная область слева от критического значения
mask = x1 < critical
plt.fill_between(x1[mask], y2[mask], alpha=0.3, color='red', label='Ошибка II (β)')

plt.xlabel('Значение статистики')
plt.ylabel('Плотность')
plt.legend()
plt.title('Ошибки первого и второго рода')
plt.show()

print(f'Ошибка I рода (α): примерно {alpha:.2%}')
print(f'Ошибка II рода (β): примерно {norm.cdf(critical - 2):.2%}')

Как выбрать α и β:

Ошибка I более критична когда:

  • Неправильное решение имеет серьёзные последствия (медицина, безопасность)
  • Стоимость ложного положительного результата высока
  • Используем α = 0.01 или 0.001

Ошибка II более критична когда:

  • Упустить реальный эффект дорого
  • Хотим высокую мощность теста (1 - β = 0.9)
  • Целимся на β = 0.1 или 0.2 (мощность 90% или 80%)

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

Чтобы уменьшить обе ошибки — нужна большая выборка:

from scipy.stats import ttest_ind_from_stats
import numpy as np

# Рассчитать размер выборки для A/B теста
# Параметры:
effect_size = 0.2  # Размер эффекта (Cohen's d)
alpha = 0.05       # Уровень значимости
power = 0.8        # Желаемая мощность (1 - beta)

# Используем формулу
from statsmodels.stats.power import tt_ind_solve_power

n = tt_ind_solve_power(
    effect_size=effect_size,
    alpha=alpha,
    power=power,
    ratio=1.0
)

print(f'Требуемый размер выборки: {int(n)} на каждую группу')
print(f'Общее количество наблюдений: {int(n*2)}')

Реальный пример: A/B тест платформы

from scipy.stats import ttest_ind

# Тестируем новую версию рекомендаций
old_engagement = [0.45, 0.52, 0.48, 0.55, 0.51, 0.49, 0.53, 0.46] * 50
new_engagement = [0.48, 0.54, 0.51, 0.57, 0.53, 0.52, 0.55, 0.49] * 50

t_stat, p_value = ttest_ind(old_engagement, new_engagement)
alpha = 0.05

print(f'Старая версия: средняя = {np.mean(old_engagement):.3f}')
print(f'Новая версия: средняя = {np.mean(new_engagement):.3f}')
print(f'p-значение: {p_value:.4f}')
print()

if p_value < alpha:
    print(f'✓ Отклоняем H0 (p < {alpha})')
    print(f'  Новая версия статистически значимо лучше')
    print(f'  Риск ошибки I (α): {alpha:.1%}')
    print(f'  Это значит: 5% шанс, что мы ошиблись')
    print(f'  Выводы: Внедряем новую версию!')
else:
    print(f'✗ Не отклоняем H0 (p >= {alpha})')
    print(f'  Различия не статистически значимы')
    print(f'  Риск ошибки II (β): неизвестен без анализа мощности')
    print(f'  Выводы: Нужна большая выборка или нет реального эффекта')

Чек-лист для Data Analyst:

✅ Установи α перед анализом (обычно 0.05) ✅ Рассчитай требуемый размер выборки для нужной мощности ✅ Интерпретируй p-значение как вероятность ошибки I рода ✅ Помни о мощности теста (1 - β), не только о α ✅ При p > α не говори "гипотеза верна", говори "нет доказательств против H0" ✅ Документируй оба риска в отчётах

Выводы:

  • Ошибка I (α) — отклоняем верную гипотезу (ложный положительный)
  • Ошибка II (β) — принимаем ложную гипотезу (ложный отрицательный)
  • Компромисс: снизить одну часто означает повысить другую
  • Решение: увеличить размер выборки
  • Мощность теста (1 - β) — способность обнаружить реальный эффект

Эти ошибки — не математическая абстракция, а реальные риски при принятии бизнес-решений на основе данных.

Что такое ошибки первого и второго рода в статистике? | PrepBro