Re: [R] Efficient testing for +ve definiteness

From: Prof Brian Ripley <ripley_at_stats.ox.ac.uk>
Date: Thu 14 Jul 2005 - 17:16:31 EST

On Wed, 13 Jul 2005, Makram Talih wrote:

> Dear R-users,
>
> Is there a preferred method for testing whether a real symmetric matrix is
> positive definite? [modulo machine rounding errors.]
>
> The obvious way of computing eigenvalues via "E <- eigen(A, symmetric=T,
> only.values=T)$values" and returning the result of "!any(E <= 0)" seems
> less efficient than going through the LU decomposition invoked in
> "determinant.matrix(A)" and checking the sign and (log) modulus of the
> determinant.
>
> I suppose this has to do with the underlying C routines. Any thoughts or
> anecdotes?

It has to do with what exactly you want to test. Knowing the determinant does not tell you if the matrix is close to non-positive definite or not. For numerical work, a comparison of the smallest eigenvalue to the largest is usually the most useful indication of possible problems in computations. An alternative is to try a Choleski decomposition, which may be faster but is less informative.

Given how fast eigenvalues can be computed by current algorithms (and note the comments in ?eigen) I would suggest not worrying about speed until you need to (probably never).

-- 
Brian D. Ripley,                  ripley@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Received on Thu Jul 14 17:20:00 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:33:39 EST