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

Prof Brian Ripley ripley at stats.ox.ac.uk
Sun May 1 08:42:09 CEST 2005

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.
>     http://www.stat.columbia.edu/~kerman/Software/rprog.html
> Thanks to Radford Neal who suggested on our research web log (link below) 
> that setting EISPACK=TRUE may help.
>    http://www.stat.columbia.edu/~cook/movabletype/mlm/
> Jouni Kerman
> Department of Statistics
> Columbia University
> New York
> ______________________________________________
> R-help at 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

Brian D. Ripley,                  ripley at 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

More information about the R-help mailing list