scipy.stats.multivariate_t#

scipy.stats.multivariate_t = <scipy.stats._multivariate.multivariate_t_gen object>[源代码]#

一个多变量的 t 分布随机变量。

loc 参数指定位置。shape 参数指定正半定形状矩阵。df 参数指定自由度。

除了调用下面的方法外,对象本身也可以作为一个函数来调用,以固定位置、形状矩阵和自由度参数,返回一个“冻结”的多变量t分布随机数。

参数:
loc类似数组, 可选

分发的位置。(默认 0

形状类似数组, 可选

分布的半正定矩阵。(默认 1

dffloat, 可选

分布的自由度;必须大于零。如果 np.inf 则结果是多元正态分布。默认值为 1

允许单数bool, 可选

是否允许奇异矩阵。(默认 False

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

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

方法

pdf(x, loc=None, shape=1, df=1, allow_singular=False)

概率密度函数。

logpdf(x, loc=None, shape=1, df=1, allow_singular=False)

概率密度函数的对数。

cdf(x, loc=None, shape=1, df=1, allow_singular=False, *,

maxpts=None, lower_limit=None, random_state=None) 累积分布函数。

rvs(loc=None, shape=1, df=1, size=1, random_state=None)

从多元 t 分布中抽取随机样本。

entropy(loc=None, shape=1, df=1)

多元 t 分布的微分熵。

注释

将参数 loc 设置为 None 等同于让 loc 成为零向量。参数 shape 可以是一个标量,在这种情况下,形状矩阵是单位矩阵乘以该值,也可以是形状矩阵的对角线项的向量,或者是二维的类似数组。矩阵 shape 必须是一个(对称的)半正定矩阵。shape 的行列式和逆分别计算为伪行列式和伪逆,因此 shape 不需要具有满秩。

multivariate_t 的概率密度函数为

\[f(x) = \frac{\Gamma((\nu + p)/2)}{\Gamma(\nu/2)\nu^{p/2}\pi^{p/2}|\Sigma|^{1/2}} \left[1 + \frac{1}{\nu} (\mathbf{x} - \boldsymbol{\mu})^{\top} \boldsymbol{\Sigma}^{-1} (\mathbf{x} - \boldsymbol{\mu}) \right]^{-(\nu + p)/2},\]

其中 \(p\)\(\mathbf{x}\) 的维度,\(\boldsymbol{\mu}\)\(p\) 维的位置,\(\boldsymbol{\Sigma}\)\(p \times p\) 维的形状矩阵,而 \(\nu\) 是自由度。

Added in version 1.6.0.

参考文献

[1]

Arellano-Valle 等人。“多元偏斜椭圆分布的香农熵和互信息”。斯堪的纳维亚统计杂志。第40卷,第1期。

示例

该对象可以被调用(作为函数)来固定 locshapedfallow_singular 参数,返回一个“冻结”的多变量 t 随机变量:

>>> import numpy as np
>>> from scipy.stats import multivariate_t
>>> rv = multivariate_t([1.0, -0.5], [[2.1, 0.3], [0.3, 1.5]], df=2)
>>> # Frozen object with the same methods but holding the given location,
>>> # scale, and degrees of freedom fixed.

创建PDF的等高线图。

>>> import matplotlib.pyplot as plt
>>> x, y = np.mgrid[-1:3:.01, -2:1.5:.01]
>>> pos = np.dstack((x, y))
>>> fig, ax = plt.subplots(1, 1)
>>> ax.set_aspect('equal')
>>> plt.contourf(x, y, rv.pdf(pos))
../../_images/scipy-stats-multivariate_t-1.png