Рубрики
Без рубрики

Условная вероятность с Python: концепции, таблицы и код

Обзор Этот пост – глава 6 в продолжении моего освещения науки о данных от SCRATC … Теги с Python, наукой данных, машинным обучением.

Наука данных с нуля (23 частью серии)

Обзор

Этот пост – глава 6 в продолжении моего покрытия Наука данных с нуля Джоэл Грус . Мы будем работать на пути к пониманию условной вероятности путем понимания предшествующих концепций, таких как маргинальные и совместные вероятности.

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

Испытание

Первая задача в этом разделе отличается между Два Условные вероятностные выписки.

Вот установка. У нас есть семья с двумя (неизвестными) детьми с двумя допущениями. Во-первых, каждый ребенок одинаково может быть мальчиком или девушкой. Во-вторых, гендер второго ребенка – независимый пола первого ребенка.

Результат 1: Какова вероятность события «Оба дети являются девочками» (B) Условно на мероприятии «Старший ребенок – это девушка» (G)?

Вероятность для оператора составляет примерно 50% или (1/2).

Результат 2: Какова вероятность события «Оба детьми являются девочками» (B) Условно на мероприятии «По крайней мере один из детей – это девушка» (L)?

Вероятность для выписки два составляет примерно на 33% или (1/3).

Но на первый взгляд они выглядят похожими.

Предельные и совместные вероятности

Книга прыгает прямо к условному вероятностям, но сначала мы должны посмотреть на маргинальный и совместное вероятности. Тогда мы создадим Объединенные вероятности стол и сумма вероятности, чтобы помочь нам выяснить различия. Затем мы …| резюме с Условные вероятности Отказ

До чего-либо, нам нужно реализовать ситуацию, которую у нас есть одна из Независимость Отказ Пол одного ребенка – независимый второго ребенка.

Интуиция для этого сценария будет отличаться от зависимый ситуация. Например, если мы нарисуем две карты из колоды (без замены), вероятности разные. Вероятность рисования одного короля ♠ ♠ ️ составляет (4/52) и вероятность нанесения второго короля ♣ ️ (3/51); Вероятность второго события (второй король) является зависимый на результате первого розыгрыша.

Вернуться к двум неизвестным детям.

Можно сказать, что вероятность того, что первый ребенок, являющийся либо мальчиком, либо девушкой – 50/50. Более того, вероятность второго ребенка, которая является независимый первого, это Также 50/50. Помните, наше первое предположение в том, что Каждый ребенок одинаково может быть мальчиком или девушкой .

Давайте положим эти цифры в таблицу. Проблемы (1/2), показанные здесь, называются маргинальный вероятности (обратите внимание, как они на полях стола).

Поскольку у нас есть два пола (много как две стороны перевернутой монеты), мы можем интуитивно выяснить все Возможные результаты:

  1. Первый ребенок (мальчик), второй ребенок (мальчик)
  2. Первый ребенок (мальчик), второй ребенок (девушка)
  3. Первый ребенок (девушка), второй ребенок (мальчик)
  4. Первый ребенок (девушка), второй ребенок (девушка)

Есть 4 возможных результата Таким образом, вероятность получения любой из четырех результатов составляет (1/4). Мы можем на самом деле написать эти вероятности в середине стола, Совместные вероятности :

Рекомендействию, вероятность того, что первый ребенок, являющийся либо мальчиком, либо девочкой, составляет 50/50, достаточно просто. Вероятность второго ребенка, являющегося либо мальчиком, либо девушкой, также 50/50. При положении в стол это дало предельная вероятность Отказ

Теперь мы хотим узнать вероятность сказать: «Первый ребенок – мальчик и второй ребенок, являющийся девушкой». Это Совместная вероятность потому что это вероятность того, что первый ребенок принимает определенный пол (мальчик) И Второй ребенок принимает определенный пол (девушка).

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

Вероятность первого ребенка, являющегося мальчиком (1/2) и Второй ребенок – это девушка (1/2); Продукт каждой предельной вероятности представляет собой совместную вероятность (1/2 */4).

Это можно повторить для других трех совместных вероятностей.

Условная возможность

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

На данный момент это может быть хорошая идея, чтобы начать писать утверждения вероятности Похожие Как это выражено в математике.

Совместная вероятность является продукт каждого отдельного события (предполагая, что они являются независимыми событиями). Например, у нас могут быть два отдельных события:

  • P (1-й): 1/2
  • P (2nd): 1/2

Вот их Совместная вероятность :

  • P (1-й, 2-й)
  • P (1-й) * P (2nd)
  • (1/2 */4)

Есть отношения между Условный вероятности и совместное вероятности.

Вот их Условная вероятность :

  • P (2-й | 1-й)
  • P (1-й, 2-й)/P (1-й)

Это работает:

  • (1/4)//2 или
  • (1/4) */2

Другими словами, вероятность того, что второй ребенок – мальчик, учитывая, что первый ребенок – это мальчик, по-прежнему 50% (это подразумевает, что по отношению к условным вероятность, если события являются независимый это не отличается от одного события).

Теперь мы готовы решать два результата, поставленных в начале этого поста.

Результат 1: Какова вероятность события «Оба дети являются девочками» (B) Условно на мероприятии «Старший ребенок – это девушка» (G)?

Давайте сломаемся. Сначала мы хотим вероятность того, что «оба детями являются девочками». Мы возьмем продукт двух событий; Вероятность того, что первый ребенок – это девушка (1/2) и вероятность того, что второй ребенок – это девушка (1/2). Так для оба Ребенок, чтобы быть девочками, 1/2 */4

  • P (1-й, 2-й)/4

Во-вторых, мы хотим, чтобы это было Учитывая, что «Пожилой ребенок – это девушка».

  • P (1-й)/2

Условная вероятность :

  • P (1-й, 2-й)/P (1-й)
  • (1/4)/(1/2) = (1/4) * (2/1) = (2/4) = 1/2 или грубо 50%

Теперь давайте сломаем второй результат:

Результат 2: Какова вероятность события «Оба детьми являются девочками» (B) Условно на мероприятии «По крайней мере один из детей – это девушка» (L)?

Опять же, мы начинаем с «Оба детей – это девочки»:

  • P (1-й, 2-й)/4

Тогда у нас есть «При условии, что хотя бы один из детей – это девушка». Мы ссылаемся на Объединенная вероятностная таблица Отказ Мы видим, что при попытке выяснить вероятность того, что «по крайней мере один из детей – это девушка», мы исключаем сценарий, где оба Дети мальчики. Это на самом деле Комплимент к по крайней мере один ребенок – это девушка Отказ Оставшиеся 3 из 4 вероятностей, соответствуют условию.

Вероятность, по меньшей мере, одного детей, являющаяся девушкой:

  • (1/4) + (1/4) +/4

Так:

  • P (1-й, 2-й)/P («По крайней мере один ребенок – это девушка»)
  • (1/4)/(3/4) = (1/4) * (4/3) = (4/12) = 1/3 или грубо 33%

Ключ убрать

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

  • P (E, F) (E) * ПФ)

Их условный Вероятность – это Совместная вероятность разделен на условное (то есть, p (f)).

  • P (E | F) (e, f)/p (f)

И так для наших двух проблемных сценариев, у нас есть:

Вызов 1:

  • Б, что обе дети – девочки
  • Г, что старше Дети – это девушка

Это может быть указано как: (B, G)/P (G)

Вызов 2:

  • Б, что обе дети – девочки
  • Я это хотя бы один Дети – это девушка

Это может быть указано как: (B, L)/P (L)

Код Python

Теперь, когда у нас есть интуиция и разработала проблему на бумаге, мы можем использовать код для выражения условной вероятности:

import enum, random
class Kid(enum.Enum):
    BOY = 0
    GIRL = 1

def random_kid() -> Kid:
    return random.choice([Kid.BOY, Kid.GIRL])

both_girls = 0
older_girl = 0
either_girl = 0
random.seed(0)
for _ in range(10000):
    younger = random_kid()
    older = random_kid()
    if older == Kid.GIRL:
        older_girl += 1
    if older == Kid.GIRL and younger == Kid.GIRL:
        both_girls += 1
    if older == Kid.GIRL or younger == Kid.GIRL:
        either_girl += 1

print("P(both | older):", both_girls / older_girl)   # 0.5007089325501317
print("P(both | either):", both_girls / either_girl) # 0.3311897106109325

Мы видим, что код подтверждает нашу интуицию, глядя на каждый из Совместные вероятности

either_girl #7,464 / 10,000 ~ roughly 75% or 3/4 probability that there is at least one girl
both_girls  #2,472 / 10,000 ~ roughly 25% or 1/4 probability that both children are girls
older_girl  #4,937 / 10,000 ~ roughly 50% or 1/2 probability that the first child is a girl

Пробой кода

Вызов 1:

  • P (b | g) (b, g)/p (g) или более явно:
  • P (оба_girls | (оба_girls)/p (stear_girl)

Вызов 2:

  • P (b | l) (b, l)/p (l) или более явно:
  • P (оба_girls | (оба_girls)/p (либо_girl)

Условный вероятности Условный заявления в коде.

Во-первых, мы устанавливаем случайную функцию, которая назначает Random.Choice Метод назначить гендерное такое, что каждый ребенок (то есть, Kid экземпляр класса) одинаково, вероятно, будет мальчиком или девочкой Отказ Это первое предположение о нашем сценарии.

import enum, random

class Kid(enum.Enum):
    BOY = 0
    GIRL = 1

def random_kid() -> Kid:
    return random.choice([Kid.BOY, Kid.GIRL])

Далее мы создаем переменные, представляющие Совместные распределения ; Одна переменная для обеих детей, являющихся девочками ( оба_girls ), одна переменная для только Старший ребенок Будучи девушкой ( still_girl ), и один для хотя бы один Ребенок – это девушка ( IN_GIRL ).

Сначала вероятность любого одного ребенка, являющегося девушкой (1/2), соответствует нашему предположению, мы ожидаем:

older_girl  #4,937 / 10,000 ~ roughly 50% or 1/2 probability that the first child is a girl

Напомним, что когда мы возьмем Продукт каждый Ребенок – это девушка (1/2), мы можем выяснить совместную вероятность оба Ребенок – это девушка (1/4). Таким образом, мы ожидаем:

both_girls  #2,472 / 10,000 ~ roughly 25% or 1/4 probability that both children are girls

Наконец, вспомните, что если мы пытаемся рассчитать, что По крайней мере, один (из двух) детей – это девушка , мы можем исключить вероятность (1/4), что оба детей – уход за мальчиками (1/4 + 1/4 +/4) (см. Таблицу выше). Таким образом, мы ожидаем:

either_girl #7,464 / 10,000 ~ roughly 75% or 3/4 probability that there is at least one girl

Чтобы прибыть на числа, которые мы видим выше, мы создаем 10000 Симуляции Сценариев, где 1-й ребенок и 2-й ребенок (см. Таблицу выше), являются случайным образом пола в каждом сценарии и условно фильтруют через код, чтобы увидеть, являются ли определенные результаты Правда Отказ

random.seed(0)

for _ in range(10000):
    younger = random_kid()
    older = random_kid()
    if older == Kid.GIRL:
        older_girl += 1
    if older == Kid.GIRL and younger == Kid.GIRL:
        both_girls += 1
    if older == Kid.GIRL or younger == Kid.GIRL:
        either_girl += 1

Это моделирование дает совместные вероятности, которые затем используются для поиска условных вероятностей двух результатов выше:

print("P(both | older):", both_girls / older_girl)   # 0.5007089325501317
print("P(both | either):", both_girls / either_girl) # 0.3311897106109325

Для получения дополнительной информации о науке о данных, машинном обучении, R, Python, SQL и многое другое, Найди меня в Twitter Отказ

Наука данных с нуля (23 частью серии)

Оригинал: “https://dev.to/paulapivat/conditional-probability-with-python-concepts-tables-code-3e4k”