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

Robert Kern robert.kern at gmail.com
Tue Sep 15 14:26:23 EDT 2009


On Tue, Sep 15, 2009 at 12:50, Charles R
Harris<charlesr.harris at gmail.com> wrote:
>
>
> On Tue, Sep 15, 2009 at 11:38 AM, Michael Gilbert
> <michael.s.gilbert at 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