In quasi tutto il lavoro di analisi che io abbia mai fatto uso:
set.seed(42)
È un omaggio a Hitchhiker's Guide to the Galaxy . Ma mi chiedo se sto creando pregiudizi usando sempre lo stesso seme.
In quasi tutto il lavoro di analisi che io abbia mai fatto uso:
set.seed(42)
È un omaggio a Hitchhiker's Guide to the Galaxy . Ma mi chiedo se sto creando pregiudizi usando sempre lo stesso seme.
Risposte:
Non c'è parzialità se l'RNG è buono. Usando sempre lo stesso seme, crei comunque una forte interdipendenza tra tutte le simulazioni che esegui nella tua carriera. Questo crea un tipo insolito di rischio.
Usando lo stesso seme ogni volta, o stai sempre ottenendo una sequenza pseudocasuale piuttosto bella e tutto il tuo lavoro va bene o - con probabilità molto bassa ma diversa da zero - stai sempre usando una sequenza piuttosto cattiva e le tue simulazioni non lo sono come rappresentante delle distribuzioni sottostanti come pensi possano essere. O tutto il tuo lavoro è abbastanza buono o tutto è piuttosto schifoso!
Contrastalo con l'uso di semi di partenza veramente casuali ogni volta. Di tanto in tanto potresti ottenere una sequenza di valori casuali che non è rappresentativa della distribuzione che stai modellando, ma la maggior parte delle volte staresti bene. Se non hai mai provato a riprodurre il tuo lavoro (con un nuovo seme), una o due volte nella tua carriera potresti ottenere risultati fuorvianti, ma la maggior parte delle volte starai bene.
C'è una cura semplice ed evidente: controlla sempre il tuo lavoro riavviando con un altro seme. È praticamente impossibile che due semi accidentalmente producano risultati fuorvianti allo stesso modo.
D'altra parte, c'è un merito straordinario nell'avere un noto "seme personale": mostra al mondo che sei onesto. Un modo subdolo e sottile di mentire con le simulazioni è quello di ripeterle fino a quando non danno un risultato predeterminato. Ecco un R
esempio funzionante per "dimostrare" che anche una moneta giusta è altamente probabile che faccia atterrare teste più della metà delle volte:
n.flips <- 100
seeds <- 1:10^3
#
# Run some preliminary simulations.
#
results <- sapply(seeds, function(seed) {
set.seed(seed)
mean(runif(n.flips) > 1/2)
})
#
# Now do the "real" simulation.
#
seed <- seeds[which.max(results)]
set.seed(seed)
x <- mean(runif(n.flips) > 1/2)
z <- (x - 1/2) * 2 * sqrt(n)
cat("Mean:", x, "Z:", z, "p-value:", pnorm(z, lower.tail=FALSE), "\n")
Le implicazioni possono essere affascinanti e importanti. Ad esempio, se sapessi in anticipo chi avrei reclutato in uno studio randomizzato controllato in doppio cieco e in quale ordine (che potrei essere in grado di controllare come professore universitario che verifica un gruppo di studenti in cattività o ratti di laboratorio), allora in anticipo ho potuto eseguire una serie di simulazioni per trovare un seme che raggruppasse gli studenti a mio piacimento per favorire qualsiasi cosa sperassi di "provare". Potrei includere l'ordine pianificato e quel seme nel mio piano sperimentale primacondurre l'esperimento, creando così una procedura che nessun critico critico avrebbe mai potuto mettere in discussione, ma comunque impilando il mazzo a mio favore. (Credo che ci siano intere branche della pseudoscienza che usano una variante di questo trucco per guadagnare credibilità. Credi davvero di aver usato ESP per controllare il computer? Posso farlo anche a distanza con il tuo!)
Qualcuno il cui seme predefinito è noto non può giocare a questo gioco.
Il mio seed personale è 17 , come attestano gran parte dei miei post (attualmente 155 dei 161 post che impostano un seed usano questo). In R
esso è un seme difficile da lavorare, perché (a quanto pare) la maggior parte dei piccoli gruppi di dati che creo con esso hanno un forte valore anomalo. Non è una cattiva caratteristica ...
R
Il comportamento è puramente accidentale.
Come detto sopra, un buon RNG non genererà distorsioni dall'uso dello stesso seme. Tuttavia, ci sarà una correlazione tra i risultati. (Lo stesso numero pseudo-casuale avvierà ogni calcolo.) Se questo conta non è una questione di matematica.
L'utilizzo dello stesso seed a volte è OK: per il debug o quando sai di volere risultati correlati.