Czy tworzę uprzedzenia za pomocą tego samego losowego ziarna w kółko?

31

W prawie wszystkich pracach analitycznych, które kiedykolwiek przeprowadziłem, używam:

set.seed(42) 

To hołd dla Autostopowicza po Galaktyce . Ale zastanawiam się, czy tworzę uprzedzenia, używając ciągle tego samego ziarna.

Brandon Bertelsen
źródło
9
Jak używasz nasion? W zależności od typowego przypadku użycia odpowiedź waha się od tak na nie.
Momo
Brandon, co jeśli ludzie odpowiedzą TAK? Co zrobisz? Czuję lęk.
ttnphns
@Momo Powiedzmy, że zawsze to ustawiam, ponieważ obawiam się, że zapomnę i nie będę w stanie odtworzyć moich wyników. Dotyczy to niezależnych i różnych rodzajów eksperymentów. Byłbym wdzięczny za zrozumienie zarówno tak, jak i żadnych przypadków.
Brandon Bertelsen,
@ttnphns Traktować to jak wyciągniętą lekcję?
Brandon Bertelsen,
Można odtwarzać wyniki bez względu na to, czy są one stronnicze, czy nie. Ale jeśli wielkość próby (liczba niezależnych eksperymentów lub obserwacji) wyprodukowana w tym nasionku nie zbliży się do okresu macierzyństwa, pewne uprzedzenia będą się utrzymywać. Zauważ jeszcze dwie ważne rzeczy: zwykle używamy pseudolosowych generatorów, co komplikuje dla ciebie konsekwencje. Konsekwencje zależą również od tego, jakiego typu generatora losowego używasz (np. Twister Mersenne czy co?). Dlatego w przypadku poważnych prób losowych zawsze lepiej jest ustawić ziarno na losowe.
ttnphns

Odpowiedzi:

31

Nie ma uprzedzeń, jeśli RNG jest jakikolwiek dobry. Używając zawsze tego samego materiału siewnego, tworzysz silną współzależność między wszystkimi symulacjami, które wykonujesz w swojej karierze. Stwarza to niezwykłe ryzyko.

  • Używając tego samego ziarna za każdym razem, albo zawsze otrzymujesz całkiem niezłą sekwencję pseudolosową i cała twoja praca idzie dobrze lub - z bardzo niskim, ale niezerowym prawdopodobieństwem - zawsze używasz dość złej sekwencji, a twoje symulacje nie są jako reprezentatywne dla podstawowych dystrybucji, jak myślisz, że mogą być. Albo cała twoja praca jest całkiem dobra, albo cała kiepska!

  • Porównaj to za każdym razem przy użyciu naprawdę losowych nasion początkowych. Raz na bardzo długi czas możesz uzyskać sekwencję losowych wartości, które nie są reprezentatywne dla modelowanego rozkładu, ale przez większość czasu będziesz w porządku. Jeśli nigdy nie próbowałeś powielać własnej pracy (z nowym nasieniem), to raz czy dwa w swojej karierze możesz uzyskać mylące wyniki, ale w przeważającej większości będziesz w porządku.

Istnieje proste i oczywiste lekarstwo: zawsze zawsze sprawdzaj swoją pracę, uruchamiając ponownie z innym ziarnem. Jest praktycznie niemożliwe, aby dwa nasiona przypadkowo dały w ten sam sposób wprowadzające w błąd wyniki.

Z drugiej strony posiadanie dobrze znanego „osobistego nasienia” ma niezwykłą wartość: pokazuje światu, że jesteś uczciwy. Chytry, subtelny sposób na kłamstwo z symulacjami polega na powtarzaniu ich, dopóki nie dadzą z góry określonego wyniku. Oto działający Rprzykład, aby „wykazać”, że nawet uczciwa moneta z dużym prawdopodobieństwem wyląduje ponad połowę czasu:

n.flips <- 100
seeds <- 1:10^3
#
# Run some preliminary simulations.
#
results <- sapply(seeds, function(seed) {
  set.seed(seed)
  mean(runif(n.flips) > 1/2)
})
#
# Now do the "real" simulation.
#
seed <- seeds[which.max(results)]
set.seed(seed)
x <- mean(runif(n.flips) > 1/2)
z <- (x - 1/2) * 2 * sqrt(n)
cat("Mean:", x, "Z:", z, "p-value:", pnorm(z, lower.tail=FALSE), "\n")

11061007550p=0.000004

Implikacje mogą być fascynujące i ważne. Na przykład, jeśli z góry wiedziałbym, kogo będę rekrutował do randomizowanego badania z podwójnie ślepą próbą i w jakiej kolejności (którą mógłbym kontrolować jako profesor uniwersytecki badający grupę uwięzionych studentów lub szczurów laboratoryjnych), to wcześniej mogłem przeprowadzić taki zestaw symulacji, aby znaleźć ziarno, które grupuje uczniów bardziej według moich upodobań, aby faworyzować to, co chciałem „udowodnić”. Mogłem to planowany porządek i że materiał siewny w moim planie doświadczalnym przedprzeprowadzając eksperyment, tworząc w ten sposób procedurę, której żaden krytyczny recenzent nigdy nie byłby w stanie przebić - ale mimo to ułożył talię na moją korzyść. (Wydaje mi się, że istnieją całe gałęzie pseudonauki, które wykorzystują jakiś wariant tej sztuczki, aby zyskać wiarygodność. Czy uważasz, że faktycznie użyłem ESP do sterowania komputerem? Mogę to zrobić na odległość z twoim!)

Ktoś, kto zna domyślny seed, nie może zagrać w tę grę.

Mój osobisty materiał siewny ma 17 lat , co potwierdza duża część moich postów (obecnie 155 z 161 postów, które ustawiają nasiona, używa tego). W Rto trudne do pracy z nasion, ponieważ (jak się okazuje) większość małych zbiorów danych tworzę z nim silną odrębne stanowisko. To niezła cecha ...

Whuber
źródło
5
17
4
@Matthew To wraca do grupy uczniów szkół średnich, którzy interesują się matematyką, którzy studiowali teorię liczb pewnego lata temu. Jeden, o ile pamiętam, żartobliwie zaproponował 17 jako archetypową liczbę całkowitą, a nasza grupa szybko znalazła wiele racjonalizacji tego, niektóre z matematycznych zainteresowań, a niektóre tylko z humorem (przynajmniej z punktu widzenia matematyka). Istnieją interesujące matematyczne i historyczne właściwości tej liczby, które wyróżniają ją na uwagę, takie jak odkrycie Gaussa konstruktywności 17-gonu. Rzachowanie jest czysto przypadkowe.
whuber
4
@Mathew BTW, moje nasiona są spokrewnione z Brandonem: są dokładnie 42 uporządkowane pary odrębnych liczb całkowitych o wielkości 17 lub mniejszej :-).
whuber
8
Kiedyś byłem w stanie zbudować 17-gon z linijką i kompasem jako imprezową sztuczkę. Wydaje mi się, że dla właściwej definicji imprezy ...
Matthew Drury
1
@MatthewDrury oni poppin butelek na imprezie.
Brandon Bertelsen,
2

Jak wspomniano powyżej, dobry RNG nie będzie generował stronniczości przy użyciu tego samego materiału siewnego. Jednak między wynikami pojawi się korelacja. (Ta sama pseudolosowa liczba rozpocznie każde obliczenie.) To, czy ma to znaczenie, nie jest kwestią matematyki.

Korzystanie z tego samego materiału siewnego jest czasami przydatne: do debugowania lub gdy wiesz, że chcesz skorelowanych wyników.

ttw
źródło