#include <boost/math/distributions/poisson.hpp>
namespace boost { namespace math { template <class RealType = double, class Policy = policies::policy<> > class poisson_distribution; typedef poisson_distribution<> poisson; template <class RealType, class Policy> class poisson_distribution { public: typedef RealType value_type; typedef Policy policy_type; BOOST_MATH_GPU_ENABLED poisson_distribution(RealType mean = 1); // Constructor. BOOST_MATH_GPU_ENABLED RealType mean()const; // Accessor. } }} // namespaces boost::math
泊松分布是一个众所周知的统计离散分布。它表示在固定时间段内(假定这些事件以已知的平均速率 λ(事件/时间)发生,并且与上次事件发生后的时间无关)发生一定数量的事件(或失败、到达、发生…)的概率。
该分布由 Siméon-Denis Poisson(1781-1840)发现。
它具有概率质量函数
对于 k 个事件,预期事件数为 λ。
下图说明了 PDF 如何随参数 λ 变化。
![]() |
注意 |
|---|---|
|
泊松分布是一个离散分布:内部,像 默认情况下,分位数函数将返回一个向外舍入的整数结果。也就是说,较低的分位数(概率小于 0.5)向下舍入,而较高的分位数(概率大于 0.5)向上舍入。这种行为确保如果您请求 X% 的分位数,那么中心区域将至少包含请求的覆盖范围,而尾部最多包含请求的覆盖范围。 此行为可以通过策略进行更改,以使分位数函数以不同的方式舍入,甚至返回实值结果。强烈建议您在使用泊松分布的分位数函数之前,阅读教程理解离散分布的分位数。参考文档离散分位数策略描述了如何更改这些分布的舍入策略。 |
BOOST_MATH_GPU_ENABLED poisson_distribution(RealType mean = 1);
构造一个均值为mean的泊松分布。
BOOST_MATH_GPU_ENABLED RealType mean()const;
返回此分布的均值。
所有通常的非成员访问器函数,它们对所有分布都是通用的,都受支持:累积分布函数、概率密度函数、分位数、危险函数、累积危险函数、__logcdf、__logpdf、均值、中位数、众数、方差、标准差、偏度、峰度、超额峰度、范围和支撑集。对于此分布,所有非成员访问器函数均标记为BOOST_MATH_GPU_ENABLED,并且可以在主机和设备上运行。
随机变量的定义域为 [0, ∞]。
在此分布中,logpdf 的实现经过了专门优化,以提高数值精度。
泊松分布是根据不完全伽马函数 gamma_p 和 gamma_q 实现的,因此应具有较低的错误率:但有关更多信息,请参阅这些函数的文档。分位数及其补集使用逆伽马函数,因此可能精度略低:这是因为逆伽马函数使用容差较低的迭代方法实现,以避免过多的计算。
下表中的 λ 是分布的均值,k 是随机变量,p 是概率,q = 1-p。
|
函数 |
实现说明 |
|---|---|
|
|
使用关系:pdf = e-λ λk / k! |
|
logpdf |
log(pdf) = -lgamma(k+1) + k*log(λ) - λ,如果 k > 0 且 λ > 0 |
|
cdf |
使用关系:p = Γ(k+1, λ) / k! = gamma_q(k+1, λ) |
|
CDF 补集 |
使用关系:q = gamma_p(k+1, λ) |
|
分位数 |
使用关系:k = gamma_q_inva(λ, p) - 1 |
|
从补集中计算分位数 |
使用关系:k = gamma_p_inva(λ, q) - 1 |
|
均值 |
λ |
|
模式 |
floor (λ) 或 ⌊λ⌋ |
|
偏度 |
1/√λ |
|
峰度 |
3 + 1/λ |
|
超额峰度 |
1/λ |