Riferimenti e migliori pratiche per impostare semi nella generazione di numeri pseudo-casuali


11

In questo documento , che riguarda il comando "imposta seme", le persone Stata discutono questioni relative all'impostazione dei semi quando generano numeri pseudo-casuali.

Un notevole "non" è "non usare in serie la sequenza di numeri naturali come semi, perché questo ha uno schema e mette in pericolo la pseudo-casualità".

Un "do" scherzosamente degno di nota solo per un quarto è quello di impostare solo un seme durante la tua vita e quindi registrare lo "stato" del processo generato alla fine di ogni esperimento, in modo che l'esperimento successivo continui al punto dove il processo si è fermato.

Ovviamente, i consigli di cui sopra dipendono dal conteggio atteso di numeri pseudo-casuali che uno genererà nella sua vita di ricerca. Forse un tornado di Mersenne coprirebbe le esigenze della vita di molti ricercatori ...

Ora, non ho molta esperienza riguardo ai PRNG in teoria o in pratica, quindi non posso discutere su questi suggerimenti: dovrebbero essere dimostrati validi o non validi su basi teoriche e statistiche matematiche rigide.

Quindi, le mie domande lo sono

1) Potete aiutarmi a spiegare o invalidare i consigli di cui sopra, oppure indicare un riferimento che affronti tali problemi?

2) Potete fornire riferimenti che offrono "migliori pratiche" nella creazione di seed?

3) Come procedete nel vostro lavoro e perché?

Come esempio per la domanda 3), supponi che per uno studio di Monte Carlo, desideri generare campioni ciascuno della dimensione e che il tuo abbia un periodo sufficientemente più grande di . Genereresti tutti i numeri pseudo-casuali con un seme o avresti l'abitudine di cambiare i semi, per esempio, per campione? (ma è solo a scopo illustrativo. Credo che valgano le risposte più generali qui). mnPRNGmnmn

Un thread correlato (sebbene molto più mirato) è
Set seed prima di ogni blocco di codice o una volta per progetto?

Ho la sensazione che forse questo dovrebbe essere un wiki della community, per favore, le mod decidono su quello.


4
Quella pagina del manuale di Stata fa importanti ipotesi implicite sul perché si sta usando un seed. Il motivo principale per cui utilizzo i semi (nei miei post qui su CV) è creare esempi riproducibili. Per dimostrare che non ho armeggiato con il seme fino a quando l'esempio non è stato di mio gradimento (!), Uso (quasi) sempre lo stesso seme. Ciò contraddice così palesemente il consiglio di Stata perché ho uno scopo diverso da quello che devono avere in mente (che non è dichiarato). La morale qui è che le migliori pratiche dipendono dallo scopo.
whuber

@whuber La mia sensazione è che il consiglio dato nel documento che cito abbia lo scopo di preservare sia la "casualità" che la riproducibilità delle serie utilizzate (attraverso la registrazione dello "stato" del processo, come si suol dire). Questi obiettivi sembrano valere la pena di essere perseguiti in qualsiasi ambiente, qualunque sia lo scopo della ricerca, no?
Alecos Papadopoulos,

1
Sicuramente valgono la pena, ma ciò non giustifica trasformarli in "cose ​​da fare" e "non fare" come espresse da quella pagina di manuale. Il problema con questo dicta non categorico è che altri - come gli avvocati - saranno portati a pensare che qualsiasi pratica contraria sia intrinsecamente sbagliata, indipendentemente dallo scopo o dalle circostanze. È importante lasciare un margine di giudizio nella pratica delle statistiche! In particolare, per favore, non confondiamo le raccomandazioni per l'uso del software con le "migliori pratiche".
whuber

@whuber Il fatto che io abbia usato come "stimolo" un documento collegato a un software specifico non pone la mia domanda sui "consigli per l'uso del software". Le domande poste ovviamente riguardano le politiche utilizzate dai ricercatori nella conduzione della ricerca statistica , quindi non vedo confusione qui.
Alecos Papadopoulos,

3
Supponendo che il tuo PRNG sia buono, perché impostare i semi con un motivo potrebbe fare la differenza, non è questo il punto dei PRNG?
purple51,

Risposte:


3

Per quello che vale, questo si basa sull'esperienza e non sull'analisi matematica:

Penso che a meno che tu non stia facendo la crittografia, dove i modelli sottili possono essere molto cattivi, quale seme hai impostato non fa differenza, a patto che tu usi buoni PRNG accettati come Mersenne Twister e non quelli vecchi come generatori congruenziali lineari. Per quanto ne so, non c'è modo che si può dire che numero casuale verrà fuori da un determinato seme , senza effettivamente in esecuzione il PRNG (supponendo che sia una decente), altrimenti si sarebbe solo prendere quel nuovo algoritmo e l'uso che come la vostra generatore di numeri casuali.

Un'altra prospettiva: pensi che eventuali schemi sottili nella tua simulazione Monte-Carlo avranno probabilmente una grandezza maggiore di tutti gli errori di misurazione, confusione ed errore introdotti da altre ipotesi di modellazione?

Vorrei solo utilizzare un seed casuale all'inizio per la riproducibilità e non impostarne uno prima di ogni chiamata, a meno che non stia eseguendo il debug, in cui è necessario assicurarsi che due algoritmi diversi producano lo stesso risultato per gli stessi identici dati di input.

Dichiarazione di non responsabilità: se si simulano reattori nucleari o sistemi di controllo missilistico o previsioni meteorologiche, è meglio consultare esperti di dominio, in questo caso non mi assumo alcuna responsabilità.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.