usando software simulación simulacion riesgos riesgo resueltos real para monte metodo libre ejercicios distribucion datos cálculo caso carlo caracteristicas aplicación analisis excel vba excel-vba statistics

software - ¿Qué tan buena es la función RAND() en Excel para la simulación de Monte Carlo?



simulación de montecarlo a un caso real (5)

Dado que este es el principal resultado en Google por "qué tan buena es la función RAND () de Excel", vale la pena actualizar las respuestas para versiones posteriores de Excel.

Este documento de Guy Melard " Sobre la precisión de los procedimientos estadísticos en Microsoft Excel 2010 " probó la función RAND () en Excel 2010 y descubrió que mejoró sustancialmente en 2007 o 2003. Microsoft cambió de un generador de Wichmann y Hill incorrecto (2007 / 2003) al algoritmo Mersenne Twister, que tiene una longitud de ciclo mucho mayor.

Los autores de ese artículo lo analizaron en las pruebas de aleatoriedad "Small Crush", "Crush" y "Big Crush" y pasaron casi todas las pruebas.

Entonces, aunque ciertamente no es lo mismo que los números aleatorios verdaderos, la función RAND () en Excel 2010, y probablemente las versiones más nuevas, ya no pueden considerarse terribles.

Sin embargo, se debe tener en cuenta que Excel 2010 todavía utiliza dos algoritmos completamente diferentes para el generador de números aleatorios de VBA y el RNG que se encuentra en el kit de herramientas de análisis de datos. Según Melard, ambos son todavía terribles, y de hecho, el VBA usa el mismo número de semilla cada vez, así que produce los mismos números.

Mis mayores quejas con los números aleatorios en Excel son

  • No se puede establecer la semilla, por lo que los números no son reproducibles
  • Los números aleatorios se actualizan cada vez que pulsa Intro / Borrar, e incluso si configuras las opciones de cálculo en Manual, se actualizan cuando guardas el archivo de Excel.

Estoy implementando una simulación de Monte Carlo en 3 variables en Excel. He usado la función RAND () para muestrear distribuciones de Weibull (con largas colas). Las funciones aplicadas a las muestras son no lineales pero suaves (exp, ln, cos, etc.). El resultado para cada muestra es un pase / falla, y el resultado general es una probabilidad de falla.

También lo he implementado tanto con la integración numérica como con Monte Carlo en MathCad, obteniendo el mismo resultado en ambas ocasiones. MathCad utiliza (creo) un generador de números aleatorios de Mersenne Twister.

Mi hoja de cálculo de Excel está obteniendo resultados consistentemente diferentes (es decir, siempre más grande). He comprobado que las ecuaciones son las mismas.

¿Qué generador de números aleatorios utiliza Excel y qué tan bueno es? ¿Es posible que esta sea la fuente de mi problema? He asumido que las implementaciones de Excel de exp, cos, etc. están bien.

Finalmente, ¿hay una manera de implementar Monte Carlo para mitigar las propiedades deficientes (conocidas) de un generador de números aleatorios en particular? (He oído hablar de cadenas de Markov, paseos aleatorios, etc. pero realmente no sé mucho sobre ellas)

Muchas gracias.



McCullough (2008) publica un artículo sobre este tema sobre la precisión de los procedimientos estadísticos en Microsoft Excel 2007 (Estadísticas computacionales y análisis de datos).

Citando el artículo original:

El generador de números aleatorios siempre ha sido inadecuado. Con Excel 2003, Microsoft intentó implementar el generador Wichmann-Hill y no lo implementó correctamente. La versión corregida aparece en Excel 2007 pero esta corrección se realizó incorrectamente. Microsoft ha fallado dos veces en implementar correctamente la docena de líneas de código que constituyen el generador Wichmann-Hill; Esto es algo que cualquier estudiante universitario de informática debería poder hacer. El generador de números aleatorios de Excel no cumple los requisitos básicos para que un generador de números aleatorios se utilice con fines científicos:

  1. no se sabe si pasa las pruebas de aleatoriedad estándar, por ejemplo, las pruebas CRUSH de L''Ecuyer y Simard (2007) (superan las pruebas DIEHARD de Marsaglia (1996); consulte Altman y otros (2004) para una comparación);
  2. no se sabe que produzca números que sean aproximadamente independientes en un número moderado de dimensiones;
  3. tiene una duración de período desconocido; y
  4. No es reproducible.

Para una mayor discusión de estos puntos, vea el artículo que acompaña a McCullough (2008) ; El desempeño de Excel 2007 en esta área es inadecuado.


Paul Wilmott, en su libro de Finanzas Cuantitativas, simplemente suma los resultados de 12 llamadas a RAND () y resta 6 para una buena aproximación a una variable Normal. Rápido y sucio


RAND() es bastante aleatorio, pero para simulaciones de Monte Carlo, puede ser un poco demasiado aleatorio (a menos que estés haciendo pruebas de primalidad). La mayoría de las simulaciones de Monte Carlo solo requieren secuencias pseudoaleatorias y deterministas. Como parte de Excel Analysis RANDBETWEEN() puede ser todo lo que necesita para las secuencias pseudoaleatorias.