Собесов

Хабр Статистика — формула Байеса: тест на редкую болезнь

Статистика и теорверФормула БайесаСредняяJunior

Условие

Болезнь встречается у 1% населения. Тест на болезнь:

  • При наличии болезни даёт положительный результат с вероятностью 99% (чувствительность);
  • При отсутствии болезни — положительный результат с вероятностью 5% (1 - специфичность).

Человек получил положительный результат. Какова вероятность, что он действительно болен?

Решение

Формула Байеса

P(D+)=P(+D)P(D)P(+D)P(D)+P(+¬D)P(¬D)P(D \mid +) = \frac{P(+ \mid D) \cdot P(D)}{P(+ \mid D) \cdot P(D) + P(+ \mid \neg D) \cdot P(\neg D)}

Подставляем:

Параметр Значение
P(D) 0.01
P(¬D) 0.99
P(+ | D) чувствит. 0.99
P(+ | ¬D) ложн. трев. 0.05
P(D | +) = (0.99 · 0.01) / (0.99 · 0.01 + 0.05 · 0.99)
        = 0.0099 / (0.0099 + 0.0495)
        = 0.0099 / 0.0594
        ≈ 0.167

≈ 16.7%.

Интуиция «частотного» решения

Возьмём 10 000 человек:

  • 100 больных. Из них тест поймает 99 (правильно).
  • 9 900 здоровых. Из них 5% = 495 получат ложный положительный.
  • Положительных всего: 99 + 495 = 594.
  • Из них реально больных: 99.
  • Доля больных среди положительных: 99 / 594 ≈ 16.7%.

Почему ответ кажется маленьким

Базовая ставка (P(D) = 1%) низкая. Даже хороший тест с 99% чувствительностью генерирует много ложноположительных среди 99% здоровых. Это base rate fallacy — типичная ошибка интуиции.

Что было бы при P(D) = 10%

P(D | +) = (0.99 · 0.10) / (0.99 · 0.10 + 0.05 · 0.90)
        = 0.099 / (0.099 + 0.045)
        ≈ 0.688

≈ 69%. Та же чувствительность теста — но base rate резко меняет ответ.

Связь с метриками классификации

  • P(+|D) = recall = sensitivity = TPR;
  • P(-|¬D) = specificity = 1 - FPR;
  • P(D|+) = precision (PPV);
  • P(D) = prevalence.

В терминах ML:

Precision=TPRPrevalenceTPRPrevalence+FPR(1Prevalence)\text{Precision} = \frac{\text{TPR} \cdot \text{Prevalence}}{\text{TPR} \cdot \text{Prevalence} + \text{FPR} \cdot (1 - \text{Prevalence})}

Подводные камни

  1. Игнорирование базовой ставки. «Тест 99% точный → 99% больной» — самая частая ошибка.
  2. P(+|D) = 0.99P(D|+) = 0.99. Условные вероятности не симметричны.
  3. «Сделаю тест дважды». Если тесты не независимы (а они обычно коррелированы — один человек, одна биология), результат меньше «улучшается», чем кажется.
  4. «99% специфичность ≈ 99% точность». Specificity — это P(-|¬D), не accuracy.
  5. Чисто в собеседовании: применять формулу Байеса к скоринговой модели, не понимая, что «положительный по модели» = score > threshold, и FPR/TPR зависят от threshold.

Эталонный ответ

P(D|+) = P(+|D)·P(D) / [P(+|D)·P(D) + P(+|¬D)·P(¬D)] = 0.99·0.01 / (0.99·0.01 + 0.05·0.99) ≈ 16.7%. Низкая base rate перебивает высокую чувствительность теста — это base rate fallacy.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти