Les chiffres de statistiquement aléatoires?

33

Supposons que vous observiez la séquence:

7, 9, 0, 5, 5, 5, 4, 8, 0, 6, 9, 5, 3, 8, 7, 8, 5, 4, 0, 0, 6, 6, 4, 5, 3, 3, 7, 5, 9, 8, 1, 8, 6, 2, 8, 4, 6, 4, 1, 9, 9, 0, 5, 2, 0, 4, 5, 2, 8. ..

Quels tests statistiques appliqueriez-vous pour déterminer si cela est vraiment aléatoire? Pour info, ce sont les ième chiffres de . Ainsi, les chiffres de statistiquement aléatoires? Est-ce que cela dit quelque chose à propos de la constante ?π π πnπππ

entrez la description de l'image ici

Cam.Davidson.Pilon
la source
10
C'est une question intéressante et exaspérante. Tout étudiant ayant suivi un premier cours sur la probabilité théorique de la mesure peut facilement prouver que "presque tous" les nombres réels sont normaux . Mais très peu d’exemples explicites sont connus et, à ma connaissance (directe), la question n’a pas été réglée de toute façon pour aucune des "fameuses" constantes mathématiques irrationnelles.
cardinal
4
En connexion (stricte) avec le commentaire de @ cardinal: Numéro normal
6
Quel est le graphique? Il y a dix barres, étrangement espacées, et toutes avec des valeurs supérieures à 10%!
xan

Réponses:

15

Le US National Institute of Standard a mis au point une batterie de tests auxquels un générateur de nombres (pseudo-) aléatoires doit réussir pour être considéré comme adéquat, voir http://csrc.nist.gov/groups/ST/toolkit/rng/stats_tests. html . Il existe également des tests connus sous le nom de suite de tests Diehard , qui se chevauchent quelque peu avec les tests NIST. Les développeurs de progiciels statistiques Stata rapportent leurs résultats Diehard dans le cadre de leur processus de certification. J'imagine que vous pouvez prendre des blocs de chiffres deπ , par exemple, par groupes de 15 chiffres consécutifs, pour qu'ils soient comparables à la précision de type double , et exécuter ces batteries de tests sur les nombres ainsi obtenus.

StasK
la source
5

Répondez à la première de vos questions: "Quels tests appliqueriez-vous pour déterminer si cette [séquence] est vraiment aléatoire?"

Pourquoi ne pas le traiter comme une série temporelle et vérifier les corrélations automatiques? Voici du code R. Quelques données de test (1000 premiers chiffres):

digits_string="1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989"
digits=as.numeric(unlist(strsplit(digits_string,"")))

Vérifiez les comptes de chaque chiffre:

> table(digits)
digits
  0   1   2   3   4   5   6   7   8   9 
 93 116 103 102  93  97  94  95 101 106 

Puis convertissez-le en une série chronologique et exécutez le test Box-Pierce:

d=as.ts( digits )
Box.test(d)

qui me dit:

X-squared = 1.2449, df = 1, p-value = 0.2645

En règle générale, vous voudriez que la valeur p soit inférieure à 0,05 pour indiquer qu'il existe des corrélations automatiques.

Exécuter acf(d)pour voir les corrélations automatiques. Je n'ai pas inclus d'image ici car il s'agit d'un tableau plat, bien qu'il soit curieux que les plus grands décalages se situent à 11 et 22 ans. Exécuter acf(d,lag.max=40)pour montrer qu'il n'y a pas de pic à décalage = 33, et que c'était juste une coïncidence!


PS Nous pourrions comparer l’efficacité de ces 1000 chiffres de pi en effectuant les mêmes tests sur des nombres aléatoires réels.

probs=sapply(1:100,function(n){
    digits=floor(runif(1000)*10)
    bt=Box.test(ts(digits))
    bt$p.value
    })

Cela génère 1000 chiffres aléatoires, effectue le test et le répète 100 fois.

> summary(probs)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
0.006725 0.226800 0.469300 0.467100 0.709900 0.969900 
> sd(probs)
[1] 0.2904346

Donc, notre résultat était confortablement dans le premier écart-type, et pi charlatans comme un canard aléatoire. (J'ai utilisé set.seed(1)si vous voulez reproduire ces chiffres exacts.)

Darren Cook
la source
0

C'est une question étrange. Les chiffres ne sont pas aléatoires.

π

0.1212121212

πππ2222+1ππ

AdamO
la source
π
π
2
Je ne suis pas vraiment cette réponse. Oui, pi est fixe, mais la série de chiffres peut toujours se comporter comme une série de nombres aléatoires. Je ne vois pas comment 0,1212 ... représente l'aléatoire par une définition quelconque. Et comme vous le soulignez dans votre commentaire, le fait que pi contienne ou non une séquence de chiffres arbitraire a peu d'incidence sur le caractère aléatoire de ses chiffres. Alors pourquoi se concentrer sur ça?
Nucléaire Wang
π
@AdamO Vous ne pouvez faire cette prédiction que si vous savez à l'avance que le nombre que vous décrivez est pi, ce qui semble être de la triche. Les chiffres en 3.141592 n'indiquent pas que le chiffre suivant est 6; la seule façon de le savoir est que nous décrivons spécifiquement pi. Sauf si vous avez déjà calculé pi en N chiffres, il n'y a aucune raison de penser que le chiffre N sera un nombre particulier. Vous semblez impliquer qu'il n'y a pas de séquence aléatoire de nombres, car une fois que vous l'écrivez, c'est corrigé.
Nucléaire Wang