Referencias y mejores prácticas para establecer semillas en la generación de números pseudoaleatorios

11

En este documento , que se refiere al comando "establecer semilla", las personas de Stata discuten cuestiones relacionadas con la configuración de semillas al generar números pseudoaleatorios.

Un notable "no" es "no use en serie la secuencia de números naturales como semillas, porque tiene un patrón y pone en peligro la seudoaleatoriedad".

Un "do" notablemente bromista de una cuarta parte es establecer solo una semilla durante su vida útil y luego registrar el "estado" del proceso generado al final de cada experimento, para que el próximo experimento continúe en el punto donde el proceso se ha detenido.

Obviamente, el consejo anterior depende del recuento esperado de números pseudoaleatorios que uno generará en su vida de investigación. Quizás un tornado de Mersenne cubriría las necesidades de por vida de muchos investigadores ...

Ahora, no tengo mucha experiencia con respecto a los PRNG en teoría o en la práctica, por lo que no puedo discutir sobre estas sugerencias; deberían probarse como válidas o inválidas por razones teóricas y estadísticas matemáticas estrictas.

Entonces, mis preguntas son

1) ¿Puede ayudar a explicar o invalidar los consejos anteriores, o señalar una referencia que se ocupe de tales problemas?

2) ¿Puede proporcionar referencias que ofrezcan "mejores prácticas" en el establecimiento de semillas?

3) ¿Cómo lo haces en tu propio trabajo y por qué?

metronortePRNGmetronortemetronorte

Un hilo relacionado (aunque mucho más centrado) es ¿
Establecer semilla antes de cada bloque de código o una vez por proyecto?

Tengo la sensación de que tal vez debería ser un wiki de la comunidad, los mods por favor decidan sobre eso.

Alecos Papadopoulos
fuente
44
Esa página del manual de Stata hace suposiciones implícitas importantes sobre por qué uno está usando una semilla. La razón principal por la que uso semillas (en mis publicaciones aquí en CV) es para crear ejemplos reproducibles. Para demostrar que no he jugado con la semilla hasta que el ejemplo fue de mi agrado (!), (Casi) siempre uso la misma semilla. Esto contradice de manera tan flagrante el consejo de Stata porque tengo un propósito diferente del que deben tener en mente (que no está establecido). La moraleja aquí es que las mejores prácticas dependen del propósito.
whuber
@whuber Creo que el consejo que menciono en el documento que menciono apunta a preservar tanto la "aleatoriedad" como la reproducibilidad de la serie utilizada (a través de la grabación del "estado" del proceso, como dicen). Parece que vale la pena perseguir estos objetivos en cualquier configuración, sea cual sea el propósito de la investigación, ¿no?
Alecos Papadopoulos
1
Claro que valen la pena, pero eso no justifica convertirlos en "qué hacer" y "qué no hacer", tal como se expresa en esa página del manual. El problema con tales dictados no categóricos es que otros, como los abogados, se verán obligados a pensar que cualquier práctica contraria es inherentemente incorrecta, independientemente del propósito o las circunstancias. ¡Es importante dejar espacio para el juicio en la práctica de las estadísticas! En particular, no confundamos las recomendaciones para el uso de software con "mejores prácticas".
whuber
@whuber El hecho de que use como "estímulo" un documento vinculado a un software específico no hace que mi pregunta sea sobre "recomendaciones para el uso de software". Las preguntas planteadas son obviamente sobre las políticas utilizadas por los investigadores para realizar investigaciones estadísticas , por lo que no veo confusión aquí.
Alecos Papadopoulos
3
Suponiendo que su PRNG es bueno, ¿por qué establecer semillas con un patrón hace alguna diferencia, no es ese el objetivo de los PRNG?
purple51

Respuestas:

3

Por lo que vale, esto se basa en la experiencia y no en el análisis matemático:

Creo que a menos que esté haciendo criptografía, donde los patrones sutiles pueden ser muy malos, la semilla que establezca no hace la diferencia, siempre que use PRNG aceptados como Mersenne Twister y no los viejos como generadores lineales congruenciales. Por lo que yo sé, no hay manera de que pueda saber qué número aleatorio va a salir de una semilla dada sin ejecutar el PRNG (asumiendo que es una decente), de lo contrario usted acaba de tomar ese nuevo algoritmo y el uso que como su generador de números aleatorios.

Otra perspectiva: ¿cree que es probable que cualquier patrón sutil en su simulación Montecarlo sea de mayor magnitud que todos los errores de medición, confusión y errores introducidos por otros supuestos de modelado?

Solo usaría una semilla aleatoria al principio para la reproducibilidad, y no establecería una antes de cada llamada, a menos que esté depurando, donde necesito asegurarme de que dos algoritmos diferentes produzcan el mismo resultado para los mismos datos de entrada.

Descargo de responsabilidad: si simula reactores nucleares o sistemas de control de misiles o pronóstico del tiempo, lo mejor es consultar a expertos en el dominio, no me hago responsable en ese caso.

púrpura51
fuente