¿Estoy creando sesgo usando la misma semilla aleatoria una y otra vez?


31

En casi todo el trabajo de análisis que he realizado utilizo:

set.seed(42) 

Es un homenaje a la Guía del autoestopista galáctico . Pero me pregunto si estoy creando sesgo al usar la misma semilla una y otra vez.


9
¿Cómo usas la semilla? Dependiendo de su caso de uso típico, la respuesta varía de sí a no.
Momo

Brandon, ¿y si la gente te responde que sí? ¿Qué harás? Me siento aprensivo
ttnphns

@Momo Digamos que siempre lo configuro, por miedo a olvidarlo y no poder reproducir mis resultados. Esto es a través de diferentes tipos de experiencias independientes y diferentes. Agradecería entender ambos casos, sí y no.
Brandon Bertelsen

@ttnphns ¿Lo trata como una lección aprendida?
Brandon Bertelsen

Está bien para el propósito reproducir resultados, ya sean sesgados o no. Pero a menos que el tamaño de su muestra (número de experimentos u observaciones independientes) producidos bajo esa semilla se acerque a la infinitud, persistirá algún sesgo. Note dos cosas más importantes: por lo general utilizan los pseudo generadores aleatorios que complica consecuencias para usted. Las consecuencias también dependen del tipo de generador aleatorio que use (por ejemplo, Mersenne Twister o qué?). Por lo tanto, para pruebas serias de algo aleatorio, siempre es mejor establecer la semilla en aleatorio.
ttnphns

Respuestas:


31

No hay sesgo si el RNG es bueno. Sin embargo, al usar siempre la misma semilla, está creando una fuerte interdependencia entre todas las simulaciones que realiza en su carrera. Esto crea un tipo inusual de riesgo.

  • Al usar la misma semilla cada vez, siempre obtienes una secuencia pseudoaleatoria bastante buena y todo tu trabajo va bien o, con una probabilidad muy baja pero no nula, siempre estás usando una secuencia bastante mala y tus simulaciones no son como representante de las distribuciones subyacentes como cree que podrían ser. ¡O todo tu trabajo es bastante bueno o todo es bastante malo!

  • Compare esto con el uso de semillas iniciales verdaderamente aleatorias cada vez. De vez en cuando puede obtener una secuencia de valores aleatorios que no es representativa de la distribución que está modelando, pero la mayoría de las veces estaría bien. Si nunca intentó reproducir su propio trabajo (con una nueva semilla), una o dos veces en su carrera podría obtener resultados engañosos, pero la gran mayoría de las veces estará bien.

Hay una cura simple y obvia: siempre, siempre verifique su trabajo reiniciando con otra semilla. Es prácticamente imposible que dos semillas accidentalmente den resultados engañosos de la misma manera.

Por otro lado, hay un mérito extraordinario en tener una "semilla personal" bien conocida: muestra al mundo que eres honesto. Una manera astuta y sutil de mentir con las simulaciones es repetirlas hasta que te den un resultado predeterminado. Aquí hay un Rejemplo de trabajo para "demostrar" que incluso una moneda justa es muy probable que caiga cara más de la mitad del tiempo:

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")

Al observar una gama más amplia de semillas (de a ), pude encontrar una agradable: 218134. Cuando comienzas con esto como la semilla, ¡los lanzamientos de monedas simulados resultantes exhiben caras! Eso es significativamente diferente del valor esperado de ( ).10 6 100 75 50 p = 0,00000411061007550p=0.000004

Las implicaciones pueden ser fascinantes e importantes. Por ejemplo, si supiera de antemano a quién reclutaría en un ensayo aleatorizado, doble ciego y controlado, y en qué orden (que podría controlar como profesor universitario probando a un grupo de estudiantes en cautiverio o ratas de laboratorio), entonces de antemano podría ejecutar un conjunto de simulaciones para encontrar una semilla que agrupe a los estudiantes más a mi gusto para favorecer lo que esperaba "probar". Podría incluir el orden planificado y esa semilla en mi plan experimental antesrealizando el experimento, creando así un procedimiento que ningún crítico crítico podría destituir, pero sin embargo apilando la baraja a mi favor. (Creo que hay ramas enteras de pseudociencia que usan alguna variante de este truco para ganar credibilidad. ¿Creería que realmente usé ESP para controlar la computadora? ¡También puedo hacerlo a distancia con la suya!)

Alguien cuya semilla predeterminada se conoce no puede jugar este juego.

Mi semilla personal es 17 , como lo atestigua una gran parte de mis publicaciones (actualmente 155 de 161 publicaciones que establecen una semilla usan esta). En Res una semilla difícil de trabajar, porque (como resulta que) la mayoría de los pequeños conjuntos de datos que he creado con ella tienen un fuerte valor atípico. Esa no es una mala característica ...


55
¿Elegiste por esa propiedad, o es solo una linda coincidencia? 17
Matthew Drury

44
@Matthew Se remonta a un grupo de estudiantes de secundaria con un interés compartido en matemáticas que estudiaban teoría de números hace un verano. Uno, según recuerdo, propuso en broma 17 como el entero arquetípico y nuestro grupo rápidamente encontró muchas racionalizaciones para esto, algunas de interés matemático y otras simplemente humorísticas (al menos desde el punto de vista de un matemático nerd). Hay interesantes propiedades matemáticas e históricas de este número que lo llaman la atención, como el descubrimiento de Gauss de la constructibilidad del 17-gon. REl comportamiento es puramente accidental.
whuber

44
@Matthew BTW, mi semilla está relacionada con Brandon: hay exactamente 42 pares ordenados de primos integrales distintos de tamaño 17 o menos :-).
whuber

8
Solía ​​poder construir un gon de 17 con regla y brújula como un truco de fiesta. Bueno, para la definición correcta del partido supongo ...
Mateo Drury

1
@MatthewDrury hacen estallar botellas en tu fiesta.
Brandon Bertelsen

2

Como se indicó anteriormente, un buen RNG no generará sesgo al usar la misma semilla. Sin embargo, habrá una correlación entre los resultados. (El mismo número pseudoaleatorio comenzará cada cálculo). Si esto importa no es una cuestión de matemáticas.

Usar la misma semilla está bien a veces: para depurar o cuando sabes que quieres resultados correlacionados.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.