伯努利二项分布的相对高概率与实际的低概率

伯努利二项分布的相对高概率与实际的低概率

计算公式

P ( X = k ) = C n k p k ( 1 − p ) n − k P(X=k)=C_{n}^{k} p^k(1-p)^{n-k} P(X=k)=Cnkpk(1p)nk

n n n 表示试验次数, p p p 表示事件出现的概率, k k k 表示事件出现的次数

简单理解就是,盒子里有total个小球,有 p ∗ t o t a l p*total ptotal个红球, ( 1 − p ) ∗ t o t a l (1-p)*total (1p)total个黑球,每次有放回地取1个小球,每次取到红球的概率为 p p p

给定 p p p n n n

P ( X = 0 ) + P ( X = 1 ) + P ( X = 2 ) + . . . + P ( X = n ) = 1 P(X=0)+P(X=1)+P(X=2)+...+P(X=n)=1 P(X=0)+P(X=1)+P(X=2)+...+P(X=n)=1

n = 10 , p = 0.3 n=10, p=0.3 n=10,p=0.3, P P P 关于 X X X的函数

伯努利二项分布的相对高概率与实际的低概率_第1张图片

X = 3 X=3 X=3 的概率最大, 但是不足0.3

n = 100 , p = 0.3 n=100, p=0.3 n=100,p=0.3 时, P P P 关于 X X X 的函数

伯努利二项分布的相对高概率与实际的低概率_第2张图片

X = 30 X=30 X=30 的概率最大,但是不足0.1

n = 100 , p = 0.03 n=100, p=0.03 n=100,p=0.03 时, P P P 关于 X X X 的函数

伯努利二项分布的相对高概率与实际的低概率_第3张图片

X = 3 X=3 X=3 的概率最大,但是不足0.3

n = 100 , p = 0.99 n=100, p=0.99 n=100,p=0.99 时, P P P 关于 X X X 的函数

伯努利二项分布的相对高概率与实际的低概率_第4张图片

X = 99 X=99 X=99 的概率最大,但是不足0.4

n = 1000 , p = 0.99 n=1000, p=0.99 n=1000,p=0.99 时, P P P 关于 X X X 的函数

伯努利二项分布的相对高概率与实际的低概率_第5张图片

X = 990 X=990 X=990 的概率最大,但是不足0.15

由此,我们可以直接假定,小球总数就是 n n n,红球的数量为 n ∗ p n*p np,那么 n n n次试验中出现 n ∗ p n*p np 次红球的概率最高,即 P ( X = n ∗ p ) P(X=n*p) P(X=np) 最大,但是其数值大小并没有想象中的0.8、0.9那么大,但是可以看到

P ( . . . , X = n ∗ p − 3 , X = n ∗ p − 2 , X = n ∗ p − 1 , X = n ∗ p , X = n ∗ p + 1 , X = n ∗ p + 2 , X = n ∗ p + 3 , . . . ) P(...,X=n*p-3,X=n*p-2,X=n*p-1,X=n*p,X=n*p+1,X=n*p+2,X=n*p+3,...) P(...,X=np3,X=np2,X=np1,X=np,X=np+1,X=np+2,X=np+3,...)

的概率接近于 1 1 1

综上,给定 p p p n n n

P ( X = n ∗ p ) = C n n ∗ p p n ∗ p ( 1 − p ) n − n ∗ p P(X=n*p)=C_{n}^{n*p} p^{n*p}(1-p)^{n-n*p} P(X=np)=Cnnppnp(1p)nnp

是所有 X = k X=k X=k 中最大的值,但是这个值本身的大小其实不大

给定 n n n ,但是 p p p 可变

这种情况下可以理解为,

n = 100 n=100 n=100 个小球,有 0 0 0 个红球, 取 100 100 100 次, 100 100 100 次中只有 0 0 0 个红球的概率;

n = 100 n=100 n=100 个小球,有 1 1 1 个红球, 取 100 100 100 次, 100 100 100 次中只有 1 1 1 个红球的概率;

n = 100 n=100 n=100 个小球,有 2 2 2 个红球, 取 100 100 100 次, 100 100 100 次中只有 2 2 2 个红球的概率;

n = 100 n=100 n=100 个小球,有 3 3 3 个红球, 取 100 100 100 次, 100 100 100 次中只有 3 3 3 个红球的概率;

n = 100 n=100 n=100 个小球,有 4 4 4 个红球, 取 100 100 100 次, 100 100 100 次中只有 4 4 4 个红球的概率;

n = 100 n=100 n=100 个小球,有 99 99 99 个红球, 取 100 100 100 次, 100 100 100 次中只有 99 99 99 个红球的概率;

n = 100 n=100 n=100 个小球,有 100 100 100 个红球, 取 100 100 100 次, 100 100 100 次中只有 100 100 100 个红球的概率;

X X X 的取值范围为 [ 0 , 100 ] [0,100] [0,100]

如果记红球的个数为 k k k,那么上述式子就可以改写为:

P ( X = k ) = C n k ( k n ) k ( 1 − k n ) n − k P(X=k)=C_{n}^{k} ({\frac{k}{n}})^{k} (1-{\frac{k}{n}})^{n-k} P(X=k)=Cnk(nk)k(1nk)nk

如果 n = 100 n=100 n=100, 得到如下函数图像:

伯努利二项分布的相对高概率与实际的低概率_第6张图片

除了 X = 0 X=0 X=0 X = 100 X=100 X=100 处, P = 1 P=1 P=1,其余的值都很小,

比如 X = 1 X=1 X=1 或者 X = 99 X=99 X=99 处, P = 0.3697 P=0.3697 P=0.3697

比如 X = 2 X=2 X=2 或者 X = 98 X=98 X=98 处, P = 0.2734 P=0.2734 P=0.2734

比如 X = 3 X=3 X=3 或者 X = 97 X=97 X=97 处, P = 0.2274 P=0.2274 P=0.2274

而当 X = 50 X=50 X=50 的时候, P = 0.0795 P=0.0795 P=0.0795

结论

我们可以得到这样一个形象的说明,假设有 100 100 100 个人给你投票,每个人投给你的概率为 0.99 0.99 0.99,那么最后收到 100 100 100 张票,虽然获得 99 99 99 张投票的概率最大,但是其数值只有 0.3697 0.3697 0.3697,但是获得的票数超过 90 90 90 的概率却大于 0.9999 0.9999 0.9999。如果每个人投给你的概率为 0.5 0.5 0.5,那么你获得50张选票的概率只有 0.0795 0.0795 0.0795,但是你的票数在 [ 40 , 60 ] [40,60] [40,60] 之间的概率为 0.9647 0.9647 0.9647。主要原因在于刚好 50 50 50 票的要求太苛刻,因为有 101 ( 0 − 100 ) 101(0-100) 101(0100) 种票选结果。

作图代码

给定 n n n p p p

from scipy.special import comb
import numpy as np
import matplotlib.pyplot as plt

count = 100
p_n = 50
p = p_n / count
q = 1 - p

n = 100
ps = [i for i in range(n + 1)]
y = []
s = 0
for i in ps:
    t = comb(n, i) * np.power(p, i) * np.power(q, n - i)
    if i == n * p:
        print(t)
    s += t
    y.append(t)

# a=0
# for i in range(21):
#     a+=y[40+i]

# print('a=' ,a)
fig, ax = plt.subplots(figsize=(4, 2.5))
print(s)
ax.plot(ps, y)
name = 'n = ' + str(n) + '\np = ' + str(p)
ax.set_xlabel('X', fontsize=12)
ax.set_ylabel('P', fontsize=12)
ax.set_title(name)
ax.grid()
figsave = 'n_' + str(n) + '_p_' + str(p) + '.png'
plt.tight_layout()
plt.savefig(figsave)
plt.close()

给定 n n n

from scipy.special import comb
import numpy as np
import matplotlib.pyplot as plt

n = 100

ps = [i for i in range(n + 1)]
y = []
s = 0
for p in ps:

    t = comb(n, p) * np.power(p / n, p) * np.power((1 - p / n), n - p)
    # if p==1 or p==198:
    #     print(t)
    s += t
    y.append(t)

fig, ax = plt.subplots(figsize=(4, 2.5))

print(s)

ax.plot(ps, y)
ax.set_xlabel('X = k', fontsize=12)
ax.set_ylabel('P', fontsize=12)
ax.grid()
ax.set_title('n = ' + str(n), fontsize=12)
plt.tight_layout()
figsave = 'n_' + str(n) + '.png'
plt.savefig(figsave)
plt.close()

你可能感兴趣的:(概率论)