📜  Python – 统计中的离散超几何分布(1)

📅  最后修改于: 2023-12-03 15:34:09.138000             🧑  作者: Mango

Python – 统计中的离散超几何分布

简介

离散超几何分布(Discrete Hypergeometric Distribution)是离散概率分布的一种,它描述了在有限个物体(例如扑克牌)中,抽取部分物体形成一个新集合的过程中,不同种类物体的数量和抽取的数量确定时,新集合中某一种类的物体数量的分布。

算法

根据超几何分布的定义,可以得到如下的概率质量函数:

$$P(X = k) = \frac{\binom{N_1}{k} \binom{N_2}{n-k}}{\binom{N}{n}}$$ 其中:

  • $N$:抽取的总数
  • $N_1$:总共有多少个成功物体
  • $N_2$:总共有多少个失败物体
  • $n$:样本数量
  • $k$:样本中成功物体的数量

在Python中,可以使用SciPy库的hypergeom函数实现该分布的计算。其用法如下:

from scipy.stats import hypergeom

M = N_1 + N_2
rv = hypergeom(M, N_1, n)
rv.pmf(k)

其中M为总共有多少个物体(成功和失败物体的总和),rvhypergeom函数返回的离散超几何分布对象,rv.pmf(k)即为求解在样本中成功物体数量为k时的概率。

示例

下面是一个简单的Python程序,用于演示如何使用SciPy库计算离散超几何分布:

from scipy.stats import hypergeom

# 设置参数
N_1 = 5
N_2 = 10
n = 7
k = 3

# 根据参数计算概率
M = N_1 + N_2
rv = hypergeom(M, N_1, n)
p = rv.pmf(k)

# 输出结果
print("物体总数:", M)
print("成功物体数量:", N_1)
print("失败物体数量:", N_2)
print("样本数量:", n)
print("样本中成功物体数量:", k)
print("在样本中成功物体数量为{}的概率为:{:.2f}".format(k, p))

在运行该程序时,会输出如下结果:

物体总数: 15
成功物体数量: 5
失败物体数量: 10
样本数量: 7
样本中成功物体数量: 3
在样本中成功物体数量为3的概率为:0.26

说明在从总共15个物体中,抽取7个物体样本时,成功物体数量为5的物体有5个,失败物体数量为10的物体有10个。在样本中,成功物体数量为3的概率为0.26。