Gleitkomma-Hölle: Warum Ihre multivariate Normalverteilungsstichproben in R nicht reproduzierbar sind

2025-05-22
Gleitkomma-Hölle: Warum Ihre multivariate Normalverteilungsstichproben in R nicht reproduzierbar sind

Dieser Beitrag beschreibt die Fehlersuche der Autorin, die Kollegen bei der Lösung eines Reproduzierbarkeitsproblems in ihrem R-Code half, das die Stichprobenziehung aus einer multivariaten Normalverteilung betraf. Das Problem rührte nicht von Fehlern in R oder dem MASS-Paket her, sondern von den inhärenten Eigenheiten der Gleitkommaarithmetik. Trotz der Verwendung von `set.seed()` zur Steuerung des Zufallszahlengenerators (RNG) ergab derselbe Code auf verschiedenen Maschinen unterschiedliche Ergebnisse aufgrund von Gleitkomma-Rundungsfehlern in `MASS::mvrnorm()`. Eine eingehende Analyse ergab, dass `MASS::mvrnorm()`, das die Eigenwertzerlegung verwendet, sehr empfindlich auf kleine Eingangsstörungen reagiert und möglicherweise die Vorzeichen von Eigenvektoren umkehrt, was die Reproduzierbarkeit beeinträchtigt. `mvtnorm::rmvnorm()`, das die Cholesky-Zerlegung verwendet, erwies sich als robuster. Die Autorin empfiehlt die Verwendung von `mvtnorm::rmvnorm()` mit `method = "chol"` zur Verbesserung der Reproduzierbarkeit.

Entwicklung Gleitkommaarithmetik