Условная вероятность: когда известна часть истины
Разбираем, как знание об одном событии меняет вероятность другого.
Условная вероятность $P(A\mid B)$ — вероятность события $A$ при условии, что событие $B$ уже произошло.
Вероятности не высечены в камне: они меняются, когда мы что-то узнаём. «Какова вероятность, что на кубике выпала шестёрка?» — $\frac{1}{6}$. «А если известно, что число чётное?» — уже $\frac{1}{3}$. Информация сузила пространство возможностей. Этот пересчёт описывает условная вероятность — центральное понятие, ведущее прямо к формуле Байеса. По сути, условная вероятность формализует то, что мы делаем постоянно: обновляем мнение при поступлении новых фактов. Врач до осмотра оценивает вероятность диагноза по статистике, а после анализов пересматривает её. Следователь меняет круг подозреваемых с каждой уликой. Антиспам-фильтр повышает «подозрительность» письма с каждым тревожным словом. Все эти пересмотры подчиняются одной и той же арифметике условной вероятности, и, освоив её на кубике, вы получите ключ к гораздо более серьёзным задачам — медицинской диагностике и машинному обучению в том числе.
Определение
Условная вероятность вводится так:
$$P(A\mid B)=\frac{P(A\cap B)}{P(B)},\qquad P(B)\gt 0.$$
Идея проста: мы «переезжаем» в мир, где $B$ уже случилось, и считаем долю исходов, где вдобавок произошло $A$. Знаменатель $P(B)$ — это новое, суженное пространство; числитель — благоприятная его часть. Для шестёрки при условии чётности: $P(A\cap B)=P(\text{6})=\frac{1}{6}$, $P(B)=P(\text{чётное})=\frac{1}{2}$, значит $P(A\mid B)=\frac{1/6}{1/2}=\frac{1}{3}$.
Проверяем симуляцией
Будем бросать кубик, но учитывать только броски с чётным результатом, и среди них считать долю шестёрок.
import random
random.seed(2)
n = 600000
even = 0
six_given_even = 0
for _ in range(n):
d = random.randint(1, 6)
if d % 2 == 0:
even += 1
if d == 6:
six_given_even += 1
print("P(6 | чётное) симуляция:", round(six_given_even / even, 4))
print("Теория 1/3: ", round(1/3, 4))Вывод:
P(6 | чётное) симуляция: 0.3338 Теория 1/3: 0.3333
Мы отфильтровали броски по условию $B$ (чётность) и внутри этой группы посчитали долю $A$ (шестёрки) — ровно то, что предписывает определение. Результат сошёлся к $\frac{1}{3}$.
Независимость как частный случай
Если $P(A\mid B)=P(A)$, то знание о $B$ ничего не меняет — события независимы. Подставив определение, получаем уже знакомое $P(A\cap B)=P(A)P(B)$. Так условная вероятность объединяет всё, что мы знали о независимости, в одну формулу.
Умножение вероятностей
Переписав определение, получаем правило умножения в общем виде, верное и для зависимых событий:
$$P(A\cap B)=P(B)\cdot P(A\mid B).$$
Это незаменимо для последовательных событий: вероятность вытащить два туза подряд из колоды без возврата равна $\frac{4}{52}\cdot\frac{3}{51}$, где второй множитель — условная вероятность с учётом уже вынутого туза.
Как работает под капотом
В симуляции условие реализуется фильтрацией: мы просто игнорируем броски, не попавшие в $B$, и работаем только с оставшимися. Знаменатель $P(B)$ в коде — это число прошедших фильтр испытаний (even), а числитель — сколько из них удовлетворили и $A$ (six_given_even). Деление одного на другое и есть эмпирическая условная вероятность. Так абстрактная формула становится конкретной операцией «отбери подходящие, посчитай долю».
Частые ошибки
Самая частая ошибка — путать $P(A\mid B)$ и $P(B\mid A)$: «вероятность болезни при положительном тесте» и «вероятность положительного теста при болезни» — совершенно разные числа (мы посвятим этому отдельный урок). Вторая ошибка — забыть, что условие меняет знаменатель: нельзя просто «выкинуть» часть исходов из числителя, не пересчитав базу. Третья — делить на ноль: условная вероятность не определена, если условие $B$ невозможно.
Итог
- Условная вероятность пересчитывает шансы с учётом известной информации.
- Формула: $P(A\mid B)=\dfrac{P(A\cap B)}{P(B)}$.
- Независимость — это случай $P(A\mid B)=P(A)$.
- $P(A\mid B)$ и $P(B\mid A)$ — разные величины, их нельзя путать.