Referenzen und Best Practices zum Setzen von Seeds bei der Pseudozufallszahlengenerierung

11

In diesem Dokument , das den Befehl "set seed" betrifft, diskutieren die Mitarbeiter von Stata Probleme im Zusammenhang mit der Einstellung von Seeds beim Generieren von Pseudozufallszahlen.

Ein bemerkenswertes "Nicht" ist "Verwenden Sie die Folge natürlicher Zahlen nicht seriell als Keime, da dies ein Muster aufweist und die Pseudozufälligkeit gefährdet".

Ein nur ein Viertel scherzhaft bemerkenswertes "Do" besteht darin , nur einen Samen während Ihres Lebens zu setzen und dann den "Zustand" des generierten Prozesses am Ende jedes Experiments aufzuzeichnen, damit das nächste Experiment an dem Punkt fortgesetzt wird wo der Prozess gestoppt hat.

Offensichtlich hängt der obige Rat von der erwarteten Anzahl von Pseudozufallszahlen ab, die man in seiner Forschungslebensdauer erzeugen wird. Vielleicht würde ein Mersenne-Twister den Lebensbedarf vieler Forscher decken ...

Jetzt bin ich in Bezug auf PRNGs in der Theorie oder in der Praxis nicht sehr erfahren, daher kann ich über diese Vorschläge nicht streiten - sie sollten aus theoretischen Gründen und aus harten mathematischen Statistiken als gültig oder ungültig erwiesen werden.

Meine Fragen sind also

1) Können Sie helfen, die oben gegebenen Ratschläge zu erklären oder ungültig zu machen, oder auf eine Referenz verweisen, die sich mit solchen Problemen befasst?

2) Können Sie Referenzen angeben, die "Best Practices" für das Setzen von Saatgut bieten?

3) Wie gehen Sie in Ihrer eigenen Arbeit vor und warum?

Nehmen wir als Beispiel für Frage 3) an, dass Sie für eine Monte-Carlo-Studie Stichproben mit der Größe generieren möchten und dass Ihr eine Periode hat, die ausreichend größer als . Würden Sie alle Pseudozufallszahlen mit einem Samen erzeugen , oder haben Sie die Angewohnheit, Samen beispielsweise pro Probe zu wechseln? (aber das ist nur zur Veranschaulichung - ich glaube, dass sich hier allgemeinere Antworten lohnen). mnPRNGmnmn

Ein verwandter Thread (obwohl viel fokussierter) ist
Set Seed vor jedem Codeblock oder einmal pro Projekt?

Ich habe das Gefühl, dass dies vielleicht ein Community-Wiki sein sollte, die Mods entscheiden bitte darüber.

Alecos Papadopoulos
quelle
4
Diese Stata-Handbuchseite enthält wichtige implizite Annahmen darüber, warum ein Seed verwendet wird. Der Hauptgrund, warum ich Samen verwende (in meinen Beiträgen hier im Lebenslauf), ist die Erstellung reproduzierbarer Beispiele. Um zu demonstrieren, dass ich nicht mit dem Samen herumgespielt habe, bis das Beispiel mir gefallen hat (!), Verwende ich (fast) immer den gleichen Samen. Dies widerspricht so offensichtlich dem Rat von Stata, weil ich einen anderen Zweck habe, als sie im Sinn haben müssen (was nicht angegeben ist). Die Moral hier ist, dass Best Practices vom Zweck abhängen.
whuber
@whuber Mein Gefühl ist, dass der Rat in dem Dokument, das ich erwähne, darauf abzielt, sowohl die "Zufälligkeit" als auch die Reproduzierbarkeit der verwendeten Serien zu bewahren (durch die Aufzeichnung des "Zustands" des Prozesses, wie sie sagen). Diese Ziele scheinen es wert zu sein, in jeder Einrichtung verfolgt zu werden, unabhängig vom Zweck der Forschung, nicht wahr?
Alecos Papadopoulos
1
Sicher, sie sind es wert - aber das rechtfertigt nicht, sie zu bestimmten "Dos" und "Don'ts" zu machen, wie auf dieser Handbuchseite ausgedrückt. Das Problem bei solchen uncategorical dicta ist , dass andere - wie Rechtsanwälte - werden zu denken , werden geführt , dass jedes Gegenteil der Praxis grundsätzlich falsch ist, unabhängig von Zweck oder Umständen. In der Statistik ist es wichtig, Raum für ein Urteil zu lassen! Lassen Sie uns insbesondere Empfehlungen für die Verwendung von Software nicht mit "Best Practices" verwechseln.
whuber
@whuber Die Tatsache, dass ich ein mit einer bestimmten Software verknüpftes Dokument als "Anreiz" verwendet habe, lässt meine Frage nicht nach "Empfehlungen für die Verwendung von Software". Die gestellten Fragen beziehen sich offensichtlich auf Richtlinien, die von Forschern bei der Durchführung statistischer Untersuchungen angewendet werden , daher sehe ich hier keine Verwirrung.
Alecos Papadopoulos
3
Angenommen, Ihr PRNG ist gut, warum sollte das Setzen von Samen mit einem Muster einen Unterschied machen, ist das nicht der springende Punkt bei PRNGs?
lila51

Antworten:

3

Für das, was es wert ist, basiert dies auf Erfahrung und nicht auf mathematischer Analyse:

Ich denke, wenn Sie keine Kryptografie betreiben, bei der subtile Muster sehr schlecht sein können, macht es keinen Unterschied, welchen Startwert Sie setzen, solange Sie akzeptierte gute PRNGs wie Mersenne Twister und keine alten wie lineare Kongruenzgeneratoren verwenden. Soweit ich weiß, können Sie nicht sagen, welche Zufallszahl aus einem bestimmten Startwert hervorgeht, ohne das PRNG tatsächlich auszuführen (vorausgesetzt, es ist ein anständiger), andernfalls würden Sie einfach diesen neuen Algorithmus verwenden und diesen als Ihren verwenden Zufallszahlengenerator.

Eine andere Perspektive: Glauben Sie, dass subtile Muster in Ihrer Monte-Carlo-Simulation wahrscheinlich eine größere Größe haben als alle Messfehler, Verwirrungen und Fehler, die durch andere Modellierungsannahmen verursacht werden?

Ich würde zu Beginn nur einen zufälligen Startwert für die Reproduzierbarkeit verwenden und nicht vor jedem Aufruf einen festlegen, es sei denn, ich mache ein Debugging, bei dem ich sicherstellen muss, dass zwei verschiedene Algorithmen dasselbe Ergebnis für genau dieselben Eingabedaten erzeugen.

Haftungsausschluss: Wenn Sie Kernreaktoren oder Raketensteuerungssysteme oder Wettervorhersagen simulieren und am besten Domain-Experten konsultieren, übernehme ich in diesem Fall keine Verantwortung.

lila51
quelle