当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy stats.multivariate_normal用法及代码示例


本文简要介绍 python 语言中 scipy.stats.multivariate_normal 的用法。

用法:

scipy.stats.multivariate_normal = <scipy.stats._multivariate.multivariate_normal_gen object>#

多元正态随机变量。

mean 关键字指定均值。 cov 关键字指定协方差矩阵。

参数

mean 类似数组,默认:[0]

分布的平均值。

cov 数组 或 Covariance ,默认值:[1]

分布的对称正(半)定协方差矩阵。

allow_singular 布尔值,默认值:False

是否允许奇异协方差矩阵。如果出现以下情况,则忽略此设置:冠状病毒是一个Covariance对象。

seed {无,int,np.random.RandomState,np.random.Generator},可选

用于绘制随机变量。如果种子None, 这RandomState使用单例。如果种子是一个 int,一个新的RandomState使用实例,用种子播种。如果种子已经是一个RandomState或者Generator实例,然后使用该对象。默认为None.

注意

设置参数意思是None相当于拥有意思是成为zero-vector。参数冠状病毒可以是标量,在这种情况下,协方差矩阵是单位乘以该值、协方差矩阵对角线条目的向量、二维 数组 或Covariance对象。

协方差矩阵冠状病毒可能是子类的实例Covariance,例如scipy.stats.CovViaPrecision。如果是这样,allow_singular被忽略。

否则,当 allow_singular 为 True 时,cov 必须是对称正半定矩阵;当 allow_singular 为 False 时,它必须是(严格)正定的。不检查对称性;仅使用下三角形部分。 cov 的行列式和倒数分别计算为 pseudo-determinant 和 pseudo-inverse,因此 cov 不需要具有满秩。

multivariate_normal 的概率密度函数为

其中 是平均值, 协方差矩阵, 的秩。在单数 的情况下,SciPy 根据 [1] 扩展此定义。

参考

[1]

多元正态分布 - 简并情况,维基百科,https://en.wikipedia.org/wiki/Multivariate_normal_distribution#Degenerate_case

例子

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy.stats import multivariate_normal
>>> x = np.linspace(0, 5, 10, endpoint=False)
>>> y = multivariate_normal.pdf(x, mean=2.5, cov=0.5); y
array([ 0.00108914,  0.01033349,  0.05946514,  0.20755375,  0.43939129,
        0.56418958,  0.43939129,  0.20755375,  0.05946514,  0.01033349])
>>> fig1 = plt.figure()
>>> ax = fig1.add_subplot(111)
>>> ax.plot(x, y)
>>> plt.show()
scipy-stats-multivariate_normal-1_00_00.png

或者,可以调用该对象(作为函数)来固定均值和协方差参数,返回 “frozen” 多元正态随机变量:

>>> rv = multivariate_normal(mean=None, cov=1, allow_singular=False)
>>> # Frozen object with the same methods but holding the given
>>> # mean and covariance fixed.

输入分位数可以是任何形状的数组,只要最后一个轴标记组件即可。例如,这允许我们在 2D 中显示非各向同性随机变量的冻结 pdf,如下所示:

>>> x, y = np.mgrid[-1:1:.01, -1:1:.01]
>>> pos = np.dstack((x, y))
>>> rv = multivariate_normal([0.5, -0.2], [[2.0, 0.3], [0.3, 0.5]])
>>> fig2 = plt.figure()
>>> ax2 = fig2.add_subplot(111)
>>> ax2.contourf(x, y, rv.pdf(pos))
scipy-stats-multivariate_normal-1_01_00.png

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.multivariate_normal。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。