Как использовать биномиальное распределение в Python


Биномиальное распределение является одним из наиболее часто используемых распределений в статистике. Он описывает вероятность получения k успехов в n биномиальных экспериментах.

Если случайная величина X подчиняется биномиальному распределению, то вероятность того, что X = k успехов, можно найти по следующей формуле:

P(X=k) = n C k * p k * (1-p) nk

куда:

  • n: количество испытаний
  • k: количество успехов
  • p: вероятность успеха в данном испытании
  • n C k : количество способов добиться k успехов в n испытаниях.

В этом руководстве объясняется, как использовать биномиальное распределение в Python.

Как сгенерировать биномиальное распределение

Вы можете сгенерировать массив значений, которые следуют биномиальному распределению, используя функцию random.binomial из библиотеки numpy:

from numpy import random

#generate an array of 10 values that follow a binomial distribution
random.binomial(n=10, p=.25, size=10)

array([5, 2, 1, 3, 3, 3, 2, 2, 1, 4])

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

Как рассчитать вероятности с помощью биномиального распределения

Вы также можете ответить на вопросы о биномиальных вероятностях, используя функцию binom из библиотеки scipy.

Вопрос 1: Натан выполняет 60% штрафных бросков. Если он выполнит 12 штрафных бросков, какова вероятность того, что он сделает ровно 10?

from scipy.stats import binom

#calculate binomial probability
binom.pmf(k= 10 , n= 12 , p= 0.6 )

0.0639

Вероятность того, что Натан сделает ровно 10 штрафных бросков, равна 0,0639 .

Вопрос 2: Марти подбрасывает правильную монету 5 раз. Какова вероятность того, что монета выпадет орлом 2 раза или меньше?

from scipy.stats import binom

#calculate binomial probability
binom.cdf(k= 2 , n= 5 , p= 0.5 )

0.5

Вероятность того, что монета выпадет орлом 2 раза или менее, равна 0,5 .

Вопрос 3: Известно, что 70% людей поддерживают тот или иной закон. Если наугад выбрать 10 человек, какова вероятность того, что от 4 до 6 из них поддержат закон?

from scipy.stats import binom

#calculate binomial probability
binom.cdf(k= 6 , n= 10 , p= 0.7 ) - binom.cdf(k= 3 , n= 10 , p= 0.7 )

0.3398

Вероятность того, что от 4 до 6 случайно выбранных лиц поддержат закон, равна 0,3398 .

Как визуализировать биномиальное распределение

Вы можете визуализировать биномиальное распределение в Python, используя библиотеки seaborn и matplotlib :

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

x = random.binomial(n= 10 , p= 0.5 , size= 1000 )

sns.distplot(x, hist= True , kde= False )

plt.show()

Ось x описывает количество успешных результатов в течение 10 испытаний, а ось y показывает, сколько раз каждое количество успешных результатов произошло в течение 1000 экспериментов.