Numpy二项分布和泊松分布
文章目录
- 二项分布
- 泊松分布
| 函数 | 概率密度函数(PDF) | 备注 |
|---|---|---|
| binomial(n, p) | P ( k ) = ( n k ) p k ( 1 − p ) n − k P(k) = \binom{n}{k}p^k(1-p)^{n-k} P(k)=(kn)pk(1−p)n−k | 二项分布 |
| poisson([lam]) | f ( k ) = λ k e − λ k ! f(k)=\frac{\lambda^ke^{-\lambda}}{k!} f(k)=k!λke−λ | 泊松分布 |
二项分布
在我的印象中,二项分布貌似是高中学到的第一个分布,就算不是第一个,也是第一批。所以从理解上来说是不存在困难的,在 N N N次独立重复的伯努利试验中,设A在每次实验中发生的概率均为 p p p。则 N N N次试验后A发生 k k k次的概率分布,就是二项分布,记作 X ∼ B ( n , p ) X\sim B(n,p) X∼B(n,p),则
P { X = k } = ( n k ) p k ( 1 − p ) n − k P\{X=k\}=\binom{n}{k}p^k(1-p)^{n-k} P{X=k}=(kn)pk(1−p)n−k
import numpy as np
from numpy.random import binomial
import matplotlib.pyplot as pltfig = plt.figure()
ps = [0.2, 0.5, 0.7]
for i in range(3):ax = fig.add_subplot(1,3,1+i)ax.set_title(f"p={ps[i]}")for n in [50,100,200]:xs = binomial(n, ps[i], size=10000)ax.hist(xs, bins=100, alpha=0.6, label=f"n={n}")plt.legend()plt.show()
效果如图所示

可见随着p越来越大, X X X发生的概率越来越趋近于 n n n。
泊松分布
如果假定在有限时间 ( 0 , 1 ) (0,1) (0,1)内进行 n n n次伯努利实验,那么每次伯努利实验所占用的时间为 1 n \frac{1}{n} n1,按照自然规律,一件事情肯定是时间越长越容易发生,所以在加上有限时间这个限定之后,一件事情发生的概率必然与 1 n \frac{1}{n} n1成正比,将其记作 λ n \frac\lambda n nλ,则二项分布变为
P { X = k } = ( n k ) ( λ n ) k ( 1 − λ n ) n − k P\{X=k\}=\binom{n}{k}(\frac{\lambda}{n})^k(1-\frac{\lambda}{n})^{n-k} P{X=k}=(kn)(nλ)k(1−nλ)n−k
如果这个时间差 1 n \frac1n n1非常小,以至于伯努利事件变得近似连续,则有
lim n → ∞ P { X = k } = lim n → ∞ ( n k ) ( λ n ) k ( 1 − λ n ) n − k \lim_{n\to\infty} P\{X=k\}=\lim_{n\to\infty}\binom{n}{k}(\frac{\lambda}{n})^k(1-\frac{\lambda}{n})^{n-k} n→∞limP{X=k}=n→∞lim(kn)(nλ)k(1−nλ)n−k
其中
lim n → ∞ ( n k ) ( λ n ) k = λ k k ! \lim_{n\to\infty}\binom{n}{k}(\frac{\lambda}{n})^k=\frac{\lambda^k}{k!} n→∞lim(kn)(nλ)k=k!λk
而后面有一项更是传说中的重要极限
lim n → ∞ ( 1 − λ n ) n = e − λ \lim_{n\to\infty}(1-\frac{\lambda}{n})^n=e^{-\lambda} n→∞lim(1−nλ)n=e−λ
综上就得到了一个新的分布
P ( x = k ) = e − λ λ k k ! P(x=k)=\frac{e^{-\lambda}\lambda^k}{k!} P(x=k)=k!e−λλk
此即泊松分布,表示某个随机事件在连续时间内发生的概率,其中 λ n \frac\lambda n nλ表示单位时间内某件事发生的概率。
from numpy.random import poissonfor lam in [5, 10, 25]:xs = poisson(lam, size=10000)plt.hist(xs, 50, range=(0,50), alpha=0.6,label=f"lambda={lam}")plt.legend()
plt.show()
效果为

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
