import numpy as np
import matplotlib.pyplot as plt
import scipy as spBinomial Examples
sp.special.factorial(52) # https://czep.net/weblog/52cards.html8.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 variablesarray([3, 2, 1, 2, 3, 3, 2, 5, 5, 3])
S = np.arange(25) # K + 1B.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 function0.5987369392383787
0.95 ** 100.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