Zufallszahl-Set.seed (N) in R [duplizieren]

37

Diese Frage hat hier bereits eine Antwort:

Mir ist klar, dass man set.seed()in R für die Erzeugung von Pseudozufallszahlen verwendet. Mir ist auch klar, dass man mit der gleichen Nummer, wie bei set.seed(123)Versicherungen, Ergebnisse reproduzieren kann.

Was ich aber nicht verstehe, ist, was die Werte selbst bedeuten. Ich spiele mit verschiedenen Funktionen und verwende set.seed(1)oder set.seed(300)oder set.seed(12345). Was bedeutet diese Nummer (wenn überhaupt) - und wann sollte ich eine andere verwenden?

Beispiel: In einem Buch, das ich gerade durcharbeite, werden sie set.seed(12345)beim Erstellen eines Trainingssatzes für Entscheidungsbäume verwendet. In einem anderen Kapitel werden sie dann set.seed(300)zum Erstellen einer zufälligen Gesamtstruktur verwendet.

Versteh die Nummer einfach nicht.

mylesg
quelle
6
Hilft das? stackoverflow.com/questions/14684437/… Auch set.seed () in R liefert ziemlich gute Informationen.
doug.numbers
6
Der Hauptzweck der Verwendung des Startwerts besteht darin, eine bestimmte Folge von Zufallszahlen zu reproduzieren. Im Allgemeinen würden Sie den Startwert nicht festlegen , wenn Sie dies nicht tun müssen . Der Startwert selbst hat keine inhärente Bedeutung, es sei denn, er teilt dem Zufallszahlengenerator mit, wo er anfangen soll. Sie könnten es sich wie die Beziehung zwischen einer PIN-Nummer und Ihrem Bankkonto vorstellen. Die PIN ist mit einer langen Zahlenfolge (Ihrer Kontonummer) verknüpft, es handelt sich jedoch nicht um eine inhärent interpretierbare Menge (es gibt eine Interpretation, die Sie jedoch ignorieren, wenn Sie sie festlegen).
Glen_b
4
Für die Aufzeichnung, 42 ist immer der richtige Samen
Repmat
Nur ein Kommentar: Ich empfehle, den Zufallsgenerator nur (i) zum Debuggen eines Skripts, zum Auffinden bestimmter Fehler usw. oder (ii) zum Senden / Veröffentlichen von Ergebnissen festzulegen, damit diese überprüft werden können.
AADF

Antworten:

38

Die von Ihnen gewählte Startnummer ist der Ausgangspunkt für die Generierung einer Folge von Zufallszahlen. Aus diesem Grund erhalten Sie bei Verwendung desselben Pseudozufallszahlengenerators die gleichen Ergebnisse bei gleicher Startnummer. Für Ihre zweite Frage könnte dieser kurze Ausschnitt aus der Beschreibung der entsprechenden Funktionalität in Stata hilfreich sein:

Wir können dies nicht genug betonen: Setzen Sie den Samen nicht zu oft. Um zu sehen, warum dies eine so schlechte Idee ist, betrachten Sie den Grenzfall: Sie setzen den Startwert, zeichnen eine Pseudozufallszahl, setzen den Startwert zurück, zeichnen erneut und fahren fort. Die Pseudozufallszahlen, die Sie erhalten, sind nichts anderes als die Startwerte, die Sie durch eine mathematische Funktion laufen lassen. Die Ergebnisse, die Sie erhalten, werden nicht als zufällig eingestuft, es sei denn, die von Ihnen ausgewählten Samen werden als zufällig eingestuft. Wenn Sie bereits solche Nummern hatten, warum machen Sie sich überhaupt die Mühe, den Pseudozufallszahlengenerator zu verwenden?

http://www.stata.com/manuals13/rsetseed.pdf

Corcovado
quelle
15
Wer wusste, dass Stata eine so interessante Dokumentation hatte: "Andere versuchen, eine Zufallszahl zu bilden. Wenn sie genügend Ziffern enthalten, muss das Ergebnis zufällig sein. Dies ist eine Variation der Fünf-Sekunden-Regel für fallengelassenes Essen, und wir geben zu zur Anwendung dieser beiden Regeln "
entarteter
4

Kurz gesagt, die Zahlen selbst bedeuten eigentlich gar nichts! Wenn Sie sich den Code einer anderen Person ansehen (wie in den beiden oben genannten Beispielen), ändern die Zahlen nichts an der Funktionalität der Funktion. Es gibt auch keine "guten" Zahlen für bestimmte Funktionen. Es liegt nur an den Autoren.

Wenn Sie den Startwert nur einmal in Ihrem Code festlegen, können Sie außerdem eine beliebige Zahl auswählen. Das Einzige, worauf Sie achten müssen, ist, dass Sie, wenn Sie mit anderen Funktionen interagieren, die auch Zufallszahlen verwenden, einen nicht offensichtlichen Startwert auswählen sollten (daher ist es weniger wahrscheinlich, dass Sie beide denselben Startwert verwenden ).

Wie Corcovado jedoch sehr gut hervorhebt, müssen Sie bei einigen Anwendungen bei der Auswahl, die Sie treffen, sehr vorsichtig sein. Wenn Sie mathematisch eine Anzahl von pseudozufällig generierten Zahlen benötigen, können die von Ihnen ausgewählten Zahlen kein Muster enthalten.

KRS
quelle
1

Die Funktion set.seed () in R akzeptiert ein (beliebiges) ganzzahliges Argument. Wir können also jedes Argument verwenden, zum Beispiel 1 oder 123 oder 300 oder 12345, um die reproduzierbaren Zufallszahlen zu erhalten.

Im Paket TeachingDemos kann der Benutzer mit der Funktion char2seed den Startwert basierend auf einer Zeichenfolge festlegen.

Dr. Nisha Arora
quelle