Re: [R] eigen() may fail for some symmetric matrices, affects mvrnorm()

From: Prof Brian Ripley <>
Date: Sun 01 May 2005 - 16:42:09 EST

I do not begin to understand this.

mvrnorm() uses EISPACK=TRUE and always has done, explicitly since there was such an argument to eigen() (since 15 Jan 2003: the argument was introduced in R 1.7.0 in April 2003). Just take a look at the code.

The claimed `patch' (which is not a patch at all but a replacement) is not based on any remotely current version of MASS.

The puported example against eigen(EISPACK=FALSE) (the default) works correctly (no NaNs) on all my systems, including the distributed version of rw2010. It seems that students (and `Jouni Kerman' is listed as a student) at the Department of Statistics, Columbia University are provided with a deficient computing environment (unstated despite the posting guide): my surmise is that a broken external BLAS or LAPACK is in use.

On Sat, 30 Apr 2005, Jouni Kerman wrote:

> Hi all,
> Recently our statistics students noticed that their Gibbs samplers were
> crashing due to some NaNs in some parameters. The NaNs came from mvrnorm
> (Ripley & Venables' MASS package multivariate normal sampling function) and
> with some more investigation it turned out that they were generated by
> function eigen, the eigenvalue computing function. The problem did not seem
> to happen when the option "symmetric" was set to FALSE; at first I thought
> that only matrices that were not completely symmetric (such as ones with
> small errors of the magnitude 1e-17 or so) were affected but then we
> encountered matrices that were perfectly symmetric but eigen still generated
> NaNs when symmetric=TRUE.
> I wrote a trivial patch to mvrnorm to detect this problem and to recompute
> the eigenvalues with symmetric=TRUE and EISPACK=TRUE. This seems to work.
> symmetric=FALSE also seems to work, but is somewhat slower.
> If you use mvrnorm then you may want to try this. Details and the patch are
> on my web page, along with one example of a problematic symmetric matrix (to
> be loaded with the 'load' function). The NaNs should appear in the
> eigenvectors. This particular matrix may not produce an error on all
> platforms.
> Thanks to Radford Neal who suggested on our research web log (link below)
> that setting EISPACK=TRUE may help.
> Jouni Kerman
> Department of Statistics
> Columbia University
> New York
> ______________________________________________
> mailing list
> PLEASE do read the posting guide!

Brian D. Ripley,        
Professor of Applied Statistics,
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________ mailing list
PLEASE do read the posting guide!
Received on Sun May 01 16:47:43 2005

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