Losowa liczba Ustaw. Nasiona (N) w R [duplikat]


38

To pytanie ma już odpowiedź tutaj:

Zdaję sobie sprawę, że używa się set.seed()w R do generowania liczb pseudolosowych. Zdaję sobie również sprawę z tego, że używając tego samego numeru, np. set.seed(123)Ubezpieczenia, możesz odtwarzać wyniki.

Ale nie rozumiem, co oznaczają same wartości. Gram z kilkoma funkcjami, a niektóre używają set.seed(1)lub set.seed(300)lub set.seed(12345). Co oznacza ta liczba (jeśli w ogóle) - i kiedy powinienem użyć innej.

Przykład: w książce, nad którą pracuję - używają ich do set.seed(12345)tworzenia zestawu szkoleniowego dla drzew decyzyjnych. Następnie w innym rozdziale używają ich set.seed(300)do tworzenia Losowego lasu.

Tylko nie dostań numeru.


6
czy to pomaga? stackoverflow.com/questions/14684437/… Także? set.seed () w obrębie R zapewnia całkiem dobre informacje.
doug.numbers

6
Głównym celem korzystania z nasion jest możliwość odtworzenia określonej sekwencji liczb „losowych”. Ogólnie rzecz biorąc, jeśli nie musisz tego robić, nie ustawiłbyś nasion. Samo ziarno nie ma żadnego wewnętrznego znaczenia, z wyjątkiem tego, że jest to sposób, aby powiedzieć generatorowi liczb losowych „od czego zacząć”. Możesz pomyśleć o tym trochę jak związek między numerem PIN a twoim kontem bankowym. Kod PIN jest związany z długiego ciągu liczb (numer konta), ale to nie jest z natury interpretacji ilość (jest interpretacja, ale ustawienie go, że zostanie zignorowany).
Glen_b

4

Tylko komentarz: zalecam ustawienie tylko generatora losowego (i) do debugowania skryptu, znajdowania określonych błędów itp. Lub (ii) do wysyłania / publikowania wyników, aby można je było sprawdzić.
AADF

Odpowiedzi:


39

Wybrany numer początkowy jest punktem początkowym używanym do generowania sekwencji liczb losowych, dlatego (pod warunkiem, że używasz tego samego generatora liczb pseudolosowych) uzyskasz te same wyniki, otrzymując ten sam numer początkowy. Jeśli chodzi o twoje drugie pytanie, ten krótki fragment opisu równoważnej funkcjonalności w Stacie może być pomocny:

Nie możemy tego wystarczająco podkreślić: nie ustawiaj nasion zbyt często. Aby zobaczyć, dlaczego jest to tak zły pomysł, zastanów się nad ograniczającym przypadkiem: Ustawiasz ziarno, narysujesz jeden pseudolosowy numer, resetujesz ziarno, rysujesz ponownie i tak dalej. Otrzymane liczby pseudolosowe będą niczym innym jak ziarnami, które przejdziecie przez funkcję matematyczną. Otrzymane wyniki nie zostaną przekazane losowo, chyba że wybrane nasiona zostaną przekazane losowo. Jeśli masz już takie liczby, dlaczego w ogóle przeszkadza Ci użycie generatora liczb pseudolosowych?

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


15
Kto wiedział, że Stata ma tak interesującą dokumentację: „Inni próbują wymyślić losową liczbę, zastanawiając się, czy zawierają wystarczającą liczbę cyfr, wynik po prostu musi być losowy. Jest to odmiana pięciosekundowej reguły dla upuszczanego jedzenia, i przyznajemy do korzystania z obu tych zasad ”
zdegenerowany hessian

4

Krótko mówiąc, same liczby tak naprawdę nic nie znaczą! Jeśli patrzysz na kod innej osoby (jak w dwóch przykładach, które podałeś powyżej), liczby nie zmieniają funkcjonalności funkcji; nie ma też „dobrych” liczb dla określonych funkcji. To tylko wybór autora.

Ponadto, jeśli ustawiasz ziarno tylko raz w kodzie, możesz wybrać dowolną liczbę. Jedyną rzeczą, na którą musisz uważać, jest to, że jeśli łączysz się z innymi funkcjami, które również używają liczb losowych, dobrze jest wybrać nieoczywiste ziarno (więc jest mniej prawdopodobne, że oboje użyjesz tego samego ziarna ).

Jak jednak bardzo ładnie podkreśla Corcovado, w przypadku niektórych aplikacji należy bardzo uważać na dokonany wybór. Jeśli matematycznie potrzebujesz liczby pseudolosowo wygenerowanych liczb, to nie może być wzorca dla wybranych liczb.


1

Funkcja set.seed () w języku R przyjmuje (dowolną) liczbę całkowitą. Możemy więc wziąć dowolny argument, powiedzmy 1 lub 123 lub 300 lub 12345, aby uzyskać powtarzalne liczby losowe.

Ponadto w pakiecie TeachingDemos funkcja char2seed pozwala użytkownikowi ustawić ziarno na podstawie ciągu znaków.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.