Binomial Examples

import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
sp.special.factorial(52) # https://czep.net/weblog/52cards.html
8.065817517094388e+67
sp.special.comb(24, 2)
276.0
B = sp.stats.binom(24, 0.1) # Binomial(K = 24, p = 0.1)
B.mean()
2.4000000000000004
B.rvs(size = 10) # random variables
array([3, 2, 1, 2, 3, 3, 2, 5, 5, 3])
S = np.arange(25) # K + 1
B.pmf(S) # density function (probability mass function)
array([7.97664431e-02, 2.12710515e-01, 2.71796769e-01, 2.21464034e-01,
       1.29187353e-01, 5.74166014e-02, 2.02021375e-02, 5.77203929e-03,
       1.36284261e-03, 2.69203479e-04, 4.48672465e-05, 6.34486314e-06,
       7.63733526e-07, 7.83316437e-08, 6.83847683e-09, 5.06553839e-10,
       3.16596149e-11, 1.65540470e-12, 7.15298328e-14, 2.50981870e-15,
       6.97171860e-17, 1.47549600e-18, 2.23560000e-20, 2.16000000e-22,
       1.00000000e-24])
np.sum(B.pmf(S))
1.0
B = sp.stats.binom(24, 0.5);
plt.scatter(S, B.pmf(S));

B.pmf(S)
array([5.96046448e-08, 1.43051147e-06, 1.64508820e-05, 1.20639801e-04,
       6.33358955e-04, 2.53343582e-03, 8.02254677e-03, 2.06294060e-02,
       4.38374877e-02, 7.79333115e-02, 1.16899967e-01, 1.48781776e-01,
       1.61180258e-01, 1.48781776e-01, 1.16899967e-01, 7.79333115e-02,
       4.38374877e-02, 2.06294060e-02, 8.02254677e-03, 2.53343582e-03,
       6.33358955e-04, 1.20639801e-04, 1.64508820e-05, 1.43051147e-06,
       5.96046448e-08])

From Binomial webpage

# 1
X = sp.stats.binom(10, 0.95)
X.pmf(10) # density function
0.5987369392383787
0.95 ** 10
0.5987369392383787
X.pmf(8)
0.07463479852001967
# 2
X = sp.stats.binom(50, 0.1)
# 2a
X.pmf(5)
0.1849246008952154
X.pmf(np.arange(4, 7))
array([0.1809045 , 0.1849246 , 0.15410383])
# 2b
np.sum(X.pmf(np.arange(3, 51)))
0.8882712436536537
S = np.arange(51)
ind = S >= 3
np.sum(X.pmf(S[ind]))
0.8882712436536537
# 2c
# P[X < 10 or X > 40]
ind = (S < 10) | (S > 40)
np.sum(X.pmf(S[ind]))
0.9754620642954095
1 - np.sum(X.pmf(np.arange(10, 41)))
0.9754620642954085
# 3
X = sp.stats.binom(10, 0.7)
# 3a
X.pmf(7)
0.26682793200000005
# 3b
np.sum(X.pmf(np.arange(8, 11)))
0.3827827864000003
1 - np.sum(X.pmf(np.arange(8)))
0.38278278639999974
S = np.arange(11)
ind = S >= 8
np.sum(X.pmf(S[ind]))
0.3827827864000003
ind = S < 8
1 - np.sum(X.pmf(S[ind]))
0.38278278639999974