Comment puis-je générer manuellement un nombre aléatoire à partir d'une distribution donnée, comme par exemple, 10 réalisations à partir de la distribution normale standard?
30
Comment puis-je générer manuellement un nombre aléatoire à partir d'une distribution donnée, comme par exemple, 10 réalisations à partir de la distribution normale standard?
Réponses:
Si «manuellement» inclut «mécanique», vous disposez de nombreuses options. Pour simuler une variable de Bernoulli avec la moitié de probabilité, nous pouvons lancer une pièce: pour les queues, 1 pour les têtes. Pour simuler une distribution géométrique, nous pouvons compter le nombre de lancers de pièces nécessaires avant d'obtenir des têtes. Pour simuler une distribution binomiale, nous pouvons lancer notre pièce n fois (ou simplement lancer n pièces) et compter les têtes. La «quinconce» ou la «machine à grains» ou la «boîte de Galton» est une alternative plus cinétique - pourquoi ne pas en mettre une en action et voir par vous - même ? Il semble qu'il n'y ait pas de "pièce pondérée"0 1 n n mais si l'on souhaite faire varier le paramètre de probabilité de notre variable de Bernoulli ou binomiale à des valeurs autres que , l'aiguille de Georges-Louis Leclerc, le comte de Buffon nous le permettra. Pour simuler la distribution uniforme discrète sur { 1 , 2 , 3 , 4 , 5 , 6 }, nous lançons un dé à six faces. Les fans de jeux de rôle auront rencontré des dés plus exotiques , par exemple des dés tétraédriques à échantillonner uniformément parmi { 1 , 2 , 3 , 4 }p=0.5 {1,2,3,4,5,6} {1,2,3,4} , tandis qu'avec une roulette ou une roulette, on peut aller encore plus loin. ( Crédit d'image )
Devrions-nous être fous de générer des nombres aléatoires de cette manière aujourd'hui, alors qu'il n'y a qu'une commande sur une console d'ordinateur - ou, si nous avons une table appropriée de nombres aléatoires disponibles, une incursion dans les coins les plus poussiéreux de la bibliothèque? Eh bien peut-être, bien qu'il y ait quelque chose d'agréablement tactile dans une expérience physique. Mais pour les personnes travaillant avant l'ère de l'informatique, en fait avant les tables de nombres aléatoires à grande échelle largement disponibles (dont plus tard), la simulation manuelle de variables aléatoires avait une importance plus pratique. Quand Buffon a enquêté sur le paradoxe de Saint-Pétersbourg- le célèbre jeu de lancer de pièces où le montant que le joueur gagne double chaque fois qu'une tête est lancée, le joueur perd sur les premières queues, et dont le gain attendu est contre-intuitivement infini - il avait besoin de simuler la distribution géométrique avec . Pour ce faire, il semble qu'il ait engagé un enfant pour lancer une pièce de monnaie pour simuler 2048 parties du jeu de Saint-Pétersbourg, enregistrant le nombre de lancers avant la fin du jeu. Cette distribution géométrique simulée est reproduite dans Stigler (1991) :p=0.5
Dans le même essai où il a publié cette enquête empirique sur le paradoxe de Saint-Pétersbourg, Buffon a également présenté la fameuse " aiguille de Buffon ". Si un avion est divisé en bandes par des lignes parallèles distantes d'une distance , et qu'une aiguille de longueur l ≤ d y tombe, la probabilité que l'aiguille croise l'une des lignes est de 2 ld l≤d .2lπd
L'aiguille de Buffon peut donc être utilisée pour simuler une variable aléatoire ouX∼Binôme(n,2lX∼Bernoulli(2lπd) , et nous pouvons ajuster la probabilité de réussite en modifiant la longueur de nos aiguilles ou (peut-être plus commodément) la distance à laquelle nous gouvernons les lignes. Une autre utilisation des aiguilles de Buffon est une manière terriblement inefficace de trouver une approximation probabiliste pourπ. L'image (crédit) montre 17 allumettes, dont 11 traversent une ligne. Lorsque la distance entre les lignes réglées est définie égale à la longueur de l'allumette, comme ici, la proportion attendue des allumettes croisées est de2X∼ Binôme ( n , 2 lπré) π et donc on peut estimer π comme l'inverse de la fraction observée deux fois: ici on obtient π =2⋅172π π^ . En 1901Mario Lazzarini prétendu avoir effectué l'expérienceutilisantaiguilles2,5 cm aveclignes espacées3 cm, et après 3408 lancers obtenus π =355π^= 2 ⋅ 1711≈ 3.1 . Il s'agit d'un rationnel bien connu deπ, précis à six décimales près. Badger (1994) fournit des preuves convaincantes que cela était frauduleux, notamment pour être sûr à 95% de la précision de six décimales en utilisant l'appareil de Lazzarini, il faut jeter 134 trillions d'aiguilles qui sapent la patience! Il est certain que l'aiguille de Buffon est plus utile comme générateur de nombres aléatoires que comme méthode d'estimation deπ.π^= 355113 π π
Jusqu'à présent, nos générateurs ont été discrètement décevants. Et si nous voulons simuler une distribution normale? Une option consiste à obtenir des chiffres aléatoires et à les utiliser pour former de bonnes approximations discrètes à une distribution uniforme sur , puis à effectuer des calculs pour les transformer en écarts normaux aléatoires. Une roulette ou une roulette peut donner des chiffres décimaux de zéro à neuf; un dé peut générer des chiffres binaires; si nos compétences arithmétiques peuvent faire face à une base plus funky, même un ensemble de dés standard ferait l'affaire. D'autres réponses ont couvert ce type d'approche basée sur la transformation plus en détail; Je remets toute discussion à ce sujet jusqu'à la fin.[ 0 , 1 ]
À la fin du XIXe siècle, l'utilité de la distribution normale était bien connue, et il y avait donc des statisticiens désireux de simuler des écarts normaux aléatoires. Inutile de dire que de longs calculs manuels n'auraient été appropriés que pour mettre en place le processus de simulation en premier lieu. Une fois cela établi, la génération des nombres aléatoires devait être relativement rapide et facile. Stigler (1991) énumère les méthodes employées par trois statisticiens de cette époque. Tous recherchaient des techniques de lissage: les écarts normaux aléatoires présentaient un intérêt évident, par exemple pour simuler une erreur de mesure qui devait être lissée.
Le remarquable statisticien américain Erastus Lyman De Forest était intéressé par le lissage des tables de mortalité et a rencontré un problème qui nécessitait la simulation des valeurs absolues des écarts normaux. Dans ce qui deviendra un thème courant, De Forest échantillonnait vraiment à partir d'une distribution semi-normale . De plus, plutôt que d'utiliser un écart type de un (le nous avons l'habitude d'appeler "standard"), De Forest voulait une "erreur probable" (écart médian) de un. C'était la forme donnée dans le tableau de "Probabilité d'erreurs" dans les annexes de "Un manuel d'astronomie sphérique et pratique, Volume II" parZ∼ N( 0 , 12) William Chauvenet . De ce tableau, De Forest a interpolé les quantiles d'une distribution semi-normale, de à p = 0,995 , qu'il considérait comme des "erreurs d'égale fréquence".p = 0,005 p = 0,995
Si vous souhaitez simuler la distribution normale, à la suite de De Forest, vous pouvez imprimer ce tableau et le découper. De Forest (1876) a écrit que les erreurs "ont été inscrites sur 100 morceaux de carton de taille égale, qui ont été secoués dans une boîte et tous dessinés un par un".
L'astronome et météorologue Sir George Howard Darwin (fils du naturaliste Charles) a donné une tournure différente aux choses, en développant ce qu'il a appelé une "roulette" pour générer des écarts normaux aléatoires. Darwin (1877) décrit comment:
"Index" doit être lu ici comme "pointeur" ou "indicateur" (cf. "index"). Stigler souligne que Darwin, comme De Forest, utilisait une distribution cumulative semi-normale autour du disque. Par la suite, l'utilisation d'une pièce de monnaie pour attacher un signe au hasard en fait une distribution normale complète. Stigler note qu'il n'est pas clair comment finement l'échelle a été graduée, mais suppose que l'instruction d'arrêter manuellement le disque à mi-rotation était "de diminuer le biais potentiel vers une section du disque et d'accélérer la procédure".
Sir Francis Galton , d'ailleurs un demi-cousin de Charles Darwin, a déjà été mentionné à propos de son quinconce. Bien que cela simule mécaniquement une distribution binomiale qui, par le théorème de De Moivre – Laplace présente une ressemblance frappante avec la distribution normale (et est parfois utilisée comme aide pédagogique pour ce sujet), Galton a en fait produit un schéma beaucoup plus élaboré quand il a souhaité échantillon d'une distribution normale. Encore plus extraordinaire que les exemples non conventionnels en haut de cette réponse, Galton a développé des dés distribués normalement- ou plus précisément, un ensemble de dés qui produisent une excellente approximation discrète d'une distribution normale avec une déviation médiane. Ces dés, datant de 1890, sont conservés dans la collection Galton de l'University College London.
Dans un article de Nature en 1890, Galton écrivait:
Le laboratoire de Raazesh Sainudiin pour les expériences statistiques mathématiques comprend un projet étudiant de l'Université de Canterbury, NZ, reproduisant les dés de Galton . Le projet comprend une enquête empirique consistant à lancer les dés plusieurs fois (y compris un CDF empirique qui semble rassurant "normal") et une adaptation des scores des dés afin qu'ils suivent la distribution normale standard. En utilisant les scores originaux de Galton, il existe également un graphique de la distribution normale discrétisée que les scores des dés suivent réellement.
À grande échelle, si vous êtes prêt à étendre le "mécanique" à l'électrique, notez que l'épopée A Million Random Digits de RAND avec 100 000 déviations normales était basée sur une sorte de simulation électronique d'une roue de roulette. Du rapport technique (par George W. Brown, à l'origine juin 1949) nous trouvons:
Les références
Badger, L. (1994). " La Lucky Approximation de π de Lazzarini ". Magazine de mathématiques . Association mathématique d'Amérique. 67 (2): 83–91.
Darwin, GH (1877). " Sur les mesures faillibles de quantités variables et sur le traitement des observations météorologiques. " Philosophical Magazine , 4 (22), 1–14
De Forest, EL (1876). Interpolation et ajustement des séries . Tuttle, Morehouse et Taylor, New Haven, Conn.
Galton, F. (1890). "Dés pour des expériences statistiques". Nature , 42 , 13-14
Stigler, SM (1991). "Simulation stochastique au XIXe siècle". Statistical Science , 6 (1), 89-97.
la source
Par exemple, sur mon système d'exploitation Linux, je peux vérifier
L'utilisation du CLT pour approximer la normalité n'est certainement pas une méthode que je conseillerais car (1) vous avez toujours besoin d'autres variables pour alimenter la moyenne, vous pouvez donc aussi utiliser des uniformes dans l'algorithme de Box-Müller, et (2) la précision augmente assez lentement avec le nombre de simulations. Surtout si vous utilisez une variable aléatoire discrète comme le résultat d'un dé, même avec plus de six faces . Pour citer Thomas et al. (2007), une enquête sur les avantages et les inconvénients des générateurs aléatoires gaussiens:
Voici une expérience rapide pour illustrer le problème: j'ai généré 100 fois la moyenne de 30 résultats de décès:
dies=apply(matrix(sample(1:6,30*100,rep=TRUE),ncol=30),1,mean)
puis normalisé ces moyennes en moyenne zéro - la variance un varie
stdies=(dies-3.5)/sqrt(35/12/30)
et a examiné l'ajustement normal [ou son absence] de cet échantillon:
dies
76/30
122/30
l'ajustement est aussi bon que prévu pour un échantillon normal de taille 200 (il suffit d'en tracer un autre pour un véritable échantillon normal
norma=rnorm(100)
):comme le montre un test de Kolmogorov-Smirnov:
la source
Ce n'est pas exactement aléatoire, mais il devrait être assez proche, car vous semblez vouloir une expérience approximative.
Utilisez votre téléphone pour configurer un chronomètre. Au bout de 10 bonnes secondes, arrêtez-le (plus vous attendez, plus vous vous approchez d'un résultat vraiment "aléatoire", mais 10 secondes suffisent). Prenez les derniers chiffres (par exemple, 10,67 secondes vous donnera 67). Appliquez le tableau des centiles pour la distribution normale. Dans cet exemple, il vous suffit de rechercher 0,67 et vous trouverez le numéro. Dans ce cas, votre valeur est d'environ 0,45. Ce n'est pas parfaitement précis, mais cela vous donnera une estimation solide.
Si vous roulez en dessous de 50, faites simplement 100- [Votre résultat] et utilisez le tableau. Votre résultat sera le même, avec un signe moins, en raison de la symétrie de N (0,1).
la source
Pourquoi? Laisser
Normalisant,
on obtient une variable aléatoire avec variance unitaire
la source
Il convient de noter qu'une fois que vous pouvez générer un uniforme (0,1), vous pouvez générer n'importe quelle variable aléatoire pour laquelle l'inverse cdf est calculable en branchant simplement la variable aléatoire uniforme dans le CDF inverse.
Alors, comment peut-on calculer un uniforme (0,1) manuellement? Eh bien, comme mentionné par @Silverfish, il existe une variété de dés utilisés par les joueurs de RPG traditionnels. Dont l'un est un dé à dix faces. En supposant qu'il s'agit d'un dé juste, nous pouvons maintenant générer un uniforme discret (0, 9).
On peut donc s'approcher très près d'un uniforme continu (0,1) en l'approximant avec une distribution uniforme discrète finement quadrillée avec quelques dés à 10 faces. Cela peut ensuite être branché dans un CDF inverse pour produire la variable aléatoire d'intérêt.
la source