Совместная и условная вероятность. Формула Байеса. Пример.¶
Совместная и условная вероятность являются ключевыми понятиями в теории вероятностей, позволяющими анализировать взаимосвязи между различными событиями. Формула Байеса представляет собой важный инструмент для обновления вероятностей в свете новой информации. Рассмотрим эти понятия более подробно, а затем приведём пример применения формулы Байеса.
Совместная вероятность¶
Совместная вероятность двух событий \(A\) и \(B\) обозначается как \(P(A \cap B)\) и представляет собой вероятность того, что оба события произойдут одновременно.
Условная вероятность¶
Условная вероятность события \(A\) при условии, что произошло событие \(B\), обозначается как \(P(A|B)\) и определяется как: \(P(A|B) = \dfrac{P(A \cap B)}{P(B)}, \quad \text{где} \quad P(B) > 0\)
Формула Байеса¶
Формула Байеса позволяет пересчитывать условные вероятности событий на основе новой информации. С учетом равенства \(P(A \cap B) = P(A|B) P(B) = P(B|A) P(A)\) формула записывается так:
\(P(A|B) = \dfrac{P(B|A) \cdot P(A)}{P(B)}, \quad \text{где} \quad P(B) > 0\)
Пример применения формулы Байеса¶
Рассмотрим пример. Пусть имеется тест на болезнь, который может быть положительным или отрицательным. Пусть: - \(A\) — событие, что человек болен. - \(B\) — событие, что тест положительный.
Даны следующие вероятности: - Вероятность болезни в популяции: \(P(A) = 0.01\). - Вероятность положительного теста у больного человека (чувствительность теста): \(P(B|A) = 0.99\). - Вероятность положительного теста у здорового человека (ложноположительный результат): \(P(B|\neg A) = 0.05\).
Необходимо найти вероятность того, что человек болен при условии, что тест положительный, то есть \(P(A|B)\).
Для этого сначала найдём \(P(B)\) — полную вероятность положительного теста: \(P(B) = P(B|A) \cdot P(A) + P(B|\neg A) \cdot P(\neg A)\) \(P(B) = 0.99 \cdot 0.01 + 0.05 \cdot 0.99\) \(P(B) = 0.0099 + 0.0495 = 0.0594\)
Теперь используем формулу Байеса:
\(P(A|B) = \dfrac{P(B|A) \cdot P(A)}{P(B)}\)
\(P(A|B) = \dfrac{0.99 \cdot 0.01}{0.0594}\)
\(P(A|B) = \dfrac{0.0099}{0.0594} \approx 0.1667\)
Таким образом, вероятность того, что человек болен при условии, что тест положительный, составляет приблизительно 0.167, или 16.67%.
Этот пример иллюстрирует, как использование формулы Байеса позволяет обновить вероятность события на основе новой информации, что является важным инструментом в различных областях науки и техники.
Python¶
from abc import ABC, abstractmethod
# Создаем абстрактный класс для работы с формулой Байеса
class BayesFormula(ABC):
def __init__(self, prob_a, prob_b_given_a, prob_b_given_not_a):
self.prob_a = prob_a # Вероятность события A
self.prob_b_given_a = prob_b_given_a # Вероятность события B при условии A
self.prob_b_given_not_a = prob_b_given_not_a # Вероятность события B при условии не A
@abstractmethod
def calculate_posterior(self):
pass
# Конкретная реализация класса для формулы Байеса
class BayesCalculator(BayesFormula):
def calculate_posterior(self):
# Вычисляем полную вероятность события B
total_prob_b = self.prob_b_given_a * self.prob_a + self.prob_b_given_not_a * (1 - self.prob_a)
# Вычисляем вероятность события A при условии B по формуле Байеса
posterior = (self.prob_b_given_a * self.prob_a) / total_prob_b
return posterior
# Пример использования интерфейса для вычисления вероятности болезни при положительном тесте
if __name__ == "__main__":
# Дано:
prob_disease = 0.01 # Вероятность болезни в популяции
prob_positive_given_disease = 0.99 # Вероятность положительного теста у больного человека
prob_positive_given_no_disease = 0.05 # Вероятность положительного теста у здорового человека
# Создаем объект класса BayesCalculator с заданными вероятностями
bayes = BayesCalculator(prob_disease, prob_positive_given_disease, prob_positive_given_no_disease)
# Вычисляем вероятность болезни при положительном тесте
posterior_probability = bayes.calculate_posterior()
# Выводим результат
print("Вероятность того, что человек болен при положительном тесте:", posterior_probability)
В этой версии примера использован интерфейс для работы с формулой Байеса. Создан абстрактный класс BayesFormula
, содержащий абстрактный метод calculate_posterior()
, который должен быть реализован в конкретных классах. Затем создан конкретный класс BayesCalculator
, который наследует абстрактный класс BayesFormula
и реализует метод calculate_posterior()
для вычисления вероятности события A при условии B по формуле Байеса.