Биномиальное распределение является одним из наиболее часто используемых распределений в статистике. Он описывает вероятность получения 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 экспериментов.