scipy.stats.hypergeom#
- scipy.stats.hypergeom = <scipy.stats._discrete_distns.hypergeom_gen object>[源代码]#
一个超几何离散随机变量。
超几何分布模拟从一个容器中抽取物体。M 是物体的总数,n 是 I 类物体的总数。随机变量表示从总体中不放回抽取的 N 个 I 类物体数量。
作为
rv_discrete
类的实例,hypergeom
对象从它那里继承了一组通用方法(有关完整列表,请参见下文),并用适用于此特定分布的详细信息对它们进行了补充。另请参见
备注
表示形状参数的符号 (M、n 和 N) 未得到普遍认可。有关此处所用定义的说明,请参见示例。
概率质量函数的定义为:
\[p(k, M, n, N) = \frac{\binom{n}{k} \binom{M - n}{N - k}} {\binom{M}{N}}\]对于 \(k \in [\max(0, N - M + n), \min(n, N)]\),其中的二项式系数定义如下:
\[\binom{n}{k} \equiv \frac{n!}{k! (n - k)!}.\]上述概率密度函数定义为“标准化”形式。要调整分布,请使用
loc
参数。具体来说,hypergeom.pmf(k, M, n, N, loc)
与hypergeom.pmf(k - loc, M, n, N)
等同。示例
>>> import numpy as np >>> from scipy.stats import hypergeom >>> import matplotlib.pyplot as plt
假设我们有 20 只动物,其中 7 只狗。然后,如果我们想知道在从 20 只动物中随机选择 12 只时的给定数量狗的出现概率,我们可以初始化冻结分布并绘制概率质量函数
>>> [M, n, N] = [20, 7, 12] >>> rv = hypergeom(M, n, N) >>> x = np.arange(0, n+1) >>> 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 of chosen animals') >>> ax.set_ylabel('hypergeom PMF') >>> plt.show()
除了使用冻结分布,我们还可以直接使用
hypergeom
方法。例如,要获取累计分布函数,请使用:>>> prb = hypergeom.cdf(x, M, n, N)
并生成随机数
>>> R = hypergeom.rvs(M, n, N, size=10)
方法
rvs(M, n, N, loc=0, size=1, random_state=None)
随机变量。
pmf(k, M, n, N, loc=0)
概率质量函数。
logpmf(k, M, n, N, loc=0)
概率质量函数的对数。
cdf(k, M, n, N, loc=0)
累计分布函数。
logcdf(k, M, n, N, loc=0)
累计分布函数的对数。
sf(k, M, n, N, loc=0)
生存函数(也定义为
1 - cdf
,但有时 sf 更加准确)。logsf(k, M, n, N, loc=0)
生存函数的对数。
ppf(q, M, n, N, loc=0)
百分位点函数(
cdf
的倒数——百分位数)。isf(q, M, n, N, loc=0)
逆生存函数(
sf
的倒数)。stats(M, n, N, loc=0, moments=’mv’)
平均值(‘m’)、方差(‘v’)、偏度(‘s’)和/或峰度(‘k’)。
entropy(M, n, N, loc=0)
RV 的(微分)熵。
expect(func, args=(M, n, N), loc=0, lb=None, ub=None, conditional=False)
对于分布的期望值(一个参数的函数)。
median(M, n, N, loc=0)
分布的中位数。
mean(M, n, N, loc=0)
分布的均值。
var(M, n, N, loc=0)
分布的方差。
std(M, n, N, loc=0)
分布的标准差。
interval(confidence, M, n, N, loc=0)
中位数周围具有相等面积的置信区间。