【问题标题】:Why bivariate_normal returns NaNs even if covariance is semi-positive definite?即使协方差是半正定的,为什么 bivariate_normal 也会返回 NaN?
【发布时间】:2015-02-23 01:55:09
【问题描述】:

我有以下正态分布点:

import numpy as np
from matplotlib import pylab as plt
from matplotlib import mlab

mean_test = np.array([0,0])
cov_test = array([[ 0.6744121 , -0.16938146],
                  [-0.16938146,  0.21243464]])

协方差矩阵是确定的半正矩阵,因此可以用作协方差

# Semi-positive definite if all eigenvalues are 0 or 
# if there exists a Cholesky decomposition 
print np.linalg.eigvals(cov_test)
print np.linalg.cholesky(cov_test)

[0.72985988 0.15698686]

[[ 0.82122597 0. ] [-0.20625439 0.41218172]]

如果我产生一些分数,我会得到:

 data_test = np.random.multivariate_normal(mean_test, cov_test, 1000)
 plt.scatter(data_test[:,0],data_test[:,1])

问题

当我尝试绘制协方差等值线时,为什么 bivariate_normal 方法会失败(返回 NaN)?

x = np.arange(-3.0, 3.0, 0.1)
y = np.arange(-3.0, 3.0, 0.1)
X, Y = np.meshgrid(x, y)
Z = mlab.bivariate_normal(X, Y, 
                      cov_test[0,0], cov_test[1,1],
                      0, 0, cov_test[0,1])
print Z
plt.contour(X, Y, Z)

输出:

 [[ nan  nan  nan ...,  nan  nan  nan]
 [ nan  nan  nan ...,  nan  nan  nan]
 [ nan  nan  nan ...,  nan  nan  nan]
 ..., 
 [ nan  nan  nan ...,  nan  nan  nan]
 [ nan  nan  nan ...,  nan  nan  nan]
 [ nan  nan  nan ...,  nan  nan  nan]]

 ValueError: zero-size array to reduction operation minimum which has no identity

【问题讨论】:

    标签: python matplotlib scipy statistics


    【解决方案1】:

    协方差矩阵的对角线是方差,但mlab.bivariate_normal 的参数sigmaxsigmay 是方差的平方根。改变这个:

    Z = mlab.bivariate_normal(X, Y, 
                          cov_test[0,0], cov_test[1,1],
                          0, 0, cov_test[0,1])
    

    到这里:

    Z = mlab.bivariate_normal(X, Y, 
                          np.sqrt(cov_test[0,0]), np.sqrt(cov_test[1,1]),
                          0, 0, cov_test[0,1])
    

    【讨论】:

      猜你喜欢
      • 2016-01-24
      • 2021-04-03
      • 2012-06-13
      • 2021-08-15
      • 1970-01-01
      • 2020-01-07
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多