[Numpy-discussion] warning or error for non-physical multivariate_normal covariance matrices?

Robert Kern robert.kern@gmail....
Tue Sep 15 13:26:23 CDT 2009

On Tue, Sep 15, 2009 at 12:50, Charles R
Harris<charlesr.harris@gmail.com> wrote:
> On Tue, Sep 15, 2009 at 11:38 AM, Michael Gilbert
> <michael.s.gilbert@gmail.com> wrote:
>> hi,
>> when using numpy.random.multivariate_normal, would it make sense to warn
>> the user that they have entered a non-physical covariance matrix? i was
>> recently working on a problem and getting very strange results until i
>> finally realized that i had actually entered a bogus covariance matrix.
>> its easy to determine when this is the case -- its when the
>> determinant of the covariance matrix is negative.  i.e. the
>> multivariate normal distribution has det(C)^1/2 as part of the
>> normalization factor, so when det(C)<0, you end up with an imaginary
>> probability distribution.
> Hmm, you mean it isn't implemented using a cholesky decomposition? That
> would (should) throw an error if the covariance isn't symmetric positive
> definite.

We use the SVD to do the matrix square root. I believe I was just
following the older code that I was replacing. I have run into nearly
degenerate cases where det(C) ~ 0 such that the SVD method gave not
unreasonable answers, given the circumstances, while the Cholesky
decomposition gave an error "too soon" in my estimation.

Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco

More information about the NumPy-Discussion mailing list