scipy.stats.multivariate_hypergeom#
- scipy.stats.multivariate_hypergeom = <scipy.stats._multivariate.multivariate_hypergeom_gen object>[source]#
多元超几何分布随机变量。
- 参数:
- marray_like
总体中每种对象的数量。即 \(m[i]\) 是类型 \(i\) 对象的数量。
- narray_like
从总体中抽取的样品数量。
- seed{None, int, np.random.RandomState, np.random.Generator}, optional
用于生成随机变量。如果 seed 为 None,则使用 RandomState 单例。如果 seed 是一个 int,则使用一个新的
RandomState
实例,且使用 seed 作种子。如果 seed 已经是RandomState
或Generator
实例,则使用该对象。默认值为 None。
另请参见
scipy.stats.hypergeom
超几何分布。
scipy.stats.multinomial
多项式分布。
备注
m 必须是正整数数组。如果分位数 \(i\) 包含超出范围 \([0, m_i]\) 的值,其中 \(m_i\) 是总体中类型 \(i\) 的对象数,或者如果参数彼此不一致(例如
class="docutils literal notranslate">x.sum() != n
,方法将返回适当的值(例如class="docutils literal notranslate">0
对于class="docutils literal notranslate">pmf
)。如果 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
方法
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)
计算多元超几何分布的协方差矩阵。