scipy.stats.multivariate_hypergeom#

scipy.stats.multivariate_hypergeom = <scipy.stats._multivariate.multivariate_hypergeom_gen object>[源代码]#

一个多元超几何随机变量。

参数:
marray_like

总体中每种类型对象的数量。也就是说,\(m[i]\) 是类型 \(i\) 的对象的数量。

narray_like

从总体中抽取的样本数量。

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

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

参见

scipy.stats.hypergeom

超几何分布。

scipy.stats.multinomial

多项式分布。

注释

m 必须是正整数数组。如果分位数 \(i\) 包含超出范围 \([0, m_i]\) 的值,其中 \(m_i\) 是总体中类型 \(i\) 的对象的数量,或者如果参数彼此不一致(例如,x.sum() != n),则方法返回适当的值(例如,对于 pmf 返回 0)。如果 mn 包含负值,则结果将包含 nan

multivariate_hypergeom 的概率质量函数是

\[\begin{split}P(X_1 = x_1, X_2 = x_2, \ldots, X_k = x_k) = \frac{\binom{m_1}{x_1} \binom{m_2}{x_2} \cdots \binom{m_k}{x_k}}{\binom{M}{n}}, \\ \quad (x_1, x_2, \ldots, x_k) \in \mathbb{N}^k \text{ 且 } \sum_{i=1}^k x_i = n\end{split}\]

其中 \(m_i\) 是类型 \(i\) 的对象的数量,\(M\) 是总体中对象的总数(所有 \(m_i\) 的总和),而 \(n\) 是要从总体中抽取的样本的大小。

在 1.6.0 版本中添加。

参考文献

[2]

Thomas J. Sargent 和 John Stachurski,2020 年,多元超几何分布 https://python.quantecon.org/multi_hyper.html

示例

要评估多元超几何分布的概率质量函数,对于大小为 \(10\)\(20\) 的二分总体,在大小为 \(12\) 的样本中,其中第一种类型的对象有 \(8\) 个,第二种类型的对象有 \(4\) 个,请使用

>>> from scipy.stats import multivariate_hypergeom
>>> multivariate_hypergeom.pmf(x=[8, 4], m=[10, 20], n=12)
0.0025207176631464523

当总体中只有两种类型(好和坏)的对象时,multivariate_hypergeom 分布与相应的 hypergeom 分布相同(尽管存在微小的数值差异),如上面的示例所示。考虑另一个示例,以便与超几何分布进行比较

>>> from scipy.stats import hypergeom
>>> multivariate_hypergeom.pmf(x=[3, 1], m=[10, 5], n=4)
0.4395604395604395
>>> hypergeom.pmf(k=3, M=15, n=4, N=10)
0.43956043956044005

函数 pmflogpmfmeanvarcovrvs 支持广播,约定向量参数(xmn)被解释为沿着最后一个轴的每一行都是单个对象。例如,我们可以将之前对 multivariate_hypergeom 的两次调用组合为

>>> multivariate_hypergeom.pmf(x=[[8, 4], [3, 1]], m=[[10, 20], [10, 5]],
...                            n=[12, 4])
array([0.00252072, 0.43956044])

此广播也适用于 cov,其中输出对象是大小为 m.shape[-1] 的方阵。例如

>>> multivariate_hypergeom.cov(m=[[7, 9], [10, 15]], n=[8, 12])
array([[[ 1.05, -1.05],
        [-1.05,  1.05]],
       [[ 1.56, -1.56],
        [-1.56,  1.56]]])

也就是说,result[0] 等于 multivariate_hypergeom.cov(m=[7, 9], n=8),而 result[1] 等于 multivariate_hypergeom.cov(m=[10, 15], n=12)

或者,可以调用该对象(作为函数)来固定 mn 参数,从而返回“冻结”的多元超几何随机变量。

>>> rv = multivariate_hypergeom(m=[10, 20], n=12)
>>> rv.pmf(x=[8, 4])
0.0025207176631464523

方法

pmf(x, m, n)

概率质量函数。

logpmf(x, m, n)

概率质量函数的对数。

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

从多元超几何分布中抽取随机样本。

mean(m, n)

多元超几何分布的均值。

var(m, n)

多元超几何分布的方差。

cov(m, n)

计算多元超几何分布的协方差矩阵。