web-dev-qa-db-fra.com

Quelle est la qualité de la fonction Rand () dans Excel pour la simulation Monte Carlo?

J'implémente une simulation Monte Carlo à 3 variables dans Excel. J'ai utilisé la fonction Rand () pour échantillonner les distributions de Weibull (avec de longues queues). Les fonctions appliquées aux échantillons sont non linéaires mais lisses (exp, ln, cos, etc.). Le résultat pour chaque échantillon est un succès/un échec, et le résultat global est une probabilité d'échec.

J'ai également implémenté cela à la fois par l'intégration numérique et Monte Carlo dans MathCad, obtenant le même résultat les deux fois. MathCad utilise (je pense) un générateur de nombres aléatoires Mersenne Twister.

Mon tableur Excel génère des résultats toujours différents (c'est-à-dire toujours plus volumineux). J'ai vérifié les équations sont les mêmes.

Quel générateur de nombres aléatoires Excel utilise-t-il et quelle est sa qualité? Est-il possible que ce soit la source de mon problème? J'ai supposé que les implémentations Excel de exp, cos, etc. sont ok.

Enfin, existe-t-il un moyen d'implémenter Monte Carlo pour atténuer les mauvaises propriétés (connues) d'un générateur de nombres aléatoires particulier? (J'ai entendu parler de chaînes de Markov, de promenades aléatoires, etc., mais je n'y connais pas grand chose)

Merci beaucoup.

21
Aaron Lockey

McCullough (2008) a rédigé un article de journal sur ce sujet: Sur l’exactitude des procédures statistiques dans Microsoft Excel 2007 (Statistiques de calcul et analyse des données)

Citant l'article original:

Le générateur de nombres aléatoires a toujours été Insuffisant. Avec Excel 2003, Microsoft a tenté d’implémenter le générateur Wichmann – Hill et n’a pas réussi à De l’implémenter correctement. La version fixed Apparaît dans Excel 2007 mais ce fix a été mal effectuée. Deux fois, Microsoft n'a pas réussi à implémenter correctement Les douze lignes de code qui Constituent le générateur de Wichmann – Hill ; C’est quelque chose que devrait être capable de faire en informatique. Le générateur de nombres aléatoires Excel ne remplit pas les exigences de base Pour un générateur de nombres aléatoires À utiliser à des fins scientifiques : 

  1. par exemple, les tests CRUSH de L'Ecuyer et de Simard (2007) (ils remplacent les tests de Marsaglia (1996) DIEHARD - voir Altman et al. (2004) pour une comparaison );
  2. on ne sait pas produire de nombres approximativement indépendants dans un nombre modéré de dimensions; 
  3. sa période est inconnue; et
  4. ce n'est pas reproductible.

Pour un examen plus approfondi de ces points, voir l’article ci-joint De McCullough (2008) ; les performances d'Excel 2007 dans ce domaine sont insuffisantes.

17
rcs

Dans la mesure où il s’agit du meilleur résultat obtenu par Google pour "quelle est la qualité de la fonction Rand () d'Excel", il est utile de mettre à jour les réponses pour les versions ultérieures d'Excel

Cet article de Guy Melard " Sur l’exactitude des procédures statistiques dans Microsoft Excel 2010 " a testé la fonction Rand () dans Excel 2010 et a constaté une amélioration substantielle par rapport à 2007 ou 2003. Microsoft a changé de Wichmann et Hill incorrect générateur (2007/2003) à l’algorithme de Mersenne Twister, qui a une durée de cycle beaucoup plus longue.

Les auteurs de cet article l'ont analysé de manière aléatoire au moyen de tests "Small Crush", "Crush" et "Big Crush", qui ont passé presque tous les tests.

Ainsi, bien que ce ne soit certainement pas identique aux nombres aléatoires vrais, la fonction Rand () dans Excel 2010, et sans doute les versions les plus récentes, ne peut plus être considérée comme terrible.

Il convient toutefois de noter qu'Excel 2010 utilise toujours deux algorithmes complètement différents pour le générateur de nombres aléatoires VBA et le générateur de ressources aléatoires figurant dans la boîte à outils d'analyse de données. Selon Melard, les deux sont toujours terribles et, en fait, la VBA utilise le même numéro de départ à chaque fois et produit donc les mêmes numéros.

Mes plus grandes plaintes avec les nombres aléatoires dans Excel sont

  • Vous ne pouvez pas définir la graine, donc les chiffres ne sont pas reproductibles
  • Les nombres aléatoires sont mis à jour chaque fois que vous appuyez sur entrée/suppression, et même si vous définissez les options de calcul sur Manuel, ils sont toujours mis à jour lorsque vous enregistrez le fichier Excel.
22
Fairly Nerdy

Il existe des produits commerciaux pour cela. Google se présente deux avant que je ne me lasse de regarder

http://www.mathwave.com/articles/random-numbers-Excel-worksheets.html

http://www.ozgrid.com/Services/Excel-random-number-generator.htm

0
S.Lott