scipy.stats.wishart#

scipy.stats.wishart = <scipy.stats._multivariate.wishart_gen object>[源代码]#

Wishart 随机变量。

df 关键字指定自由度。scale 关键字指定尺度矩阵,该矩阵必须是对称且正定的。在这种情况下,尺度矩阵通常根据多元正态精度矩阵(协方差矩阵的逆)来解释。这些参数必须满足关系 df > scale.ndim - 1,但请参阅在使用 df < scale.ndim 时使用 rvs 方法的注意事项。

参数:
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)

从Wishart分布中抽取随机样本。

entropy()

计算Wishart分布的微分熵。

Raises:
scipy.linalg.LinAlgError

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

参见

invwishart, chi2

注释

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

Wishart 分布通常表示为

\[W_p(\nu, \Sigma)\]

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

wishart 的概率密度函数支持正定矩阵 \(S\);如果 \(S \sim W_p(\nu, \Sigma)\),则其概率密度函数为:

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

如果 :math:`S sim W_p(nu, Sigma)`(Wishart分布),那么 :math:`S^{-1} sim W_p^{-1}(nu, Sigma^{-1})`(逆Wishart分布)。

如果尺度矩阵是一维且等于一,那么Wishart分布 \(W_1(\nu, 1)\) 退化为 \(\chi^2(\nu)\) 分布。

rvs 方法实现的算法 [2] 可能会生成数值上奇异的矩阵,当 \(p - 1 < u < p\) 时;用户可能希望检查此条件并在必要时生成替换样本。

Added in version 0.16.0.

参考文献

[1]

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

[2]

W.B. Smith 和 R.R. Hocking, “算法 AS 53: Wishart 变量生成器”, 应用统计学, 第21卷, 第341-345页, 1972年。

示例

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy.stats import wishart, chi2
>>> x = np.linspace(1e-5, 8, 100)
>>> w = wishart.pdf(x, df=3, scale=1); w[:5]
array([ 0.00126156,  0.10892176,  0.14793434,  0.17400548,  0.1929669 ])
>>> c = chi2.pdf(x, 3); c[:5]
array([ 0.00126156,  0.10892176,  0.14793434,  0.17400548,  0.1929669 ])
>>> plt.plot(x, w)
>>> plt.show()
../../_images/scipy-stats-wishart-1_00_00.png

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

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

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