當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。