Numero casuale-Set.seed (N) in R [duplicato]


38

Questa domanda ha già una risposta qui:

Mi rendo conto che uno usa set.seed()in R per la generazione di numeri pseudo-casuali. Mi rendo anche conto che usando lo stesso numero, come le set.seed(123)assicurazioni, puoi riprodurre i risultati.

Ma quello che non capisco è cosa significano i valori stessi. Sto giocando con diverse funzioni e alcuni usano set.seed(1)oset.seed(300) o set.seed(12345). Cosa significa quel numero (se non altro) - e quando dovrei usarne uno diverso.

Esempio, in un libro su cui sto lavorando, usano set.seed(12345) quando creano un set di addestramento per gli alberi delle decisioni. Quindi, in un altro capitolo, stanno usando set.seed(300)per creare una foresta casuale.

Basta non ottenere il numero.


6
questo aiuta? stackoverflow.com/questions/14684437/... anche? set.seed () all'interno di R fornisce abbastanza buone informazioni.
doug.numbers,

6
Il punto principale dell'uso del seme è di essere in grado di riprodurre una particolare sequenza di numeri "casuali". In generale, se non è necessario essere in grado di farlo, non si dovrebbe impostare il seme. Il seme stesso non ha alcun significato intrinseco, tranne che è un modo per dire al generatore di numeri casuali "da dove cominciare". Potresti pensarlo un po 'come la relazione tra un numero PIN e il tuo conto bancario. Il PIN è associato con una lunga stringa di numeri (il numero di conto), ma non è di per sé una quantità interpretabile (c'è un'interpretazione, ma nella creazione di esso, si ignora quello).
Glen_b -Restate Monica

4
Per la cronaca, 42 è sempre il seme giusto
Repmat

Solo un commento: consiglio di impostare solo un generatore casuale (i) per eseguire il debug di uno script, per trovare alcuni errori particolari, ecc. O (ii) per inviare / pubblicare i risultati in modo che possano essere controllati.
AADF,

Risposte:


39

Il numero di seme che scegli è il punto di partenza utilizzato nella generazione di una sequenza di numeri casuali, motivo per cui (a condizione che tu usi lo stesso generatore di numeri pseudo-casuali) otterrai gli stessi risultati dato lo stesso numero di seme. Per quanto riguarda la tua seconda domanda, questo breve frammento della descrizione della funzionalità equivalente in Stata potrebbe essere utile:

Non possiamo enfatizzarlo abbastanza: non impostare il seme troppo spesso. Per capire perché questa è una cattiva idea, considera il caso limite: imposti il ​​seme, disegni un numero pseudocasuale, resetta il seme, disegna di nuovo e così continua. I numeri pseudocasuali ottenuti non saranno altro che i semi che attraversi una funzione matematica. I risultati ottenuti non passeranno casualmente a meno che i semi scelti non passino casualmente. Se avevi già questi numeri, perché ti stai nemmeno preoccupando di usare il generatore di numeri pseudocasuali?

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


15
Chi sapeva che Stata avesse una documentazione così interessante: "Altri cercano di inventare un numero casuale, immaginando che includano cifre sufficienti, il risultato deve essere solo casuale. Questa è una variazione della regola dei cinque secondi per il cibo scartato, e lo ammettiamo all'utilizzo di entrambe queste regole "
Assia degenerata il

4

In breve, i numeri stessi non significano davvero nulla! Se stai guardando il codice di qualcun altro (come nei due esempi che hai dato sopra), i numeri non alterano la funzionalità della funzione; né ci sono numeri "buoni" per funzioni specifiche. Dipende solo dalla scelta degli autori.

Inoltre, se stai impostando il seme una sola volta nel tuo codice, puoi scegliere qualsiasi numero che ti piace. L'unica cosa di cui devi fare un po 'attenzione è che, se ti interfaccia con altre funzioni che usano anche numeri casuali, allora è bene scegliere un seme non ovvio (quindi è meno probabile che entrambi utilizzino lo stesso seme ).

Tuttavia, come sottolinea Corcovado, per alcune applicazioni, devi stare molto attento alla scelta che fai. Se matematicamente hai bisogno di un numero di numeri generati in modo pseudo-casuale, allora non può esserci un modello per i numeri che scegli.


1

La funzione set.seed () in R accetta un argomento intero (arbitrario). Quindi possiamo prendere qualsiasi argomento, diciamo, 1 o 123 o 300 o 12345 per ottenere i numeri casuali riproducibili.

Inoltre, nel pacchetto TeachingDemos, la funzione char2seed consente all'utente di impostare il seme in base a una stringa di caratteri.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.