scipy.stats.dirichlet_multinomial#

scipy.stats.dirichlet_multinomial = <scipy.stats._multivariate.dirichlet_multinomial_gen object>[source]#

狄利克雷多项随机变量。

狄利克雷多项分布是一种复合概率分布:它是具有试验次数 n 和类别概率 p 的多项分布,这些概率是从具有集中参数 alpha 的狄利克雷分布中随机抽样的。

参数:
alphaarray_like

集中参数。沿最后一个轴的条目数决定了分布的维数。每个条目必须是严格正数。

nint 或 array_like

试验次数。每个元素必须是非负整数。

seed{None, int, np.random.RandomState, np.random.Generator}, optional

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

方法

logpmf(x, alpha, n)

概率质量函数的对数。

pmf(x, alpha, n)

概率质量函数。

mean(alpha, n)

狄利克雷多项分布的均值。

var(alpha, n)

狄利克雷多项分布的方差。

cov(alpha, n)

狄利克雷多项分布的协方差。

另请参阅

scipy.stats.dirichlet

狄利克雷分布。

scipy.stats.multinomial

多项分布。

参考文献

[1]

Dirichlet-multinomial distribution, Wikipedia, https://www.wikipedia.org/wiki/Dirichlet-multinomial_distribution

示例

>>> from scipy.stats import dirichlet_multinomial

获取 PMF

>>> n = 6  # number of trials
>>> alpha = [3, 4, 5]  # concentration parameters
>>> x = [1, 2, 3]  # counts
>>> dirichlet_multinomial.pmf(x, alpha, n)
0.08484162895927604

如果类别计数的总和不等于试验次数,则概率质量为零。

>>> dirichlet_multinomial.pmf(x, alpha, n=7)
0.0

获取 PMF 的对数

>>> dirichlet_multinomial.logpmf(x, alpha, n)
-2.4669689491013327

获取均值

>>> dirichlet_multinomial.mean(alpha, n)
array([1.5, 2. , 2.5])

获取方差

>>> dirichlet_multinomial.var(alpha, n)
array([1.55769231, 1.84615385, 2.01923077])

获取协方差

>>> dirichlet_multinomial.cov(alpha, n)
array([[ 1.55769231, -0.69230769, -0.86538462],
       [-0.69230769,  1.84615385, -1.15384615],
       [-0.86538462, -1.15384615,  2.01923077]])

或者,可以调用该对象(作为函数)来固定 alphan 参数,从而返回“冻结”的狄利克雷多项随机变量。

>>> dm = dirichlet_multinomial(alpha, n)
>>> dm.pmf(x)
0.08484162895927579

所有方法都是完全向量化的。 xalpha 的每个元素都是一个向量(沿最后一个轴),n 的每个元素都是一个整数(标量),并且结果是按元素计算的。

>>> x = [[1, 2, 3], [4, 5, 6]]
>>> alpha = [[1, 2, 3], [4, 5, 6]]
>>> n = [6, 15]
>>> dirichlet_multinomial.pmf(x, alpha, n)
array([0.06493506, 0.02626937])
>>> dirichlet_multinomial.cov(alpha, n).shape  # both covariance matrices
(2, 3, 3)

支持根据标准 NumPy 约定进行广播。 在这里,我们有四组集中参数(每个参数都是一个包含两个元素的向量),对应于三个试验次数(每个试验次数都是一个标量)。

>>> alpha = [[3, 4], [4, 5], [5, 6], [6, 7]]
>>> n = [[6], [7], [8]]
>>> dirichlet_multinomial.mean(alpha, n).shape
(3, 4, 2)