[R] non-reproducible eigen() output with MKL
peter dalgaard
pd@|gd @end|ng |rom gm@||@com
Sun May 4 19:27:41 CEST 2025
Have you looked more closely at the differences? Eigenvectors are only determined up to a sign change, so different platforms often give results that differ by sign. If you use a multitasking numerical library, the same can happen within platform because the exact sequence of computations differs between calls.
You could check
a) that e1$values and e2$values are the same
b) that the crossprod(e1$vectors, e2$vectors) is a diagonal matrix with 1 or -1 in the diagonal. (This might fail if you have eigenvalues that are almost identical, though.)
-pd
> On 4 May 2025, at 17.57, smallepsilon via R-help <r-help using r-project.org> wrote:
>
> I am using MKL with R 4.5.0 on Linux, and eigen() is producing different results with identical calls. Specifically, when I run the code below, I get "FALSE" from identical(). Just in case it had something to do with a random number generator, I put identical set.seed() calls immediately before each eigen() call, but that did not help. Has anyone seen this behavior before?
>
> (When n is 5, the identical() call almost always returns "TRUE". As n increases, the proportion of FALSE results increases, and it is nearly always FALSE when n is 50.)
>
> Jesse
>
> ***
>
> n <- 50
> set.seed(20250504)
> Sigma <- rWishart(1, df = n, Sigma = diag(n))[,,1]
> e1 <- eigen(Sigma)
> e2 <- eigen(Sigma)
> identical(e1, e2)
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
--
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business SchoolSolbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes using cbs.dk Priv: PDalgd using gmail.com
More information about the R-help
mailing list