43 votos

Número aleatorio-Set.seed(N) en R

Me doy cuenta de que uno utiliza 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 que se pueden reproducir los resultados.

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

Por ejemplo, en un libro en el que estoy trabajando, utilizan set.seed(12345) al crear un conjunto de entrenamiento para los árboles de decisión. Luego, en otro capítulo, utilizan set.seed(300) para crear un Bosque Aleatorio.

Simplemente no cojas el número.

40voto

sglantz Puntos 56

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

No podemos insistir lo suficiente en esto: No ponga la semilla con demasiada frecuencia. Para ver por qué esto es una mala idea, considere el caso límite: Se fija la semilla semilla, sacas un número pseudoaleatorio, vuelves a poner la semilla, sacas de nuevo, y así continuar. Los números pseudoaleatorios que obtengas no serán más que que las semillas que pasas por una función matemática. Los resultados que obtengas no pasarán por aleatorios a menos que las semillas que elijas pasen para el azar. Si ya tienes esos números, ¿por qué te molestas en usar el molestarse en utilizar el generador de números pseudoaleatorios?

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

4voto

En resumen, los números en sí no significan nada. Si estás mirando el código de otra persona (como en los dos ejemplos que has dado arriba), los números no alteran la funcionalidad de la función; tampoco hay números "buenos" para funciones específicas. Sólo depende de la elección de los autores.

Además, si sólo vas a establecer la semilla una vez en tu código, entonces puedes elegir el número que quieras. Lo único que hay que tener un poco de cuidado es que, si usted interactúa con cualquier otra función que también utiliza 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 señala muy bien Corcovado, para algunas aplicaciones hay que tener mucho cuidado con la elección que se hace. Si matemáticamente necesitas una serie de números generados de forma pseudoaleatoria, entonces no puede haber un patrón en los números que elijas.

1voto

Ray Puntos 16

La función set.seed()en R toma un argumento entero (arbitrario). Así que podemos tomar cualquier argumento, digamos, 1 o 123 o 300 o 12345 para obtener los números aleatorios reproducibles.

Además, en el paqueteTeachingDemos, la función char2seed permite al usuario establecer la semilla basada en una cadena de caracteres.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X