Infierno de punto flotante: por qué tu muestreo normal multivariado en R no es reproducible
Esta publicación detalla el proceso de depuración de la autora al ayudar a sus colegas a resolver un problema de reproducibilidad en su código R que involucra el muestreo de distribución normal multivariada. El problema no surgió de errores en R o en el paquete MASS, sino de las peculiaridades inherentes de la aritmética de punto flotante. A pesar de usar `set.seed()` para controlar el generador de números aleatorios (RNG), el mismo código produjo resultados diferentes en diferentes máquinas debido a errores de redondeo de punto flotante en `MASS::mvrnorm()`. Un análisis profundo reveló que `MASS::mvrnorm()`, usando descomposición de eigenvectores, es altamente sensible a pequeñas perturbaciones de entrada, lo que potencialmente invierte los signos de los eigenvectores y rompe la reproducibilidad. `mvtnorm::rmvnorm()`, que utiliza la descomposición de Cholesky, resulta más robusta. La autora recomienda usar `mvtnorm::rmvnorm()` con `method = "chol"` para mejorar la reproducibilidad.