Número aleatório Set.seed (N) em R [duplicado]

38

Esta pergunta já tem uma resposta aqui:

Percebo que se usa set.seed()em R para geração de números pseudo-aleatórios. Também percebo que usar o mesmo número, como set.seed(123)garante que você possa reproduzir resultados.

Mas o que não entendo é o que os próprios valores significam. Estou jogando com várias funções, e algumas usam set.seed(1)ou set.seed(300)ou set.seed(12345). O que esse número significa (se houver) - e quando devo usar um número diferente.

Por exemplo, em um livro em que estou trabalhando, eles usam set.seed(12345)ao criar um conjunto de treinamento para árvores de decisão. Em outro capítulo, eles estão usando set.seed(300)para criar uma floresta aleatória.

Só não pegue o número.

mylesg
fonte
6
isso ajuda? stackoverflow.com/questions/14684437/… Também? set.seed () no R fornece informações muito boas.
Doug.numbers
6
O ponto principal do uso da semente é ser capaz de reproduzir uma sequência específica de números 'aleatórios'. De um modo geral, se você não precisar fazer isso, não definiria a semente. A semente em si não tem significado inerente, exceto que é uma maneira de dizer ao gerador de números aleatórios 'por onde começar'. Você pode pensar nisso um pouco como a relação entre um número PIN e sua conta bancária. O PIN está associado a uma longa sequência de números (o número da sua conta), mas não é inerentemente uma quantidade interpretável (existe uma interpretação, mas, ao defini-la, você a ignora).
Glen_b -Reinstala Monica
4
Para o registro, 42 é sempre a semente certa
Repmat
Apenas um comentário: eu recomendo configurar apenas o gerador aleatório (i) para depurar um script, encontrar alguns erros específicos, etc. ou (ii) enviar / publicar resultados para que possam ser verificados.
AADF

Respostas:

39

O número de semente escolhido é o ponto de partida usado na geração de uma sequência de números aleatórios, e é por isso que (desde que você use o mesmo gerador de números pseudo-aleatórios) você obterá os mesmos resultados com o mesmo número de semente. No que diz respeito à sua segunda pergunta, este pequeno trecho da descrição da funcionalidade equivalente no Stata pode ser útil:

Não podemos enfatizar o suficiente: não coloque a semente com muita frequência. Para ver por que essa é uma idéia tão ruim, considere o caso limitador: você define a semente, desenha um número pseudo-aleatório, redefine a semente, desenha novamente e, assim, continua. Os números pseudo-aleatórios que você obtém nada mais são do que as sementes que você executa através de uma função matemática. Os resultados obtidos não serão transmitidos aleatoriamente, a menos que as sementes escolhidas sejam transmitidas aleatoriamente. Se você já teve esses números, por que está se incomodando em usar o gerador de números aleatórios pseudo-aleatórios?

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

Corcovado
fonte
15
Quem sabia que Stata tinha uma documentação tão interessante: "Outros tentam criar um número aleatório, imaginando que se incluírem dígitos suficientes, o resultado deve ser aleatório. Essa é uma variação da regra dos cinco segundos para alimentos descartados, e admitimos a usar as duas regras "
degenerado hessian
4

Em suma, os próprios números realmente não significam nada! Se você estiver olhando o código de outra pessoa (como nos dois exemplos que você deu acima), os números não alteram a funcionalidade da função; nem existem números "bons" para funções específicas. É apenas uma escolha dos autores.

Além disso, se você estiver definindo a semente apenas uma vez no código, poderá escolher o número que desejar. A única coisa de que você precisa ter um pouco de cuidado é que, se você interagir com outras funções que também usam números aleatórios, é bom escolher uma semente não óbvia (por isso é menos provável que vocês dois usem a mesma semente) )

No entanto, como o Corcovado realmente destaca, para alguns aplicativos, você precisa ter muito cuidado com a escolha que faz. Se matematicamente você precisar de vários números gerados pseudoaleatoriamente, não poderá haver um padrão para os números que você escolher.

KRS
fonte
1

A função set.seed () em R usa um argumento inteiro (arbitrário). Portanto, podemos usar qualquer argumento, digamos, 1 ou 123 ou 300 ou 12345 para obter os números aleatórios reproduzíveis.

Além disso, no pacote TeachingDemos, a função char2seed permite ao usuário definir a semente com base em uma sequência de caracteres.

Dr Nisha Arora
fonte