2017-10-28 2 views
2

ich herauszufinden versuche, wie die set.seed() Funktion in R.Was der wahre Unterschied zwischen set.seed (n) und set.seed (n + 1)

arbeitet Ich bin gespannt, ob, wenn set.seed(3) und set.seed(4) diese erzeugen eher doppelte Proben als wenn set.seed(3) und set.seed(100)?

Wenn ja,, wie viele eindeutige Proben ein set.seed(3) erzeugen kann, bevor eine Übereinstimmung in den von set.seed(4) erscheint erzeugten Proben?

Wenn nicht, kann ich feststellen, dass eine andere n in set.seed(n) hat nichts zu bedeuten, solange sie anders sind?

hörte ich etwas unabhängigen Zufallsstrom zu tun? Ist das n damit verbunden?

Wenn ja, wie kann ich einen unabhängigen Zufallsstrom definieren? Ich habe bereits What does the integer while setting the seed mean? gelesen, aber es sieht nicht meine Fragen beantwortet.

+2

Autsch ... Dies ist schwer zu beantworten, da es auf dem zugrunde liegenden PRNG abhängt. Normalerweise würde man erwarten, dass alle 2 Samen zwei verschiedene PRNG-Pfade sind ...Dies würde auch für zwei unabhängige Streams ausreichen, wenn sie durch eindeutige Seeds gesetzt werden (egal ob 1 und 2 oder 1 und 1000) ... Aber in der Praxis ist das Seeding schwierig und eine reine MersenneTwister-Implementierung könnte Sie dafür bestrafen, dass Sie unabhängige Streams erhalten mit 2 verschiedenen Samen (während alle anderen Parameter beibehalten werden; wahrscheinlich in R versteckt, konstant). Deine Fragen sind auch sehr informell und schwer zu behandeln (* vor dem Spiel generieren ... *) Sei präziser! – sascha

+2

Dies kann auch zusätzliche Hilfe sein: https://stats.stackexchange.com/questions/86285/random-number-set-seedin-in-r – stringsn88keys

Antwort

4

Lassen Sie mich auch versuchen, eine kurze einfache Antwort zu geben. Ich glaube, dass die beiden Kommentare nützlich sind.

Manchmal brauchen wir Zufallszahlen in unseren Programmen. Computer verlassen sich auf einen Algorithmus, um Zufallszahlen zu erzeugen. Aus diesem Grund haben wir die Möglichkeit, die Sequenz der generierten Zufallszahlen neu zu erstellen. Dies ist sehr nützlich bei der Wiedergabe von Arbeiten. Wenn wir R verwenden, wird es immer die gleiche Sequenz von Zufallszahlen geben, wenn wir

verwenden.

Es wird nicht erwartet, dass es zwischen set.seed(n) und set.seed(n+1) oder set.seed(n1) und set.seed(n2) eine Beziehung sein. Oder es wird erwartet, dass set.seed(3) nach mehreren Iterationen keinen Stream von set.seed(4) generiert und umgekehrt.

So im Allgemeinen kann man durch verschiedene Samen erzeugt Sequenzen von Zufallszahlen behandeln, unabhängig zu sein.

0

Ich denke, es ist eine schlechte Idee, keine Annahmen über die Beziehung zwischen den Strömen von Zufallszahlen zu machen, die durch zwei verschiedene Samen erzeugt werden, wenn der zugrunde liegende Zufallszahlengenerator, der die Beziehung dokumentiert. Zum Beispiel war ich überrascht zu erfahren, dass der Standard-Mersenne-Twister RNG wie folgt wirkt:

> set.seed(0) 
> x <- runif(10) 
> set.seed(1) 
> y <- runif(10) 
> x[2:10] == y[1:9] 
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 

Ich habe nicht diese Art von Verhalten für jedes anderes Paar von Startwerten bemerkt hat, aber das war genug, um mich zu erschrecken weg von Annahmen.

Wenn Sie sich um diese Probleme kümmern, sollten Sie über die Funktionen nextRNGStream und nextRNGSubStream im parallel-Paket lesen. Diese sollen .Random.seed Werte erzeugen, die zu unabhängigen Strömen von Zufallszahlen führen.

Verwandte Themen