scipy.stats.multivariate_hypergeom

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

多变量超几何随机变量。

参数
marray_like

群体中每种类型的对象的数量。那是, \(m[i]\) 是类型为 \(i\)

narray_like

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

random_state :{无,整型, numpy.random.Generator{无,整型,

如果 seed 为无(或 np.random )、 numpy.random.RandomState 使用的是Singleton。如果 seed 是一个整型、一个新的 RandomState 实例,其种子设定为 seed 。如果 seed 已经是一个 GeneratorRandomState 实例,则使用该实例。

参见

scipy.stats.hypergeom

超几何分布。

scipy.stats.multinomial

多项式分布。

注意事项

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

的概率质量函数 multivariate_hypergeom

\[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\]

哪里 \(m_i\) 是类型为 \(i\)\(M\) 是总体中的对象总数(所有 \(m_i\) ),以及 \(n\) 是从总体中抽取的样本的大小。

1.6.0 新版功能.

参考文献

1

多元超几何分布(http://www.randomservices.org/random/urn/MultiHypergeometric.html)

2

托马斯·J·萨金特和约翰·斯塔丘斯基,2020年,多元超几何分布https://python.quantecon.org/_downloads/pdf/multi_hyper.pdf

示例

估计具有规模二分总体的多元超几何分布的概率质量函数 \(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

功能 pmflogpmfmeanvarcov ,以及 rvs 支持广播,约定下矢量参数 (xm ,以及 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)

或者,可以调用该对象(作为函数)来修复 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)``

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