泊松分布描述在给定时间间隔内发生K次事件的概率。
如果给定随机变量X服从泊松分布,那么X恰等于k次的公式为:
P(X=k) = λk * e-λ / k!
参数解释:
泊松分布需要满足下列几个条件:
泊松实验的一个例子是某医院每小时分娩的人数。例如,假设某家医院每小时平均分娩10例。这是一个泊松实验,因为它有以下四个性质:
实验中成功的次数是可以计算的-我们可以计算出生的次数。
在特定的时间间隔内发生的平均成功次数是已知的——已知平均每小时发生10次分娩。
每个结果都是独立的——一个母亲在给定的一小时内生产的概率是独立的
成功发生的概率与时间间隔的大小成正比——间隔的时间越长,出生的概率就越高。
下面解释Python计算泊松分布的几个示例。
使用poisson.rvs(mu, size) 函数生成服从泊松分布数据,给定均值和样本大小:
from scipy.stats import poisson
data = poisson.rvs(mu=3, size=10)
print(data)
# array([2, 2, 2, 0, 7, 2, 1, 2, 5, 5])
使用poisson.pmf(k, mu) 和 poisson.cdf(k, mu)函数计算泊松分布相关的概率.
某商店每天平均有三位顾客,某天恰好有5人的概率:
from scipy.stats import poisson
poisson.pmf(k=5, mu=3)
# 结果为 0.100819
某商店平均每天卖7个足球,那么某天卖出足球数量小于5的概率:
from scipy.stats import poisson
# 计算累积概率
poisson.cdf(k=4, mu=7)
# 结果为 0.172992
某商店平均每天卖15个罐头,则某天卖出罐头超过20听的概率:
from scipy.stats import poisson
# 1减去累积概率
1-poisson.cdf(k=20, mu=15)
# 结果为 0.082971
可以通过matplotlib.pyplot画泊松分布直方图:
from scipy.stats import poisson
import matplotlib.pyplot as plt
# 生成10000样本大小的泊松分布数据集
x = poisson.rvs(mu=3, size=10000)
# 创建泊松分布直方图
plt.hist(x, density=True, edgecolor='black')
plt.show()