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

Например, мы можем смоделировать подбрасывание правильной монеты 10 раз с биномиальным распределением, где количество попыток установлено равным 10, а вероятность успеха установлена ​​равной 0,5. В этом случае распределение покажет нам, какова вероятность того, что выпадет ноль решек, 1 решка, 2 решки и так далее.

Характеристики:-

  • У каждой тропы есть только два возможных исхода — успех и неудача.
  • Общее количество трасс фиксировано.
  • Вероятность успеха и неудачи остается неизменной на всех трассах.
  • Трассы независимы друг от друга.

В приведенном выше: —
p = вероятность успеха
1-p = вероятность отказа
k = количество успехов
n-k = количество ошибок

fair_coin_flips = stats.binom.rvs(n=10,        # Number of flips
                                  p=0.5,       # Success probability
                                  size=10000)  # Number of trials

print( pd.crosstab(index="counts", columns= fair_coin_flips))

pd.DataFrame(fair_coin_flips).hist(range=(-0.5,10.5), bins=11);

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

biased_coin_flips = stats.binom.rvs(n=10,      # Number of flips per trial
                                  p=1,       # Success probability
                                  size=10000)  # Number of trials

# Print table of counts
print( pd.crosstab(index="counts", columns= biased_coin_flips))

# Plot histogram
pd.DataFrame(biased_coin_flips).hist(range=(-0.5,10.5), bins=11);

Функция cdf(кумулятивная функция распределения) позволяет нам проверить вероятность достижения определенного количества успехов в определенном диапазоне.

stats.binom.cdf(k=5,        # Probability of k = 5 successes or less
                n=10,       # With 10 flips
                p=0.8)      # And success probability 0.8

Выход []: 0,03279349759999996

1 - stats.binom.cdf(k=8,        # Probability of k = 9 successes or more
                    n=10,       # With 10 flips
                    p=0.8)      # And success probability 0.8

Выход[]:0,37580963840000003

Для непрерывных функций плотности вероятности вы используете pdf() для проверки плотности вероятности при заданном значении x. Для дискретных распределений, таких как биномиальное, используйте stats.distribution.pmf() (функция массы вероятности), чтобы проверить массу (долю наблюдений) при заданном числе успехов k:

stats.binom.pmf(k=5,        # Probability of k = 5 successes
                n=10,       # With 10 flips
                p=0.5)      # And success probability 0.5

Выход[]:0.24609375000000025

stats.binom.pmf(k=8,        # Probability of k = 8 successes
                n=10,       # With 10 flips
                p=0.8)      # And success probability 0.8

Выход[]:0.30198988799999998

Ссылки на некоторые другие блоги: —

Равномерное распределение
Нормальное распределение
Центральная предельная теорема
10 альтернатив облачному блокноту Jupyter!!
Система счисления в Python