Dans presque tous les travaux d'analyse que j'ai jamais effectués, j'utilise:
set.seed(42)
C'est un hommage au Guide de l'auto-stoppeur de la galaxie . Mais je me demande si je crée un biais en utilisant la même graine encore et encore.
Dans presque tous les travaux d'analyse que j'ai jamais effectués, j'utilise:
set.seed(42)
C'est un hommage au Guide de l'auto-stoppeur de la galaxie . Mais je me demande si je crée un biais en utilisant la même graine encore et encore.
Réponses:
Il n'y a pas de biais si le RNG est bon. En utilisant toujours la même graine, vous créez cependant une forte interdépendance entre toutes les simulations que vous effectuez dans votre carrière. Cela crée un type de risque inhabituel.
En utilisant la même graine à chaque fois, soit vous obtenez toujours une jolie séquence pseudo-aléatoire et tout votre travail se passe bien, soit - avec une probabilité très faible mais non nulle - vous utilisez toujours une séquence assez mauvaise et vos simulations ne sont pas aussi représentatif des distributions sous-jacentes que vous le pensez. Soit tout votre travail est plutôt bon, soit tout est plutôt moche!
Comparez cela à l'utilisation de graines de départ vraiment aléatoires à chaque fois. De temps en temps, vous pouvez obtenir une séquence de valeurs aléatoires qui n'est pas représentative de la distribution que vous modélisez, mais la plupart du temps, tout ira bien. Si vous n'avez jamais tenté de reproduire votre propre travail (avec une nouvelle graine), une ou deux fois dans votre carrière, vous pourriez obtenir des résultats trompeurs, mais la grande majorité du temps, vous serez d'accord.
Il existe un remède simple et évident: vérifiez toujours votre travail en recommençant avec une autre graine. Il est pratiquement impossible que deux graines donnent accidentellement des résultats trompeurs de la même manière.
D'un autre côté, il y a un mérite extraordinaire à avoir une "semence personnelle" bien connue: elle montre au monde que vous êtes honnête. Une façon subtile et subtile de mentir avec les simulations est de les répéter jusqu'à ce qu'elles vous donnent un résultat prédéterminé. Voici un R
exemple de travail pour "démontrer" que même une pièce de monnaie équitable est très susceptible de toucher des têtes plus de la moitié du temps:
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")
En regardant une plus large gamme de graines (de à ), j'ai pu en trouver une sympathique: 218134. Lorsque vous commencez avec cela comme graine, les pièces de monnaie simulées résultantes présentent têtes! Cela est significativement différent de la valeur attendue de ( ).10 6 100 75 50 p = 0,000004
Les implications peuvent être fascinantes et importantes. Par exemple, si je savais à l'avance qui je recruterais dans un essai contrôlé randomisé en double aveugle et dans quel ordre (que je pourrais contrôler en tant que professeur d'université testant un groupe d'étudiants en captivité ou de rats de laboratoire), alors auparavant, je pouvais exécuter un tel ensemble de simulations pour trouver une graine qui grouperait davantage les étudiants à mon goût pour favoriser tout ce que j'espérais "prouver". Je pourrais inclure l'ordre prévu et cette graine dans mon plan expérimental avantmener l'expérience, créant ainsi une procédure qu'aucun critique critique ne pourrait jamais attaquer - mais néanmoins empiler le jeu en ma faveur. (Je crois qu'il existe des branches entières de la pseudoscience qui utilisent une variante de cette astuce pour gagner en crédibilité. Croiriez-vous que j'ai réellement utilisé ESP pour contrôler l'ordinateur? Je peux le faire à distance avec la vôtre aussi!)
Quelqu'un dont la graine par défaut est connue ne peut pas jouer à ce jeu.
Ma graine personnelle est de 17 ans , comme en atteste une grande partie de mes publications (actuellement 155 des 161 publications qui définissent une graine utilisent celle-ci). C'est R
une graine difficile à travailler, car (comme il s'avère) la plupart des petits ensembles de données que je crée avec lui ont une forte valeur aberrante. Ce n'est pas une mauvaise caractéristique ....
R
Le comportement de est purement accidentel.
Comme indiqué ci-dessus, un bon RNG ne générera pas de biais en utilisant la même graine. Cependant, il y aura une corrélation entre les résultats. (Le même nombre pseudo-aléatoire commencera chaque calcul.) Que ce soit important n'est pas une question de mathématiques.
Utiliser la même graine est parfois acceptable: pour le débogage ou lorsque vous savez que vous voulez des résultats corrélés.