Zufallszahlenanalyse

8

Wie kann ich nach einer Reihe zufällig generierter Daten herausfinden, wie zufällig es tatsächlich ist? Ist R-lang ein gutes Werkzeug für dieses Matlab? Welche anderen Fragen können diese Tools zu zufällig generierten Daten beantworten? Gibt es ein anderes Werkzeug dafür?

    
rook 26.10.2010, 20:34
quelle

6 Antworten

10

Die DieHarder-Testbatterie von Robert G. Brown --- die neu implementiert und erweitert wird das alte DIEHARD von Marsaglia et al. wurde in das R-Paket RdieHarder eingepackt, mit dem du anfangen könntest.

Beachten Sie, dass RDieHarder Versionen ihre spezielle Übereinstimmung benötigen DieHarder veröffentlicht - und wir sind noch nicht dort für die neueste Entwicklungsversion der letzteren.

Bearbeiten Auch für die Untergruppe der kryptografischen Tests sollte die NIST-Suite (die in DieHarder enthalten ist) geeignet sein, da sie genau dafür entworfen wurde.

    
Dirk Eddelbuettel 26.10.2010, 20:38
quelle
5

Zuerst müssen Sie entscheiden, welche Art von Zufälligkeit Sie testen. Haben Sie eine gleichmäßige Verteilung innerhalb einiger Bereiche im Sinn? Das ist normalerweise das, was Leute im Sinn haben, obwohl Sie vielleicht eine andere Art von Zufälligkeit haben, wie eine normale Verteilung.

Sobald Sie eine Kandidatenverteilung haben, können Sie die Güte der Anpassung an diese Verteilung testen. Der Kolmogorov-Smirnov-Test ist ein guter Allzwecktest. Ich glaube, es heißt ks.test in R. Aber ich glaube auch, dass es unterschiedliche Werte annimmt, das könnte ein Problem sein, wenn Sie von einem so kleinen Bereich von Werten abtasten, dass derselbe Wert mehr als einmal auftaucht.

S. Lott erwähnte Knuths seminumerische Algorithmen in den Kommentaren. Dieses Buch hat eine gute Einführung in den Chi-Quadrat-Test und die Kolmogorov-Smirnov-Tests für die gute Passform.

Wenn Sie vermuten, dass Sie einheitliche Zufallswerte haben, ist der von Dirk Eddelbüttel erwähnte DIEHARD-Test ein Standardtest.

    
John D. Cook 26.10.2010 22:10
quelle
4

Laut Wikipedia ( Randomness ):

  

Die zentrale Idee ist, dass eine Kette von   Bits sind zufällig, wenn und nur wenn es ist   kürzer als jedes Computerprogramm, das   kann diese Schnur produzieren (Kolmogorov   Zufälligkeit) - das bedeutet, dass zufällig   Strings sind solche, die nicht sein können   komprimiert.

Speichern Sie den Zufallszahlenstrom daher in einer Datei und komprimieren Sie ihn mit Ihrem Lieblingswerkzeug (zip, rar, ...). Das Komprimierungsverhältnis kann als Maß für die Zufälligkeit interpretiert werden ... Noch besser würde ich es als eine relative Punktzahl verwenden, um die Zufälligkeit zweier Datenreihen zu vergleichen.

    
Amro 26.10.2010 20:58
quelle
3

Ich empfehle das Kapitel 10 von Schöne Tests : Testen eines Zufallszahlengenerators. Es ist ein wenig zugänglicher als die meisten Texte zu diesem Thema. Vielleicht, wenn wir nett sind, könnte der Autor dieses Kapitels, John Cook, vorbeikommen und seine Eingabe geben.

    
JD Long 26.10.2010 20:54
quelle
1

Es gibt wie immer eine Toolbox .

    
zellus 26.10.2010 20:37
quelle
1

Für die Theorie ist die oben erwähnte Referenz von Knuth nützlich und um Amros Antwort zu verknüpfen, gibt es Arbeiten von Li & amp; Vitanyi, die sich hier bezieht. Link-Text

>     
Vishal Belsare 26.10.2010 21:27
quelle

Tags und Links