scipy.stats.multinomial#

scipy.stats.multinomial = <scipy.stats._multivariate.multinomial_gen object>[源代码]#

多项随机变量。

参数:
nint

试验次数

parray_like

试验落入每一类别的概率;应总和为 1

seed{None, int, np.random.RandomState, np.random.Generator}, 可选

用于绘制随机变量。如果seedNone,将使用RandomState单例。如果seed是一个整数,将使用一个新的RandomState实例,并使用种子进行初始化。如果seed已经是RandomStateGenerator实例,那么将使用该对象。默认值为None

另请参阅

scipy.stats.binom

二项分布。

numpy.random.Generator.multinomial

从多项分布中进行抽样。

scipy.stats.multivariate_hypergeom

多元超几何分布。

备注

n 应为非负整数。 p 的每个元素应在区间 \([0,1]\) 内,且各元素之和应为 1。如果它们的和不等于 1,则 p 数组的最后一个元素将不会被使用,并由先前元素中剩余的概率所替代。

对于 multinomial 而言,概率质量分布为

\[f(x) = \frac{n!}{x_1! \cdots x_k!} p_1^{x_1} \cdots p_k^{x_k},\]

支持 \(x=(x_1, \ldots, x_k)\),其中每个 \(x_i\) 为非负整数,它们之和为 \(n\)

在 0.19.0 版中添加。

示例

>>> from scipy.stats import multinomial
>>> rv = multinomial(8, [0.3, 0.2, 0.5])
>>> rv.pmf([1, 3, 4])
0.042000000000000072

对于 \(k=2\),多项分布与对应的二项分布相同(很小的数值差异除外)

>>> from scipy.stats import binom
>>> multinomial.pmf([3, 4], n=7, p=[0.4, 0.6])
0.29030399999999973
>>> binom.pmf(3, 7, 0.4)
0.29030400000000012

函数 pmflogpmfentropycov 支持广播,约定沿最后一个轴的向量参数 (xp) 的解释为每个行列都为一个单独的对象。例如

>>> multinomial.pmf([[3, 4], [3, 5]], n=[7, 8], p=[.3, .7])
array([0.2268945,  0.25412184])

这里,x.shape == (2, 2)n.shape == (2,)p.shape == (2,),但根据上述规则,它们的行为类似于 x 中的行 [3, 4][3, 5]p 中的 [.3, .7] 为一个单独的对象,类似于我们有 x.shape = (2,)n.shape = (2,)p.shape = ()。要获得不进行广播的单个元素,我们可以这样做

>>> multinomial.pmf([3, 4], n=7, p=[.3, .7])
0.2268945
>>> multinomial.pmf([3, 5], 8, p=[.3, .7])
0.25412184

这种广播同样适用于 cov,其中输出对象为大小为 p.shape[-1] 的方阵。例如

>>> multinomial.cov([4, 5], [[.3, .7], [.4, .6]])
array([[[ 0.84, -0.84],
        [-0.84,  0.84]],
       [[ 1.2 , -1.2 ],
        [-1.2 ,  1.2 ]]])

在此示例中,n.shape == (2,)p.shape == (2, 2),且遵循上述规则,它们会广播为 p.shape == (2,)。因此,结果也应为 (2,) 形状,但由于每个输出都是 \(2 \times 2\) 矩阵,因此结果实际上具有 (2, 2, 2) 形状,其中 result[0] 等于 multinomial.cov(n=4, p=[.3, .7]),且 result[1] 等于 multinomial.cov(n=5, p=[.4, .6])

或者,可以调用此对象(作为函数)来修正 np 参数,从而返回一个“冻结”的多项式随机变量

>>> rv = multinomial(n=7, p=[.3, .7])
>>> # Frozen object with the same methods but holding the given
>>> # degrees of freedom and scale fixed.

方法

pmf(x, n, p)

概率质量函数。

logpmf(x, n, p)

概率质量函数的对数。

rvs(n, p, size=1, random_state=None)

从多项式分布中抽取随机样本。

entropy(n, p)

计算多项式分布的熵。

cov(n, p)

计算多项式分布的协方差矩阵。