Jak mogę ręcznie wygenerować liczbę losową z danego rozkładu, na przykład 10 realizacji ze standardowego rozkładu normalnego?
30
Jak mogę ręcznie wygenerować liczbę losową z danego rozkładu, na przykład 10 realizacji ze standardowego rozkładu normalnego?
Odpowiedzi:
Jeśli „ręcznie” obejmuje „mechaniczne”, masz wiele dostępnych opcji. Aby symulować zmienną Bernoulliego z połową prawdopodobieństwa, możemy rzucić monetą: dla ogonów, 1 dla głów. Aby zasymulować rozkład geometryczny, możemy policzyć, ile rzutów monetą potrzeba, zanim zdobędziemy głowy. Aby zasymulować rozkład dwumianowy, możemy podrzucić naszą monetę n razy (lub po prostu podrzucić n monet) i policzyć głowy. „Quincunx” lub „maszyna fasoli” lub „Galton skrzynka” jest bardziej kinetycznej alternatywę - dlaczego nie ustawić jeden do działania i zobaczyć na własne oczy ? Wygląda na to, że nie ma czegoś takiego jak „moneta ważona”0 1 n n ale jeśli chcemy zmienić parametr prawdopodobieństwa naszej zmiennej Bernoulliego lub zmiennej dwumianowej na wartości inne niż , igła Georges-Louis Leclerc, Comte de Buffon pozwoli nam to zrobić. Aby zasymulować dyskretny rozkład równomierny na { 1 , 2 , 3 , 4 , 5 , 6 } , rzucamy sześciościenną kostką. Fani gier fabularnych napotkają bardziej egzotyczne kości , na przykład kości czworościenne, aby próbkować jednolicie od { 1 , 2 , 3 , 4 }p=0.5 {1,2,3,4,5,6} {1,2,3,4} , podczas gdy za pomocą pokrętła lub ruletki można iść jeszcze dalej. ( Kredyt na zdjęcia )
Czy musielibyśmy być wściekli, aby generować losowe liczby w ten sposób dzisiaj, gdy jest tylko jedno polecenie na konsoli komputera - lub, jeśli mamy dostępną odpowiednią tabelę liczb losowych, jedną wyprawę do bardziej zakurzonych rogów półki na książki? Być może, choć w doświadczeniu fizycznym jest coś przyjemnego w dotyku. Ale dla osób pracujących przed erą komputerową, a właściwie przed szeroko dostępnymi wielkoskalowymi tabelami liczb losowych (których więcej później), ręczne symulowanie zmiennych losowych miało bardziej praktyczne znaczenie. Kiedy Buffon zbadał paradoks petersburski- słynna gra polegająca na rzucaniu monetami, w której suma wygranych gracza podwaja się za każdym razem, gdy rzucane są głowy, gracz przegrywa z pierwszymi ogonami, a spodziewana wypłata jest nieskończenie intuicyjna - musiał zasymulować rozkład geometryczny za pomocą . Aby to zrobić, wydaje się, że wynajął dziecko, aby rzuciło monetą, aby zasymulować 2048 odtworzeń gry w Petersburgu, rejestrując liczbę rzutów przed zakończeniem gry. Ten symulowany rozkład geometryczny jest odtworzony w Stigler (1991) :p=0.5
W tym samym eseju, w którym opublikował to empiryczne dochodzenie w sprawie paradoksu petersburskiego, Buffon przedstawił także słynną „ igłę Buffona ”. Jeśli płaszczyzna jest podzielona na paski równoległymi liniami w odległości od siebie, a igła o długości l ≤ d jest zrzucana na nią, prawdopodobieństwo, że igła przecina jedną z linii, wynosi 2 ld l≤d .2lπd
Igła Buffona może zatem służyć do symulacji zmiennej losowej lubX∼Dwumianowy(n,2lX∼Bernoulli(2lπd) , i możemy dostosować prawdopodobieństwo sukcesu, zmieniając długości naszych igieł lub (być może wygodniej) odległość, w której rządzimy liniami. Alternatywnym zastosowaniem igieł Buffona jest niesamowicie nieefektywny sposób na znalezienie probabilistycznego przybliżeniaπ. Obraz (kredyt) pokazuje 17 zapałek, z których 11 przecina linię. Gdy odległość między liniami liniowymi jest równa długości zapałki, tak jak tutaj, oczekiwany odsetek przekroczenia zapałek wynosi2X∼Binomial(n,2lπd) π , a tym samym można oszacować π w podwójnej odwrotności obserwowanego frakcji: tu uzyskać π =2⋅172π π^ . W 1901 Mario Lazzarini osiągając przeprowadzili doświadczenia stosując 2,5 cm igieł z liniami 3 cm jedna od drugiej, i po otrzymano 3408 rzutów gatunku =355π^=2⋅1711≈3.1 . Jest to dobrze znane racjonalne doπ, z dokładnością do sześciu miejsc po przecinku. Badger (1994) dostarcza przekonujących dowodów na to, że było to oszukańcze, zwłaszcza że aby być pewnym 95% pewności co do sześciu miejsc dziesiętnych za pomocą aparatu Lazzariniego, należy rzucić 134 biliony igieł porzucających cierpliwość! Z pewnością igła Buffona jest bardziej przydatna jako generator liczb losowych niż jako metoda szacowaniaπ.π^=355113 π π
Jak dotąd nasze generatory były rozczarowująco dyskretne. Co jeśli chcemy symulować rozkład normalny? Jedną z opcji jest uzyskanie losowych cyfr i użycie ich do utworzenia dobrych dyskretnych aproksymacji do równomiernego rozkładu na , a następnie wykonanie pewnych obliczeń w celu przekształcenia ich w losowe odchylenia normalne. Pokrętło lub koło ruletki może podawać cyfry dziesiętne od zera do dziewięciu; kostka może generować cyfry binarne; jeśli nasze umiejętności arytmetyczne poradzą sobie z zabawniejszą bazą, zrobiłby to nawet standardowy zestaw kości. Inne odpowiedzi obejmowały bardziej szczegółowo takie podejście oparte na transformacji; Odraczam dalszą dyskusję na ten temat do końca.[0,1]
Pod koniec XIX wieku użyteczność rozkładu normalnego była dobrze znana, dlatego też statystycy chętnie symulowali przypadkowe odchylenia normalne. Nie trzeba dodawać, że długie obliczenia ręczne nie byłyby odpowiednie, gdyby nie przede wszystkim skonfigurować proces symulacji. Po ustaleniu generowanie liczb losowych musiało być stosunkowo szybkie i łatwe. Stigler (1991) wymienia metody stosowane przez trzech statystyków tej epoki. Wszyscy badali techniki wygładzania: losowe odchylenia normalne były oczywistym przedmiotem zainteresowania, np. W celu symulacji błędu pomiaru, który musiał zostać wyrównany.
Wybitny amerykański statystyk Erastus Lyman De Forest był zainteresowany wygładzeniem tabel życia i napotkał problem, który wymagał symulacji wartości bezwzględnych odchyleń normalnych. W tym, co okaże się działającym motywem, De Forest naprawdę pobierał próbki z pół-normalnej dystrybucji . Co więcej, zamiast używać standardowego odchylenia jednego ( jesteśmy przyzwyczajeni do nazywania „standardowym”), De Forest chciał „prawdopodobnego błędu” (odchylenie środkowe) jednego. Taka była forma podana w tabeli „Prawdopodobieństwo błędów” w dodatkach do „Podręcznika astronomii sferycznej i praktycznej, tom II”Z∼N(0,12) William Chauvenet . Z tej tabeli De Forest interpolował kwantyle o rozkładzie półnormalnym, od do p = 0,995 , które uważał za „błędy o równej częstotliwości”.p=0.005 p=0.995
Jeśli chcesz zasymulować rozkład normalny, po De Forest, możesz wydrukować tę tabelę i pokroić ją. De Forest (1876) napisał, że błędy „zostały wpisane na 100 kawałków kart o równej wielkości, które zostały wstrząśnięte w pudełku i wszystkie wyciągnięte jeden po drugim”.
Astronom i meteorolog Sir George Howard Darwin (syn przyrodnika Charlesa) zmienił sytuację, opracowując coś, co nazwał „ruletką” do generowania przypadkowych odchyleń normalnych. Darwin (1877) opisuje, jak:
„Indeks” należy tutaj czytać jako „wskaźnik” lub „wskaźnik” (por. „Palec wskazujący”). Stigler wskazuje, że Darwin, podobnie jak De Forest, używał pół normalnej skumulowanej dystrybucji wokół dysku. Kolejne użycie losowej monety w celu uzyskania pełnego rozkładu normalnego. Stigler zauważa, że nie jest jasne, jak dokładnie została wyskalowana skala, ale zakłada, że instrukcja ręcznego zatrzymania dysku w połowie obrotu była „w celu zmniejszenia potencjalnego odchylenia w kierunku jednej części dysku i przyspieszenia procedury”.
Sir Francis Galton , nawiasem mówiąc, pół kuzyn Karola Darwina, został już wspomniany w związku ze swoim quincunx. Podczas gdy mechanicznie symuluje to rozkład dwumianowy, który według twierdzenia De Moivre – Laplace'a jest uderzająco podobny do rozkładu normalnego (i jest czasami wykorzystywany jako pomoc dydaktyczna w tym temacie), Galton stworzył o wiele bardziej skomplikowany schemat, gdy chciał próbka z rozkładu normalnego. Jeszcze bardziej niezwykłe niż niekonwencjonalne przykłady na górze tej odpowiedzi, Galton opracował normalnie rozmieszczone kości- lub dokładniej, zestaw kostek, które dają doskonałe dyskretne przybliżenie do rozkładu normalnego z medianowym odchyleniem. Te kości, pochodzące z 1890 roku, są zachowane w kolekcji Galton w University College London.
W artykule z 1890 r. W Nature Galton napisał, że:
Laboratorium eksperymentów statystycznych matematycznych Raazesh Sainudiin obejmuje projekt studencki z University of Canterbury, NZ, odtwarzający kości Galtona . Projekt obejmuje badanie empiryczne polegające na wielokrotnym rzucie kostką (w tym empiryczny CDF, który wygląda uspokajająco „normalnie”) oraz dostosowanie wyników kostek, aby były zgodne ze standardowym rozkładem normalnym. Wykorzystując oryginalne wyniki Galtona, istnieje również wykres dyskretnego rozkładu normalnego, za którym faktycznie podążają wyniki kości.
Na wielką skalę, jeśli jesteś przygotowany na rozciągnięcie „mechanicznego” na elektryczne, zauważ, że epicka RAND A Million Random Digits z 100 000 normalnych odchyleń była oparta na pewnego rodzaju elektronicznej symulacji koła ruletki. Z raportu technicznego (George'a W. Browna, pierwotnie z czerwca 1949 r.) Wynika:
Referencje
Badger, L. (1994). „ Szczęśliwe przybliżenie π Lazzariniego ”. Magazyn Matematyki . Mathematical Association of America. 67 (2): 83–91.
Darwin, GH (1877). „ O omylnych pomiarach zmiennych wielkości i traktowaniu obserwacji meteorologicznych. ” Philosophical Magazine , 4 (22), 1–14
De Forest, EL (1876). Interpolacja i regulacja szeregów . Tuttle, Morehouse and Taylor, New Haven, Conn.
Galton, F. (1890). „Kości do eksperymentów statystycznych”. Nature , 42 , 13-14
Stigler, SM (1991). „Symulacja stochastyczna w XIX wieku”. Nauki statystyczne , 6 (1), 89-97.
źródło
Na przykład w moim systemie operacyjnym Linux mogę to sprawdzić
Korzystanie z CLT w celu przybliżenia normalności z pewnością nie jest metodą, którą zaleciłbym, ponieważ (1) nadal potrzebujesz innych zmiennych, aby podać średnią, więc równie dobrze możesz użyć mundurów w algorytmie Boxa-Müllera i (2) dokładność rośnie dość powoli z liczbą symulacji. Zwłaszcza jeśli używasz dyskretnej zmiennej losowej, takiej jak wynik kości, nawet z więcej niż sześcioma twarzami . Cytat z Thomas i in. (2007), badanie zalet i wad gaussowskich generatorów losowych:
Oto szybki eksperyment ilustrujący problem: wygenerowałem 100-krotność średniej z 30 wyników kości:
dies=apply(matrix(sample(1:6,30*100,rep=TRUE),ncol=30),1,mean)
następnie znormalizował te średnie do średniej zero - wariancja zmienia się
stdies=(dies-3.5)/sqrt(35/12/30)
i spojrzał na normalne dopasowanie [lub jego brak] tej próbki:
dies
76/30
122/30
dopasowanie jest tak dobre, jak można oczekiwać dla Normalnej próbki o wielkości 200 (wystarczy wykreślić inną dla prawdziwej próbki normalnej
norma=rnorm(100)
):jak dodatkowo pokazuje test Kołmogorowa-Smirnowa:
źródło
To nie jest dokładnie przypadkowe, ale powinno być wystarczająco blisko, ponieważ wydaje się, że chcesz trudnego eksperymentu.
Użyj telefonu, aby ustawić chronometr. Po dobrych 10 sekundach przestań (im dłużej czekasz, tym bardziej zbliżasz się do naprawdę „losowego” wyniku, ale 10 sekund jest w porządku). Weź ostatnie cyfry (na przykład 10,67 s da ci 67). Zastosuj tabelę percentyli do rozkładu normalnego. W tym przykładzie musisz po prostu wyszukać 0,67, a znajdziesz numer. W takim przypadku wartość wynosi około 0,45. Nie jest to całkowicie precyzyjne, ale da ci solidne oszacowanie.
Jeśli rzucisz poniżej 50, po prostu zrób 100- [Twój wynik] i skorzystaj z tabeli. Twój wynik będzie taki sam, ze znakiem minus, ze względu na symetrię N (0,1).
źródło
Rzućmy obiektywną monetąn czasy. Zaczynając od zera, liczymy+ 1 jeśli głowy, - 1 jeśli ogony. Pon Moneta przewraca, dzielimy licznik przez n--√ . Wykorzystując centralne twierdzenie graniczne , jeślin jest wystarczająco duży, wówczas powinniśmy mieć „przybliżoną realizację” znormalizowanego gaussowskiego N.( 0 , 1 ) .
Czemu? Pozwolić
być iid zmiennymi losowymi Bernoulliego zP ( Xk= ± 1 ) = 12) . Stąd,
PozwolićY: = X1+ X2)+ ⋯ + Xn . Stąd,
Normalizujący,
otrzymujemy zmienną losową o wariancji jednostkowej
źródło
Warto zauważyć, że po wygenerowaniu jednorodnej zmiennej (0,1) można wygenerować dowolną zmienną losową, dla której można obliczyć odwrotną wartość cdf, po prostu podłączając jednolitą zmienną losową do odwrotnego CDF.
Jak więc ręcznie obliczyć mundur (0,1)? Jak wspomniano w @Silverfish, istnieje wiele kości używanych przez tradycyjnych graczy RPG. Jednym z nich jest dziesięciostronna kostka. Zakładając, że to uczciwa kostka, możemy teraz wygenerować dyskretny mundur (0, 9).
Możemy również użyć tego munduru (0,9) do przedstawienia pojedynczej cyfry zmiennej losowej. Więc jeśli użyjemy dwóch kości, otrzymamy jednolitą zmienną losową, która może przyjmować wartości0,01 , 0,02 , . . . , 0,99 , 1,00 . Dzięki trzem kostkom możemy uzyskać jednolity rozkład0,001 , 0,002 , . . . , 0,999 , 1,000 .
Możemy więc zbliżyć się do ciągłego munduru (0,1), przybliżając go dyskretnie rozłożonym dyskretnie jednolitym rozkładem z kilkoma kostkami 10-stronnymi. Można to następnie podłączyć do odwrotnego CDF, aby wygenerować losową zmienną będącą przedmiotem zainteresowania.
źródło