scipy.stats.nhypergeom#

scipy.stats.nhypergeom = <scipy.stats._discrete_distns.nhypergeom_gen object>[source]#

负超几何离散随机变量。

考虑一个包含 \(M\) 个球的盒子:\(n\) 个红色和 \(M-n\) 个蓝色。我们从盒子中随机抽取球,一次一个,放回抽出的球,直到我们抽取了 \(r\) 个蓝色球。nhypergeom 是我们抽到的 \(k\) 个红球的分布。

作为 rv_discrete 类的一个实例,nhypergeom 对象从它继承了一系列通用方法(有关完整列表,请参见下文),并用此特定分布特有的详细信息对其进行补充。

另请参见

hypergeombinomnbinom

说明

表示形状参数 (Mnr) 的符号并非普遍接受。请参阅示例以明确此处使用的定义。

概率质量函数定义为

\[f(k; M, n, r) = \frac{{{k+r-1}\choose{k}}{{M-r-k}\choose{n-k}}} {{M \choose n}}\]

对于 \(k \in [0, n]\)\(n \in [0, M]\)\(r \in [0, M-n]\),且二项式系数为

\[\binom{n}{k} \equiv \frac{n!}{k! (n - k)!}.\]

它等同于在 \(k+r-1\) 个样本中观测到 \(k\) 次成功,且第 \(k+r\) 个样本为失败。前者可以建模为超几何分布。后者的概率仅仅是剩余的失败次数 \(M-n-(r-1)\) 除以剩余种群的大小 \(M-(k+r-1)\)。这种关系可表示为

\[NHG(k;M,n,r) = HG(k;M,n,k+r-1)\frac{(M-n-(r-1))}{(M-(k+r-1))}\]

其中 \(NHG\) 是负超几何分布的概率质量函数 (PMF),而 \(HG\) 是超几何分布的 PMF。

上述概率质量函数的定义采用“标准化”形式。要转换分布,请使用 loc 参数。具体来说,nhypergeom.pmf(k, M, n, r, loc)nhypergeom.pmf(k - loc, M, n, r) 严格等效。

参考

示例

>>> import numpy as np
>>> from scipy.stats import nhypergeom
>>> import matplotlib.pyplot as plt

假设我们有一个 20 只动物的集合,其中有 7 只是狗。然后,如果我们要知道在有恰好 12 只非狗动物(失败)的样本中找到给定数量的狗(成功)的概率,我们可以初始化一个冻结的分布并绘制概率质量函数

>>> M, n, r = [20, 7, 12]
>>> rv = nhypergeom(M, n, r)
>>> x = np.arange(0, n+2)
>>> pmf_dogs = rv.pmf(x)
>>> fig = plt.figure()
>>> ax = fig.add_subplot(111)
>>> ax.plot(x, pmf_dogs, 'bo')
>>> ax.vlines(x, 0, pmf_dogs, lw=2)
>>> ax.set_xlabel('# of dogs in our group with given 12 failures')
>>> ax.set_ylabel('nhypergeom PMF')
>>> plt.show()
../../_images/scipy-stats-nhypergeom-1_00_00.png

除了使用冻结分布,还可以直接使用 nhypergeom 方法。例如,要获取概率质量函数,请使用

>>> prb = nhypergeom.pmf(x, M, n, r)

并生成随机数

>>> R = nhypergeom.rvs(M, n, r, size=10)

若要验证 hypergeomnhypergeom 之间的关系,请使用

>>> from scipy.stats import hypergeom, nhypergeom
>>> M, n, r = 45, 13, 8
>>> k = 6
>>> nhypergeom.pmf(k, M, n, r)
0.06180776620271643
>>> hypergeom.pmf(k, M, n, k+r-1) * (M - n - (r-1)) / (M - (k+r-1))
0.06180776620271644

方法

rvs(M, n, r, loc=0, size=1, random_state=None)

随机变量。

pmf(k, M, n, r, loc=0)

概率质量函数。

logpmf(k, M, n, r, loc=0)

概率质量函数的对数。

cdf(k, M, n, r, loc=0)

累积分布函数。

logcdf(k, M, n, r, loc=0)

累积分布函数的对数。

sf(k, M, n, r, loc=0)

生存函数(也定义为 1 - cdf,但 sf 有时更准确)。

logsf(k, M, n, r, loc=0)

生存函数的对数。

ppf(q, M, n, r, loc=0)

百分位点函数(cdf 的反函数——百分位数)。

isf(q, M, n, r, loc=0)

逆生存函数(sf 的反函数)。

stats(M, n, r, loc=0, moments=’mv’)

均值('m')、方差('v')、偏度('s')和/或峰度('k')。

entropy(M, n, r, loc=0)

RV 的(微分)熵。

expect(func, args=(M, n, r), loc=0, lb=None, ub=None, conditional=False)

相对于分布的一个函数(一个自变量)的期望值。

median(M, n, r, loc=0)

分布的中位数。

mean(M, n, r, loc=0)

分布的均值。

var(M, n, r, loc=0)

分布的方差。

std(M, n, r, loc=0)

分布的标准差。

interval(confidence, M, n, r, loc=0)

中位数周围具有相等面积的置信区间。