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.
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.
Odpowiedzi:
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 R
przykł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")
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 R
to 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 ...
R
zachowanie jest czysto przypadkowe.
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.