maxframe.tensor.random.negative_binomial#

maxframe.tensor.random.negative_binomial(n, p, size=None, chunk_size=None, gpu=None, dtype=None)[源代码]#

从负二项分布中抽取样本。

样本是从具有指定参数的负二项分布中抽取的,n 次试验和成功的概率 p,其中 n 是一个大于 0 的整数,p 在区间 [0, 1] 内。

参数:
  • n (int or array_like of ints) -- 分布的参数,> 0。浮点数也可以接受,但会被截断为整数。

  • p (float or array_like of floats) -- 分布的参数,>= 0 且 <=1。

  • size (int or tuple of ints, optional) -- 输出形状。如果给定的形状是,例如 (m, n, k),则抽取 m * n * k 个样本。如果 size 是 None``(默认),并且 ``np 都是标量,则返回单个值。否则,抽取 np.broadcast(n, p).size 个样本。

  • chunk_size (int or tuple of int or tuple of ints, optional) -- 每个维度上期望的块大小

  • gpu (bool, optional) -- 如果为 True,则在 GPU 上分配张量,默认为 False

  • dtype (data-type, optional) -- 返回张量的数据类型。

返回:

out -- 从参数化的负二项分布中抽取的样本,其中每个样本等于 N,即达到 n - 1 次成功所需的试验次数,N - (n - 1) 次失败,以及在第 (N + n) 次试验中成功。

返回类型:

Tensor or scalar

备注

负二项分布的概率密度为

\[P(N;n,p) = \binom{N+n-1}{n-1}p^{n}(1-p)^{N},\]

其中 \(n-1\) 是成功的次数,\(p\) 是成功的概率,\(N+n-1\) 是试验的次数。负二项分布给出了在 N+n-1 次试验中 n-1 次成功和 N 次失败的概率,以及在第 (N+n) 次试验中成功。

如果一个人反复掷骰子,直到第三次出现 "1",那么在第三次出现 "1" 之前出现的非 "1" 的数量的概率分布就是负二项分布。

引用

示例

从分布中抽取样本:

一个现实世界的例子。一家公司钻探野猫油井,每口井的成功概率估计为 0.1。每口连续的井有一次成功的概率是多少,也就是说,钻探 5 口井后有一次成功的概率是多少,钻探 6 口井后有一次成功的概率是多少,等等。

>>> import maxframe.tensor as mt
>>> s = mt.random.negative_binomial(1, 0.1, 100000)
>>> for i in range(1, 11):
...    probability = (mt.sum(s<i) / 100000.).execute()
...    print i, "wells drilled, probability of one success =", probability