scipy.stats.invwishart#

scipy.stats.invwishart = <scipy.stats._multivariate.invwishart_gen object>[源代码]#

一个逆Wishart随机变量。

df 关键字指定自由度。scale 关键字指定尺度矩阵,该矩阵必须是对称且正定的。在这种情况下,尺度矩阵通常被解释为多元正态协方差矩阵。

参数:
df整数

自由度必须大于或等于尺度矩阵的维度

比例array_like

分布的对称正定尺度矩阵

种子{None, int, np.random.RandomState, np.random.Generator}, 可选

用于绘制随机变量。如果 seedNone,则使用 RandomState 单例。如果 seed 是整数,则使用新的 RandomState 实例,并以 seed 为种子。如果 seed 已经是 RandomStateGenerator 实例,则使用该对象。默认值为 None

方法

pdf(x, df, scale)

概率密度函数。

logpdf(x, df, scale)

概率密度函数的对数。

rvs(df, scale, size=1, random_state=None)

从逆威沙特分布中抽取随机样本。

entropy(df, scale)

分布的微分熵。

Raises:
scipy.linalg.LinAlgError

如果缩放矩阵 scale 不是正定的。

参见

wishart

注释

尺度矩阵 scale 必须是一个对称正定矩阵。奇异矩阵,包括对称半正定情况,是不支持的。对称性不会被检查;只有下三角部分会被使用。

逆Wishart分布通常表示为

\[W_p^{-1}(\nu, \Psi)\]

其中 \(\nu\) 是自由度,\(\Psi\)\(p \times p\) 尺度矩阵。

invwishart 的概率密度函数支持正定矩阵 \(S\);如果 \(S \sim W^{-1}_p(\nu, \Sigma)\),则其概率密度函数为:

\[f(S) = \frac{|\Sigma|^\frac{\nu}{2}}{2^{ \frac{\nu p}{2} } |S|^\frac{\nu + p + 1}{2} \Gamma_p \left(\frac{\nu}{2} \right)} \exp\left( -tr(\Sigma S^{-1}) / 2 \right)\]

如果 :math:`S sim W_p^{-1}(nu, Psi)`(逆威沙特分布),那么 :math:`S^{-1} sim W_p(nu, Psi^{-1})`(威沙特分布)。

如果尺度矩阵是一维且等于1,那么逆Wishart分布 \(W_1( u, 1)\) 退化为逆Gamma分布,其参数形状为 \(\frac{ u}{2}\) ,尺度为 \(\frac{1}{2}\)

与在 [2] 中描述的通过反转随机生成的 Wishart 矩阵不同,这里使用 [4] 中的算法直接生成一个随机的逆 Wishart 矩阵,而无需进行反转。

Added in version 0.16.0.

参考文献

[1]

M.L. Eaton, “多元统计:向量空间方法”, Wiley, 1983.

[2]

M.C. Jones, “生成逆威沙特矩阵”, 《统计学通讯 - 模拟与计算》, 第14卷第2期, 第511-514页, 1985年。

[3]

Gupta, M. 和 Srivastava, S. “微分熵和相对熵的参数贝叶斯估计”。《熵》12卷, 818 - 843页。2010年。

[4]

S.D. Axen, “高效生成逆Wishart矩阵及其Cholesky因子”, arXiv:2310.15884v1. 2023.

示例

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy.stats import invwishart, invgamma
>>> x = np.linspace(0.01, 1, 100)
>>> iw = invwishart.pdf(x, df=6, scale=1)
>>> iw[:3]
array([  1.20546865e-15,   5.42497807e-06,   4.45813929e-03])
>>> ig = invgamma.pdf(x, 6/2., scale=1./2)
>>> ig[:3]
array([  1.20546865e-15,   5.42497807e-06,   4.45813929e-03])
>>> plt.plot(x, iw)
>>> plt.show()
../../_images/scipy-stats-invwishart-1_00_00.png

输入的分位数可以是任何形状的数组,只要最后一个轴标记了各个分量。

或者,可以调用该对象(作为函数)来固定自由度和尺度参数,返回一个“冻结”的逆Wishart随机变量:

>>> rv = invwishart(df=1, scale=1)
>>> # Frozen object with the same methods but holding the given
>>> # degrees of freedom and scale fixed.