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}, optional
- 用于绘制随机变量。 如果 seed 是 None,则使用 RandomState 单例。 如果 seed 是一个 int,则使用一个新的 - RandomState实例,并用种子进行初始化。 如果 seed 已经是一个- RandomState或- Generator实例,则使用该对象。 默认值为 None。
 
 - 方法 - 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) - 计算多元超几何分布的协方差矩阵。 - 参见 - scipy.stats.hypergeom
- 超几何分布。 
- scipy.stats.multinomial
- 多项式分布。 
 - 注释 - m 必须是一个正整数数组。 如果分位数 \(i\) 包含超出范围 \([0, m_i]\) 的值,其中 \(m_i\) 是总体中类型 \(i\) 的对象的数量,或者如果参数彼此不一致(例如 - x.sum() != n),则方法返回适当的值(例如- pmf的- 0)。 如果 m 或 n 包含负值,则结果将包含- 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{ with } \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 - 函数 - pmf、- logpmf、- mean、- var、- cov和- rvs支持广播,前提是向量参数(- x、- m和- n)的解释方式是,沿最后一个轴的每一行都是单个对象。 例如,我们可以将之前对- 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)。- 或者,可以调用该对象(作为函数)以固定 m 和 n 参数,从而返回一个“冻结”的多元超几何随机变量。 - >>> rv = multivariate_hypergeom(m=[10, 20], n=12) >>> rv.pmf(x=[8, 4]) 0.0025207176631464523