Suis-je en train de créer un biais en utilisant la même graine aléatoire encore et encore?

31

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.

Brandon Bertelsen
la source
9
Comment utilisez-vous les semences? Selon votre cas d'utilisation typique, la réponse va de oui à non.
Momo
Brandon, que se passe-t-il si les gens vous répondent OUI? Que vas-tu faire? Je me sens inquiet.
ttnphns
@Momo Disons simplement que je l'ai toujours réglé, de peur de l'oublier et de ne pas pouvoir reproduire mes résultats. Il s'agit de types d'expériences indépendants et différents. J'apprécierais de comprendre les cas oui et non.
Brandon Bertelsen
@ttnphns Traitez-le comme une leçon apprise?
Brandon Bertelsen
Il est acceptable de reproduire les résultats, qu'ils soient biaisés ou non. Mais à moins que la taille de votre échantillon (nombre d'expériences ou d'observations indépendantes) produite dans le cadre de cette graine ne se rapproche de l'infifnité, certains biais persistent. Notez deux choses plus importantes: nous utilisons généralement des générateurs pseudo aléatoires, ce qui complique les conséquences pour vous. Les conséquences dépendent également du type de générateur aléatoire que vous utilisez (par exemple twister Mersenne ou quoi?). Ainsi, pour les essais sérieux de quelque chose de aléatoire, il est toujours préférable de définir la graine au hasard.
ttnphns

Réponses:

31

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 Rexemple 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,00000411061007550p=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 Rune 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 ....

whuber
la source
5
Avez-vous choisi cause de cette propriété, ou est-ce juste une belle coïncidence? 17
Matthew Drury
4
@Matthew Cela remonte à un groupe d'élèves du secondaire ayant un intérêt commun pour les mathématiques qui étudiaient la théorie des nombres il y a un été. Un, si je me souviens bien, a proposé en plaisantant 17 comme nombre archétypique et notre groupe a rapidement trouvé de nombreuses rationalisations pour cela, certaines d'intérêt mathématique et d'autres simplement humoristiques (du moins du point de vue d'un nerd mathématique). Il existe des propriétés mathématiques et historiques intéressantes de ce nombre qui le distinguent, comme la découverte par Gauss de la constructibilité du 17-gon. RLe comportement de est purement accidentel.
whuber
4
@Matthew BTW, ma graine est liée à celle de Brandon: il y a précisément 42 paires ordonnées de nombres premiers entiers distincts de taille 17 ou moins :-).
whuber
8
Avant, je pouvais construire un 17-gon avec règle et boussole comme truc de fête. Eh bien, pour la bonne définition de la fête, je suppose ...
Matthew Drury
1
@MatthewDrury, ils font éclater des bouteilles lors de votre fête.
Brandon Bertelsen
2

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.

ttw
la source