2013-08-13 14 views
5

Próbuję zrozumieć, jak działa set.seed w R. Rozumiem, mogę odtworzyć losowe próbki, ale nie wiem jaka jest różnica między set.seed(1) i set.seed(123)?Argument set.seed w R

Co oznacza argument w nawiasie?

Odpowiedz

5

seed argumentem set.seed jest pojedyncza wartość, interpretowana jako liczba całkowita (zgodnie z definicją w help(set.seed()). Na seed w set.seed produkuje losowych wartości, które są unikalne dla tej seed (i będzie taki sam, niezależnie od komputera, uruchomić, a tym samym gwarantuje powtarzalność). Więc losowe wartości generowane przez set.seed(1) i set.seed(123) nie będzie taki sam, ale losowe wartości generowane przez R w komputerze przy użyciu set.seed(1) i R w moim komputerze przy użyciu tego samego seed są takie same.

set.seed(1) 
x<-rnorm(10,2,1) 
> x 
[1] 1.373546 2.183643 1.164371 3.595281 2.329508 1.179532 2.487429 2.738325 2.575781 1.694612 
set.seed(123) 
y<-rnorm(10,2,1) 
> y 
[1] 1.4395244 1.7698225 3.5587083 2.0705084 2.1292877 3.7150650 2.4609162 0.7349388 1.3131471 1.5543380 

> identical(x,y) 
[1] FALSE 
+0

Przede wszystkim bardzo dziękuję za wyjaśnienie tego w prosty sposób. Ale skąd mam wiedzieć, która liczba musi być parametrem? – trollster

+0

Nie ma znaczenia, który numer wybierzesz, ponieważ wszystkie generują losowe wartości. – Metrics

3

T większość programów komputerowych używa algorytmów deterministycznych do generowania liczb losowych (co jest przyczyną, że generowane przez nie liczby nie są naprawdę przypadkowe, ale pseudolosowe, które jest wystarczająco dobre dla większości celów). R nie jest różny i możesz myśleć o losowych liczbach, które generuje jako część bardzo długiego łańcucha "losowych" liczb, które po przywołaniu zaczynają się w pewnym momencie i wypluwają dla ciebie liczby pseudolosowe. Korzystając z set.seed() zasadniczo dajesz programowi punkt wyjścia, zamiast pozwolić mu wybrać własny. Dlatego każdy użytkownik o tym samym numerze początkowym uzyska te same wyniki. Aby uzyskać więcej informacji na ten temat, można uruchomić numer ?RNGkind.

+0

Najwyraźniej istnieje pakiet R o nazwie "losowy", który generuje prawdziwe zmienne losowe. Nie testowałem jednak (jak już wspomniałem, pseudorandom jest zwykle wystarczająco dobry): http://dirk.eddelbuettel.com/code/random.html –

Powiązane problemy