Random number-Set.seed (N) en R [duplicado]

38

Esta pregunta ya tiene una respuesta aquí:

Me doy cuenta de que uno usa set.seed()en R para la generación de números pseudoaleatorios. También me doy cuenta de que usar el mismo número, como set.seed(123)asegura, puede reproducir resultados.

Pero lo que no entiendo es qué significan los valores mismos. Estoy jugando con varias funciones, y algunas uso set.seed(1)o set.seed(300)o set.seed(12345). ¿Qué significa ese número (si es que hay algo) y cuándo debo usar uno diferente?

Ejemplo, en un libro en el que estoy trabajando, lo usan set.seed(12345)cuando crean un conjunto de capacitación para árboles de decisión. Luego, en otro capítulo, lo están utilizando set.seed(300)para crear un bosque aleatorio.

Simplemente no obtengas el número.

mylesg
fuente
66
¿esto ayuda? stackoverflow.com/questions/14684437/… También? set.seed () dentro de R proporciona bastante buena información.
doug.numbers
66
El punto principal del uso de la semilla es poder reproducir una secuencia particular de números 'aleatorios'. En términos generales, si no necesita poder hacer eso, no establecería la semilla. La semilla en sí misma no tiene un significado inherente, excepto que es una forma de decirle al generador de números aleatorios "dónde comenzar". Puede pensarlo un poco como la relación entre un número PIN y su cuenta bancaria. El PIN está asociado con una larga cadena de números (su número de cuenta), pero no es inherentemente una cantidad interpretable (hay una interpretación, pero al configurarla, ignora eso).
Glen_b -Reinstala a Monica
44
Para el registro, 42 es siempre la semilla correcta
Repmat
Solo un comentario: recomiendo configurar el generador aleatorio solo (i) para depurar un script, para encontrar algunos errores particulares, etc. o (ii) para enviar / publicar resultados para que puedan verificarse.
AADF

Respuestas:

39

El número de semilla que elija es el punto de partida utilizado en la generación de una secuencia de números aleatorios, razón por la cual (siempre que use el mismo generador de números pseudoaleatorios) obtendrá los mismos resultados con el mismo número de semilla. En lo que respecta a su segunda pregunta, este breve fragmento de la descripción de la funcionalidad equivalente en Stata podría ser útil:

No podemos enfatizar esto lo suficiente: no coloque la semilla con demasiada frecuencia. Para ver por qué es una idea tan mala, considere el caso límite: configura la semilla, dibuja un número pseudoaleatorio, restablece la semilla, dibuja de nuevo y continúa. Los números pseudoaleatorios que obtenga no serán más que las semillas que ejecuta a través de una función matemática. Los resultados que obtenga no pasarán al azar a menos que las semillas que elija pasen al azar. Si ya tenía esos números, ¿por qué se molesta en usar el generador de números pseudoaleatorios?

http://www.stata.com/manuals13/rsetseed.pdf

Corcovado
fuente
15
Quién sabía que Stata tenía una documentación tan interesante: "Otros intentan inventar un número aleatorio, calculando si incluyen suficientes dígitos, el resultado solo tiene que ser aleatorio. Esta es una variación de la regla de los cinco segundos para la comida caída, y admitimos al uso de ambas reglas "
degenerado hessian
4

En resumen, ¡los números en sí mismos realmente no significan nada! Si está mirando el código de otra persona (como en los dos ejemplos que dio anteriormente), los números no alteran la funcionalidad de la función; tampoco hay números "buenos" para funciones específicas. Todo depende de la elección de los autores.

Además, si solo establece la semilla una vez en su código, puede elegir el número que desee. Lo único que debe tener un poco de cuidado es que, si interactúa con otras funciones que también usan números aleatorios, entonces es bueno elegir una semilla no obvia (por lo que es menos probable que ambos usen la misma semilla )

Sin embargo, como Corcovado señala muy bien, para algunas aplicaciones, debe tener mucho cuidado con la elección que haga. Si matemáticamente necesita una cantidad de números generados seudoaleatoriamente, entonces no puede haber un patrón para los números que elija.

KRS
fuente
1

The set.seed()function in R takes an (arbitrary) integer argument. So we can take any argument, say, 1 or 123 or 300 or 12345 to get the reproducible random numbers.

Also, in theTeachingDemos package, the char2seed function allows user to set the seed based on a character string.

Dr Nisha Arora
fuente