Ich suche nach einer Möglichkeit, Zufallszahlen zu generieren , die gleichmäßig verteilt zu sein scheinen - und jeder Test zeigt, dass sie einheitlich sind - mit der Ausnahme, dass sie gleichmäßiger verteilt sind als echte einheitliche Daten .
Das Problem, das ich mit den "wahren" einheitlichen Zufällen habe, ist, dass sie sich gelegentlich zusammenballen. Dieser Effekt ist bei einer geringen Stichprobengröße stärker. Grob gesagt: Wenn ich in U [0; 1] zwei Gleichförmige Zufälle zeichne, liegt die Wahrscheinlichkeit bei 10%, dass sie in einem Bereich von 0,1 liegen, und bei 1%, dass sie in einem Bereich von 0,01 liegen.
Daher suche ich nach einer guten Möglichkeit, um Zufallszahlen zu generieren, die gleichmäßiger verteilt sind als gleichmäßige Zufälle .
Anwendungsbeispiel: Angenommen, ich mache ein Computerspiel und möchte einen Schatz nach dem Zufallsprinzip auf einer Karte platzieren (ohne Rücksicht auf irgendetwas anderes). Ich möchte nicht, dass der Schatz an einem Ort ist, er sollte überall auf der Karte sein. Wenn ich mit einheitlichen Zufällen beispielsweise 10 Objekte platziere, sind die Chancen nicht so gering, dass es 5 oder so nahe beieinander gibt. Dies kann einem Spieler einen Vorteil gegenüber einem anderen verschaffen. Denken Sie an Minensucher, die Chancen stehen gut, dass Sie wirklich Glück haben und mit einem Klick gewinnen.
Ein sehr naiver Ansatz für mein Problem besteht darin, die Daten in ein Raster aufzuteilen. Solange die Anzahl groß genug ist (und Faktoren hat), kann man auf diese Weise eine zusätzliche Gleichförmigkeit erzwingen. Anstatt also 12 Zufallsvariablen aus U [0; 1] zu ziehen, kann ich 6 aus U [0; 0,5] und 6 aus U [0,5; 1] oder 4 aus U [0; 1/3] + 4 ziehen von U [1/3; 2/3] + 4 von U [2/3; 1].
Gibt es eine bessere Möglichkeit, diese zusätzliche Gleichmäßigkeit in die Uniform zu bringen? Es funktioniert wahrscheinlich nur für Batch-Zufälle (beim Zeichnen eines einzelnen Zufalls muss ich natürlich den gesamten Bereich berücksichtigen). Insbesondere kann ich die Datensätze danach erneut mischen (es sind also nicht die ersten vier ab dem ersten Drittel).
Wie wäre es inkrementell? Also ist die erste auf U [0; 1], dann zwei von jeder Hälfte, eine von jeder dritten, eine von jeder vierten? Wurde dies untersucht und wie gut ist es? Möglicherweise muss ich vorsichtig sein, um unterschiedliche Generatoren für x und y zu verwenden, damit sie nicht korrelieren (das erste xy befindet sich immer in der unteren Hälfte, das zweite in der linken Hälfte und im unteren Drittel, das dritte im mittleren Drittel und im oberen Drittel. Es ist also zumindest eine zufällige Bin-Permutation erforderlich, und auf lange Sicht wird es wohl zu gleichmäßig sein.
Gibt es als Nebenknoten einen bekannten Test, ob eine Verteilung zu gleichmäßig ist, um wirklich gleichmäßig zu sein? Testen Sie also "echte Uniform" im Vergleich zu "jemand hat die Daten durcheinander gebracht und die Artikel gleichmäßiger verteilt". Wenn ich mich richtig erinnere, kann Hopkins Statistic dies messen, aber kann es auch zum Testen verwendet werden? Auch ein etwas inverser KS-Test: Liegt die größte Abweichung unter einem bestimmten erwarteten Schwellenwert, sind die Daten zu gleichmäßig verteilt?
quelle
Antworten:
Ja , es gibt viele Möglichkeiten, eine Folge von Zahlen zu erzeugen, die gleichmäßiger verteilt sind als zufällige Uniformen. Tatsächlich gibt es ein ganzes Feld , das dieser Frage gewidmet ist. es ist das Rückgrat von Quasi-Monte Carlo (QMC). Im Folgenden finden Sie eine kurze Einführung in die absoluten Grundlagen.
Gleichmäßigkeit messen
Es gibt viele Möglichkeiten, dies zu tun, aber die gängigste Methode hat einen starken, intuitiven, geometrischen Geschmack. Angenommen, wir wollen Punkte x 1 , x 2 , ... , x n in [ 0 , 1 ] d für eine positive ganze Zahl d erzeugen . Definiere D n : = sup R ∈ Rn x1,x2,…,xn [0,1]d d
Wo R ein Rechteck ist [ a 1 , b 1 ] × ⋯ × [ a d , b d ] in [ 0 , 1 ] d , so dass 0 ≤ a i ≤ b i ≤ 1 , und R ist der Satz alle solchen Rechtecke . Der erste TermInnern des Moduls ist der „beobachtet“ Anteil der Punkte innerhalb R und die zweiten Term ist das Volumen der R , v o
Die Größe wird oft als Diskrepanz oder extreme Diskrepanz der Punktmenge ( x i ) bezeichnet . Intuitiv finden wir das "schlechteste" Rechteck R, in dem der Anteil der Punkte am stärksten von dem abweicht, was wir bei perfekter Gleichförmigkeit erwarten würden.Dn (xi) R
Dies ist in der Praxis unhandlich und schwer zu berechnen. In den meisten Fällen ziehen es die Menschen zur Arbeit mit dem Stern Diskrepanz , Der einzige Unterschied ist die Menge A, über die das Supremum genommen wird. Es ist die Menge derverankertenRechtecke (am Ursprung), dh wo a 1 = a 2 = ⋯ = a d = 0 .
Lemma : für alle n , d . Beweis . Die linke Hand gebunden ist offensichtlich , da A ⊂ R . Die rechte Schranke folgt, weil jedes R ∈ R über Vereinigungen, Schnittpunkte und Komplemente von nicht mehr als 2 d verankerten Rechtecken (dh in A ) zusammengesetzt werden kann.D⋆n≤ Dn≤ 2dD⋆n n d
EIN⊂ R R ∈ R 2d EIN
Wir sehen also, dass und D ⋆ n in dem Sinne äquivalent sind, dass wenn einer so klein ist, wie n wächst, der andere es auch ist. Hier ist ein (Cartoon-) Bild, das Kandidatenrechtecke für jede Diskrepanz zeigt.Dn D⋆n n
Beispiele für "gute" Sequenzen
Sequenzen mit nachweislich geringer Sterndiskrepanz werden häufig als Sequenzen mit geringer Diskrepanz bezeichnet .D⋆n
van der Corput . Dies ist vielleicht das einfachste Beispiel. Für werden die Van-der-Corput-Folgen gebildet, indem die ganze Zahl i binär erweitert wird und dann die Ziffern um den Dezimalpunkt "wiedergegeben" werden. Formal geschieht dies mit der Radikalumkehrfunktion in der Base b , ϕ b ( i ) = ∞ ∑ k = 0 a k b - k - 1d= 1 ich b
wobei i = ∑ ∞ k = 0 a k b k und a k die Ziffern in derErweiterungder Basis b von i sind . Diese Funktion bildet auch die Basis für viele andere Sequenzen. Zum Beispiel ist 41 in der Binärdatei 101001, und so ist a 0 = 1 , a 1 = 0 , a 2 = 0 , a 3 = 1 , a 4 = 0
Man beachte , dass , da das niedrigstwertige Bit der zwischen oszilliert 0 und 1 , die Punkte x i für ungerade i sind in [ 1 / 2 , 1 ) , wohingegen die Punkte x i für noch i sind in ( 0 , 1 / 2 ) .ich 0 1 Xich ich [ 1 / 2 , 1 ) Xich ich ( 0 , 1 / 2 )
Halton-Sequenzen . Zu den beliebtesten klassischen Sequenzen mit geringer Diskrepanz gehören Erweiterungen der Van-der-Corput-Sequenz auf mehrere Dimensionen. Sei die j kleinste Primzahl. Dann ist der i- te Punkt x i der d- dimensionalen Halton-Sequenz x i = ( ϕ p 1 ( i ) , ϕ p 2 ( i ) , … , ϕ p d ( i ) )pj j ich Xich d
Für niedrige d funktionieren diese recht gut, haben aberProbleme in höheren Dimensionen.
Halton-Sequenzen erfüllen . Sie sind auch deshalb schön, weil sie dahingehend erweiterbar sind, dass die Konstruktion der Punkte nicht von der Wahl der Länge der Sequenz n im Voraus abhängt .D⋆n= O ( n- 1( logn )d) n
Hammersley-Sequenzen . Dies ist eine sehr einfache Modifikation der Halton-Sequenz. Wir verwenden stattdessen Vielleicht überraschend ist der Vorteil, dass sie eine bessere Sternendifferenz D ⋆ n = O ( n - 1 ( log n ) d - 1 ) haben .
Hier ist ein Beispiel für die Halton- und Hammersley-Sequenzen in zwei Dimensionen.
Hier ist ein Beispiel, bei dem die blauen Punkte die ursprünglichen Punkte und die roten Punkte die gedrehten Punkte sind, die durch Linien verbunden sind (und gegebenenfalls umbrochen dargestellt sind).
Standard Referenzen
Die Monographie von Niederreiter (1992) und der Text von Fang und Wang (1994) sind Orte, an denen man sich weiter auseinandersetzen kann.
quelle
Ein Weg, dies zu tun, wäre, einheitliche Zufallszahlen zu generieren, dann mit einer beliebigen Methode auf "Nähe" zu testen und dann zufällige Gegenstände zu löschen, die zu nahe bei anderen sind, und einen anderen Satz zufälliger Uniformen zu wählen, um diese auszugleichen.
Würde eine solche Verteilung jede Homogenitätsprüfung bestehen? Ich hoffe sicher nicht! Es ist nicht mehr gleichmäßig verteilt, es ist jetzt eine andere Verteilung.
Ein nicht intuitiver Aspekt der Wahrscheinlichkeit ist, dass der Zufall klumpig ist. Es gibt mehr zufällige Datenläufe, als die Leute vermuten. Ich glaube, Twerski hat einige Nachforschungen angestellt (er hat jedoch so viel Nachforschungen angestellt, dass es schwer fällt, sich daran zu erinnern).
quelle
Dies ist als ein "Hard-Core" -Poisson-Point-Prozess bekannt, der in den 1970er-Jahren von Brian Ripley so genannt wurde. Das heißt, Sie möchten, dass es zufällig ist, aber Sie möchten nicht, dass Punkte zu nahe beieinander liegen. Der "harte Kern" kann als Pufferzone betrachtet werden, um die andere Punkte nicht eindringen können.
Stellen Sie sich vor, Sie zeichnen die Position einiger Autos in einer Stadt auf - aber Sie zeichnen nur den Punkt in der nominalen Mitte des Autos auf. Während sie auf der Straße sind, können sich keine zwei Punktepaare annähern, da die Punkte durch den "harten Kern" der Karosserie geschützt werden - die mögliche Superposition in Parkhäusern werden wir ignorieren :-)
Es gibt Verfahren zum Generieren solcher Punktprozesse - eine Möglichkeit besteht darin, Punkte einheitlich zu generieren und zu nahe beieinander liegende Punkte zu entfernen!
Für einige Details zu solchen Prozessen wird zum Beispiel darauf verwiesen
quelle
In Bezug auf die inkrementelle Generierung suchen Sie im Wesentlichen eine Reihe mit einer moderat negativen Autokorrelation. Ich bin mir nicht sicher, wie ich das am besten machen soll, da ich nur sehr wenig Erfahrung mit Zeitreihen habe, aber ich vermute, dass es dafür bereits Algorithmen gibt.
quelle
Ein einfacher Weg, solche Vektoren zu erzeugen, ist die Gibbs-Abtastung.
quelle