mars.tensor.random.hypergeometric#
- mars.tensor.random.hypergeometric(ngood, nbad, nsample, size=None, chunk_size=None, gpu=None, dtype=None)[来源]#
 从超几何分布中抽取样本。
样本是从具有指定参数的超几何分布中抽取的,ngood(做出良好选择的方式)、nbad(做出不良选择的方式),以及nsample = 抽取的项目数量,该数量小于或等于ngood + nbad的总和。
- Parameters
 ngood (int 或 数组形式 的 整数) – 形成一个良好选择的方式数量。 必须为非负数。
nbad (int 或 array_like 的 ints) – 生成不良选择的方式数。必须是非负的。
nsample (int 或 array_like 的 ints) – 采样的项目数。必须至少为 1,最多为
ngood + nbad。size (int 或者 tuple 的 ints, 可选) – 输出形状。如果给定的形状是,例如,
(m, n, k),那么m * n * k个样本将被抽取。如果 size 是None(默认), 如果ngood,nbad和nsample都是标量,则返回一个单一值。否则,将抽取np.broadcast(ngood, nbad, nsample).size个样本。chunk_size (int 或 tuple 的 int 或 tuple 的 ints, 可选) – 每个维度上所需的块大小
gpu (bool, 可选) – 如果为True,则在GPU上分配张量,默认为False
dtype (数据类型, 可选) – 返回的张量的数据类型。
- Returns
 out – 从参数化超几何分布中抽取的样本。
- Return type
 张量或标量
另请参阅
scipy.stats.hypergeom概率密度函数,分布或累积分布函数等。
备注
超几何分布的概率密度是
\[P(x) = \frac{\binom{m}{n}\binom{N-m}{n-x}}{\binom{N}{n}},\]其中 \(0 \le x \le m\) 和 \(n+m-N \le x \le n\)
对于 P(x) 成功的概率,其中 n = ngood,m = nbad,N = 样本数量。
考虑一个装有黑色和白色球的 urn,其中有 ngood 个黑球和 nbad 个白球。如果您在不放回的情况下抽取 nsample 个球,则超几何分布描述了抽样中黑球的分布。
请注意,这个分布与二项分布非常相似,除了在这种情况下,样本是无替换抽取的,而在二项分布的情况下,样本是有替换抽取的(或者样本空间是无限的)。随着样本空间变大,这个分布趋近于二项分布。
参考文献
- 1
 Lentner, Marvin, “基础应用统计学”, Bogden和Quigley, 1972.
- 2
 韦斯坦,埃里克 W. “超几何分布。” 来自 MathWorld–一个Wolfram网络资源。 http://mathworld.wolfram.com/HypergeometricDistribution.html
- 3
 维基百科,“超几何分布”, http://en.wikipedia.org/wiki/Hypergeometric_distribution
示例
从分布中抽样:
>>> import mars.tensor as mt
>>> ngood, nbad, nsamp = 100, 2, 10 # number of good, number of bad, and number of samples >>> s = mt.random.hypergeometric(ngood, nbad, nsamp, 1000) >>> hist(s) # note that it is very unlikely to grab both bad items
假设你有一个罐子,里面有15个白色和15个黑色的弹珠。 如果你随机抽取15个弹珠,12个或更多都是同一种颜色的概率有多大?
>>> s = mt.random.hypergeometric(15, 15, 15, 100000) >>> (mt.sum(s>=12)/100000. + mt.sum(s<=3)/100000.).execute() # answer = 0.003 ... pretty unlikely!