scipy.stats.dirichlet#
- scipy.stats.dirichlet = <scipy.stats._multivariate.dirichlet_gen object>[source]#
狄利克莱随机变量。
alpha
关键词指定分布的集中度参数。在版本 0.15.0 中添加。
- 参数:
- alphaarray_like
集中度参数。条目的数量决定了分布的维度。
- seed{None, int, np.random.RandomState, np.random.Generator}, optional
用于绘制随机变量。如果 seed 为 None,则使用 RandomState 单例。如果 seed 是 int,则使用新的
RandomState
实例,播种种子。如果 seed 已是RandomState
或Generator
实例,则使用该对象。默认为 None。
备忘
每个 \(\alpha\) 条目必须为正数。分布仅支持以下所定义的单纯形:
\[\sum_{i=1}^{K} x_i = 1\]其中 \(0 < x_i < 1\)。
如果分位数不在单纯形内,则会引发 ValueError。
dirichlet
的概率密度函数为\[f(x) = \frac{1}{\mathrm{B}(\boldsymbol\alpha)} \prod_{i=1}^K x_i^{\alpha_i - 1}\]其中
\[\mathrm{B}(\boldsymbol\alpha) = \frac{\prod_{i=1}^K \Gamma(\alpha_i)} {\Gamma\bigl(\sum_{i=1}^K \alpha_i\bigr)}\]以及 \(\boldsymbol\alpha=(\alpha_1,\ldots,\alpha_K)\),集中度参数和 \(K\) 是 \(x\) 取值的维度。
请注意,
dirichlet
界面有点不一致。rvs 函数返回的数组相对于 pdf 和 logpdf 预期的格式进行了转置。示例
>>> import numpy as np >>> from scipy.stats import dirichlet
生成一个 Dirichlet 随机变量
>>> quantiles = np.array([0.2, 0.2, 0.6]) # specify quantiles >>> alpha = np.array([0.4, 5, 15]) # specify concentration parameters >>> dirichlet.pdf(quantiles, alpha) 0.2843831684937255
相等的 PDF,但遵循对数标度
>>> dirichlet.logpdf(quantiles, alpha) -1.2574327653159187
一旦指定了 Dirichlet 分布,我们就可以计算感兴趣的量
>>> dirichlet.mean(alpha) # get the mean of the distribution array([0.01960784, 0.24509804, 0.73529412]) >>> dirichlet.var(alpha) # get variance array([0.00089829, 0.00864603, 0.00909517]) >>> dirichlet.entropy(alpha) # calculate the differential entropy -4.3280162474082715
我们还可以从分布中返回随机样本
>>> dirichlet.rvs(alpha, size=1, random_state=1) array([[0.00766178, 0.24670518, 0.74563305]]) >>> dirichlet.rvs(alpha, size=2, random_state=2) array([[0.01639427, 0.1292273 , 0.85437844], [0.00156917, 0.19033695, 0.80809388]])
或者,该对象可以作为(一个函数)被调用来固定集中度参数,返回一个“冻结的”Dirichlet 随机变量
>>> rv = dirichlet(alpha) >>> # Frozen object with the same methods but holding the given >>> # concentration parameters fixed.
方法
pdf(x, alpha)
概率密度函数。
logpdf(x, alpha)
概率密度函数的对数。
rvs(alpha, size=1, random_state=None)
从 Dirichlet 分布中抽取随机样本。
mean(alpha)
Dirichlet 分布的平均值
var(alpha)
Dirichlet 分布的方差
cov(alpha)
Dirichlet 分布的协方差
entropy(alpha)
计算 Dirichlet 分布的微分熵。