Java Mailing List Archive

http://www.r-help.com/

Home » Home (12/2007) » R Help for Statistical Computing »

Re: [R] Efficient testing for +ve definiteness

Prof Brian Ripley

2005-07-14

Replies:

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@(protected)
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@(protected)
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
©2008 r-help.com - Jax Systems, LLC, U.S.A.