Теорема Байеса

Этот блокнот является частью Bite Size Bayes, введения в вероятность и байесовскую статистику с использованием Python.

Copyright 2020 Allen B. Downey

License: Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)

telegram

Open in Colab

Следующая ячейка загружает файл utils.py, содержащий некоторую полезную функцию, которая нам понадобится:

Следующая ячейка загружает файл данных, который мы будем использовать в этом блокноте:

Если все, что нам нужно, установлено, следующая ячейка должна работать без сообщений об ошибках:

Обзор

В предыдущем блокноте я определил вероятность, конъюнкцию и условную вероятность и использовал данные из GSS для вычисления вероятности различных логических утверждений.

Для обзора, вот как мы загрузили набор данных:

А вот и определенные нами логические утверждения, представленные с помощью логических серий (Boolean series):

Я определил следующую функцию, которая использует mean для вычисления доли значений True в логической серии:

Итак, мы можем вычислить вероятность такого утверждения:

Затем мы использовали оператор & для вычисления вероятности конъюнкции, например:

Затем я определил следующую функцию, которая использует оператор скобок для вычисления условной вероятности:

Мы показали, что конъюнкция коммутативна, так что prob(A & B) равно prob(B & A) для любых логических утверждений A и B.

Например:

Но условная вероятность НЕ коммутативна, поэтому conditional(A, B) обычно не то же самое, что conditional(B, A).

Например, вот вероятность того, что респондент - женщина, учитывая, что это банкир.

И вот вероятность того, что респондент - банкир, учитывая, что она женщина.

Даже не близко.

Другие утверждения

Для разнообразия наших примеров давайте определим некоторые новые утверждения.

Вот вероятность того, что случайный респондент - мужчина.

Отраслевой код для "Строительства" (Construction) - 770. Назовем кого-нибудь из этой области "builder" (строителем).

И давайте определимся с утверждениями для консерваторов и республиканцев:

Функция isin проверяет, находятся ли значения в заданной последовательности.

В этом примере значения 5 и 6 представляют ответы "Сильный республиканец" (Strong Republican) и "Несильный республиканец" (Not Strong Republican).

Наконец, я буду использовать age для определения утверждений для young (молодой) и old (пожилой).

Для этих порогов я выбрал круглые числа около 20-го и 80-го процентилей. В зависимости от вашего возраста вы можете соглашаться или не соглашаться с этими определениями young (молодой) и old (пожилой).

Упражнение: Есть известная цитата о молодых людях, стариках, либералах и консерваторах, которая звучит примерно так:

Если в 25 вы не либерал, у вас нет сердца. Если в 35 лет вы не консерватор, у вас нет мозга.

Независимо от того, согласны вы с этим утверждением или нет, оно предполагает некоторые вероятности, которые мы можем вычислить в качестве проверки.

Используйте prob и conditional для вычисления этих вероятностей.

Для каждого утверждения подумайте, выражает ли оно конъюнкцию, условную вероятность или и то, и другое.

А для условных вероятностей будьте осторожны с порядком!

Если ваш последний ответ больше 30%, значит, вы получили его наоборот!

Вперед!

В этом ноутбуке мы выведем три отношения между конъюнкцией и условной вероятностью:

Теорема 3 также известна как теорема Байеса, которая является основой байесовской статистики.

В некоторых частях этого блокнота будет полезно использовать математические обозначения вероятностей, поэтому я представлю их сейчас.

Теперь мы готовы к Теореме 1.

Теорема 1

Какая часть строителей - мужчины? Мы уже видели один способ вычислить ответ:

  1. с помощью оператора скобок выберите строителей, затем

  2. используйте mean, чтобы вычислить долю строителей мужского пола.

Мы можем записать эти шаги так:

Или мы можем использовать функцию conditional, которая делает то же самое:

Но есть другой способ: чтобы вычислить долю строителей-мужчин, мы можем вычислить отношение двух вероятностей:

  1. долю респондентов строителей-мужчин и

  2. долю респондентов строителей.

Вот как это выглядит:

Результат тот же.

Этот пример демонстрирует общее правило, которое связывает условную вероятность и конъюнкцию.

Вот как это выглядит в математической записи:

$P(A|B) = \frac{P(A~\mathrm{and}~B)}{P(B)}$

И это Теорема 1.

В этом примере:

conditional(male, builder) = prob(male & builder) / prob(builder)

Упражнение: Какая часть консерваторов - республиканцы? Вычислите ответ двумя способами:

Подтвердите, что вы получили такой же ответ.

Примечание: из-за арифметики с плавающей запятой результаты могут не совпадать, но почти все цифры должны совпадать.

Доказательство?

На самом деле я не доказал Теорему 1; в основном, это утверждение о том, что означает условная вероятность.

Например, рассмотрим эту диаграмму Венна:

Синий кружок представляет респондентов-мужчин. Красный кружок представляет строителей. На пересечении изображены мужчины-строители.

Чтобы вычислить долю мужчин-строителей, мы можем вычислить отношение пересечения, которое представляет собой prob(male & builder), к красному кружку, то есть prob(builder).

Упражнение: Для практики вычислите долю пожилых банкиров двумя способами: используя функцию conditional и Теорему 1.

Теорема 2

Снова Теорема 1:

$P(A|B) = \frac{P(A~\mathrm{and}~B)}{P(B)}$

Если умножить обе части на $P(B)$, получим Теорему 2.

$P(A~\mathrm{and}~B) = P(B) P(A|B)$

Эта формула предлагает второй способ вычисления конъюнкции: вместо использования оператора & мы можем вычислить произведение двух вероятностей.

Посмотрим, сработает ли это для conservative (консерваторов) и republican (республиканцев).

Вот результат с использованием &:

И вот результат использования Теоремы 2:

Из-за ошибок с плавающей запятой они могут не совпадать, но почти все цифры одинаковы.

Упражнение: Проверьте Теорему 2 еще раз, вычислив долю респондентов, которые являются пожилыми либералами двумя способами:

Результаты должны быть такими же или, по крайней мере, очень близкими.

Конъюнкция коммутативна

Мы уже установили, что конъюнкция коммутативна. В математической записи это означает:

$P(A~\mathrm{and}~B) = P(B~\mathrm{and}~A)$

Если применить Теорему 2 к обеим сторонам, мы имеем

$P(B) P(A|B) = P(A) P(B|A)$

Вот один способ интерпретировать это: если вы хотите проверить $A$ и $B$, вы можете сделать это в любом порядке:

  1. вы можете сначала проверить $B$, затем $A$ при условии, что $B$, или

  2. вы можете сначала проверить $A$, затем $B$ при условии, что $A$.

Чтобы попробовать, я вычислю долю молодых строителей двумя способами:

То же самое!

Упражнение: Рассчитайте вероятность быть мужчиной-банкиром двумя способами и посмотрите, получите ли вы то же самое.

Теорема 3

В предыдущем разделе мы установили, что

$P(B) P(A|B) = P(A) P(B|A)$

Если разделить на $P(B)$, получим Теорему 3:

$P(A|B) = \frac{P(A) P(B|A)}{P(B)}$

И это, друзья мои, теорема Байеса.

Чтобы увидеть, как это работает, попробуем еще одну комбинацию наших утверждений.

Давайте вычислим долю либеральных строителей, сначала используя функцию conditional:

Теперь, используя теорему Байеса:

То же самое!

Упражнение: Попробуйте сами! Вычислите долю молодых людей, которые являются республиканцами, двумя способами: используя функцию conditional и теорему Байеса. Посмотрите, получите ли вы то же самое.

Резюме

Вот что у нас есть на данный момент:

Теорема 1 дает нам новый способ вычисления условной вероятности с помощью конъюнкции:

$P(A|B) = \frac{P(A~\mathrm{and}~B)}{P(B)}$

Теорема 2 дает нам новый способ вычисления конъюнкции с использованием условной вероятности:

$P(A~\mathrm{and}~B) = P(B) P(A|B)$

Теорема 3, также известная как теорема Байеса, дает нам способ перейти от $P(A|B)$ к $P(B|A)$ или наоборот:

$P(A|B) = \frac{P(A) P(B|A)}{P(B)}$

Но тут вы можете спросить: "И что?" Если у нас есть все данные, мы можем вычислить любую желаемую вероятность, любую конъюнкцию или любую условную вероятность, просто подсчитав. Зачем нужны эти формулы?

И вы правы, если у нас есть все данные. Но часто мы этого не делаем, и в этом случае эти формулы могут быть очень полезны - особенно теорема Байеса.

В следующем блокноте мы увидим, как это сделать.

telegram