Условие
В городе дождь идёт в 20% дней. Прогноз погоды правильно предсказывает дождь (когда он будет) в 90% случаев и правильно предсказывает «не будет дождя» (когда его не будет) в 85% случаев. Сегодня синоптики говорят: «будет дождь». Какова вероятность, что дождь действительно будет?
Решение
Обозначения
R— событие «дождь идёт» (rain).P(R) = 0.20.R̄— «нет дождя».P(R̄) = 0.80.F— прогноз «будет дождь».P(F | R) = 0.90(sensitivity / true positive rate).P(F̄ | R̄) = 0.85→P(F | R̄) = 0.15(false positive rate).
Нужно: P(R | F).
Формула Байеса
P(R | F) = P(F | R) · P(R) / P(F)
P(F) = P(F | R) · P(R) + P(F | R̄) · P(R̄)
= 0.90 · 0.20 + 0.15 · 0.80
= 0.18 + 0.12 = 0.30
P(R | F) = 0.18 / 0.30 = 0.60
Ответ: 60%
Интерпретация
Несмотря на «90% точность» прогноза дождя, апостериорная вероятность всего 60%, потому что:
- Дождь редкий (20%), много дней без дождя.
- 15% ложноположительных при 80% «не-дождевых» дней даёт 12% общего трафика «прогноз дождя, нет дождя».
- 90% правильных при 20% «дождевых» дней даёт 18% общего трафика «прогноз дождя, есть дождь».
Из 100 прогнозов «дождь»: 18 правильных, 12 ложных → 60% правда.
Дерево событий
P(R) = 0.20
┌─────────────── F (0.90) → R∧F: 0.18 ✓ true positive
│ └ F̄ (0.10) → R∧F̄: 0.02
100% дней ─────┤
│
└ P(R̄) = 0.80 F (0.15) → R̄∧F: 0.12 ✗ false positive
F̄ (0.85) → R̄∧F̄: 0.68
P(F) = 0.18 + 0.12 = 0.30
PPV = P(R | F) = 0.18 / 0.30 = 0.60
Аналогия с медицинскими тестами
Тот же расчёт: «sensitivity 90%, specificity 85%, prevalence 20% → PPV = 60%».
Если болезнь редкая (prevalence 1%):
PPV = (0.90 · 0.01) / (0.90 · 0.01 + 0.15 · 0.99)
= 0.009 / 0.158 ≈ 5.7%
Положительный тест почти ничего не значит — отсюда «медицинский парадокс».
А если синоптики говорят «не будет дождя»
P(F̄) = P(F̄|R) · P(R) + P(F̄|R̄) · P(R̄) = 0.10 · 0.20 + 0.85 · 0.80 = 0.70
P(R | F̄) = 0.02 / 0.70 = 0.0286
P(R̄ | F̄) = 0.68 / 0.70 = 0.9714
То есть «нет дождя» по прогнозу очень надёжно (97%) — отрицательный тест точный, потому что отрицательное состояние частое.
Подводные камни
- «90% точность» неопределена: точность чего? Sensitivity? Accuracy? Без уточнения — задача нерешаема.
- Apriori prevalence (20%) часто игнорируют. Без неё PPV не посчитать.
accuracy = 0.90≠P(F | R) = 0.90: accuracy сводит обе ошибки в одно число; sensitivity/specificity — раздельно.P(R | F) ≠ P(F | R)— главная ошибка интуиции. Bayesian flip.- Зависимости между днями: реальные прогнозы коррелируют — Markov цепь, не iid.
- Базовое отношение шансов:
odds(R) = 0.2/0.8 = 0.25. После прогнозаodds(R|F) = 0.25 · 6 = 1.5→P = 0.6. (Likelihood ratio = 0.9 / 0.15 = 6).
Эталонный ответ
P(R | F) = P(F | R) · P(R) / [P(F|R) · P(R) + P(F|R̄) · P(R̄)]
= 0.9 · 0.2 / (0.9 · 0.2 + 0.15 · 0.8)
= 0.18 / 0.30 = 0.60
60% — несмотря на «высокую точность» прогноза. Причина: дождь редкий (20%), и доля ложноположительных оказывается соизмерима с долей true positives.
Главная ошибка интуиции: путать P(F | R) (sensitivity) и P(R | F) (PPV) — их связь даёт Байес и зависит от prevalence.