Научитесь писать простую функцию Python, которая вычисляет условные вероятности, используя такие обозначения, как p(exam=1 | study=1)

Фон

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

К концу этой статьи вы будете оснащены короткой функцией Python, которая может применять условную вероятность непосредственно к любой панде DataFrame и возвращать результат.

Резюме

Условная вероятность — это вероятность того, что событие произойдет при условии, что другое событие уже произошло. Обозначение 𝑃(𝐴∣𝐵) можно понимать как вероятность (P) события A при условии (|), что событие B уже произошло.

Чтобы расширить этот шаг вперед, обозначение 𝑃(𝐴∣𝐵,𝐶) означает вероятность события A при условии, что и событие B, и событие C уже произошли.

Пример

Все мы знаем, что если дважды подбросить правильную монету, вероятность выпадения двух решек равна 0,25, потому что вероятность первого события (подбрасывание первой монеты и продвижение вперед) равна 0,5, умноженная на вероятность второго события (подбрасывание второй монеты). и получение головы), тоже 0,5 т.е. 0,5 х 0,5 = 0,25.

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

Однако не все события независимы и это лучше всего пояснить на примере…

Вот таблица синтетических данных, представляющих фиктивную выборку из 800 человек, где наблюдалось и фиксировалось, учатся они или нет, сдают ли они экзамен или нет…

Вероятность сдачи экзамена (exam=1) следующая:

А если мы зададим следующий вопрос:

Случайным образом выбирается один из испытуемых и выясняется, что он учился (исследование=1). Какова вероятность того, что они сдали экзамен (exam=1)?

Эти вероятности не являются независимыми, как подбрасывание монеты, потому что мы уже знаем, что выбранный предмет изучался. Ответ на этот вопрос можно выразить так -

то есть какова вероятность того, что экзамен = 1 при условии, что исследование = 1?

Есть два способа рассчитать этот результат: интуитивный и вероятностный.

Интуитивный путь

Легко увидеть, что обучающихся 400 человек (341 + 59), если найти в сводной таблице строки, где учеба = 1 -

Если мы уже выбрали исследователя, он должен быть из этой части выборки. Из этих 400 легко заметить, что 59 сдают экзамен, так что…

Математический путь

Формула расчета условной вероятности выглядит следующим образом:

Примечание — обозначение P(A|B) может быть прочитано как — условная вероятность или событие A «при заданном» событии B.

Лично я нахожу это менее интуитивным, чем первое решение, поскольку я могу легко визуализировать то, что происходит внутри DataFrame значений, но у этого способа есть большое преимущество. Если у вас есть доступ только к вероятностям, а не ко всем базовым данным, то «Интуитивный способ» не подходит.

Рассмотрим следующее, которое представляет собой то же резюме, но с вероятностями вместо количества…

Теперь p(экзамен=1 | исследование=1) можно рассчитать следующим образом:

Функциональное решение Python

Учитывая объяснение условных вероятностей, теперь цель состоит в том, чтобы разработать функцию Python, которая может снять все проблемы и просто обработать их для любых панд DataFrame.

Первое, что нам нужно, это некоторые тестовые данные. Я создал синтетический набор данных, используя свой класс BinaryDataGenerator. Если вам нужен полный исходный код, перейдите к этой статье…



Версия 1: Основная функция

Самая базовая версия функции, реализованная с помощью обещанных «3 строчек кода», выглядит следующим образом —

0.1475

Версия 2: базовая функция плюс вывод LaTeX

Однако вскоре мне наскучили все операторы print, чтобы показать результаты, что привело ко второй версии, которая может опционально выводить LaTeX-представление вычисления...

Версия 3: Расширенная функция

Зайдя так далеко, я действительно хотел окончательную версию, в которой я мог бы просто сказать P(экзамен=1 | исследование=1) напрямую и получить результат, но я также хотел сохранить outcome и events в качестве необязательных параметров, чтобы я мог выбрать метод для использовать ...

Заключение

Условные вероятности очень полезны в ряде статистических решений и решений для машинного обучения, но не существует простого, удобочитаемого и воспроизводимого способа их вычисления с помощью pandas DataFrame.

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

Если вам понравилась эта статья, вы можете получить неограниченный доступ к тысячам других, став участником Medium всего за 5 долларов в месяц, нажав на мою реферальную ссылку (я получу часть сборов, если вы зарегистрируетесь по этой ссылке без каких-либо дополнительных затрат). стоимость для вас).



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

Беглый взгляд на мои предыдущие статьи.

Загружаю мою бесплатную систему принятия стратегических решений на основе данных.

Посещение моего сайта по науке о данных — The Data Blog.