Kiedy stosować symulacje?

40

To bardzo proste i głupie pytanie. Jednak kiedy byłem w szkole, bardzo mało uwagi poświęciłem całej koncepcji symulacji w klasie, co trochę mnie przeraziło.

  1. Czy potrafisz wyjaśnić proces symulacji w kategoriach laików? (może służyć do generowania danych, współczynników regresji itp.)

  2. Jakie są praktyczne sytuacje / problemy, kiedy można zastosować symulacje?

Wolałbym, żeby podane przykłady były w R.

AMathew
źródło
10
(2) ma już ponad tysiąc odpowiedzi na tej stronie: wyszukaj symulację .
whuber
@ Tim Jedyną rzeczą, z którą nie mogę się zgodzić w moim komentarzu jest to, że nasza strona ma ponad tysiąc odpowiedzi zawierających symulacje, ale jest to obiektywny fakt, którego prawdę możesz zweryfikować. Nie twierdziłem, wyraźne ani dorozumiane, że reprezentuje to kompletną lub reprezentatywną listę czegokolwiek. Jako zbiór faktycznych przykładów jest on jednak znacznie bogatszy i bardziej szczegółowy niż jakakolwiek indywidualna odpowiedź mogłaby kiedykolwiek mieć nadzieję, i jako taka jest cennym źródłem informacji dla każdego, kto chciałby dalej zadawać pytanie (2).
whuber
@ whuber ok, dobra uwaga.
Tim

Odpowiedzi:

42

Modelu ilościowego naśladuje pewne zachowanie świecie przez (a) reprezentacji obiektów przez niektóre ich właściwości numerycznych i (b) łączenie tych numerów w określony sposób w celu wytworzenia wyjścia numeryczne, które również stanowią właściwości będących przedmiotem zainteresowania.

Ryc. 1: model deterministyczny

Na tym schemacie trzy dane liczbowe po lewej stronie są łączone, aby uzyskać jeden wynik liczbowy po prawej stronie. Linie liczbowe wskazują możliwe wartości danych wejściowych i wyjściowych; kropki pokazują konkretne używane wartości. W dzisiejszych czasach komputery cyfrowe zwykle wykonują obliczenia, ale nie są one niezbędne: modele zostały obliczone przy pomocy ołówka i papieru lub poprzez zbudowanie „analogowych” urządzeń w drewnie, metalu i obwodach elektronicznych.

Na przykład być może poprzedni model sumuje swoje trzy dane wejściowe. Rkod dla tego modelu może wyglądać

inputs <- c(-1.3, 1.2, 0) # Specify inputs (three numbers)
output <- sum(inputs)     # Run the model
print(output)             # Display the output (a number)

Jego wynik jest po prostu liczbą,

-0,1

Nie możemy doskonale poznać świata: nawet jeśli model działa dokładnie tak, jak świat, nasze informacje są niedoskonałe, a rzeczy na świecie są różne. Symulacje (stochastyczne) pomagają nam zrozumieć, w jaki sposób taka niepewność i zmienność danych wejściowych modelu powinna przełożyć się na niepewność i zmienność wyników. Robią to, zmieniając losowo dane wejściowe, uruchamiając model dla każdej odmiany i podsumowując kolektywne wyniki.

„Losowo” nie oznacza arbitralnie. Modeler musi określić (świadomie lub nie, jawnie lub pośrednio) zamierzone częstotliwości wszystkich danych wejściowych. Częstotliwości wyjściowe zapewniają najbardziej szczegółowe podsumowanie wyników.

Rys.: Losowe dane wejściowe

Ten sam model, pokazany z losowymi danymi wejściowymi i wynikowym (obliczonym) losowym wynikiem.

Na rysunku pokazano częstotliwości z histogramami przedstawiającymi rozkłady liczb. Te przeznaczone częstotliwości wejściowe są pokazane na wejściach w lewo, natomiast obliczona częstotliwość wyjściowa, otrzymuje się przez uruchomienie modelowi wiele razy, jest pokazany po prawej stronie.

Każdy zestaw danych wejściowych do modelu deterministycznego daje przewidywalny wynik liczbowy. Gdy model jest używany w symulacji stochastycznej, wynikiem jest rozkład (taki jak długi szary pokazany po prawej stronie). Rozpiętość rozkładu wyników mówi nam, jak można oczekiwać, że wyniki modelu będą się zmieniać, gdy zmieniają się dane wejściowe.

Powyższy przykład kodu można zmodyfikować w ten sposób, aby przekształcić go w symulację:

n <- 1e5 # Number of iterations
inputs <- rbind(rgamma(n, 3, 3) - 2,
                runif(n, -2, 2),
                rnorm(n, 0, 1/2))
output <- apply(inputs, 2, sum)
hist(output, freq=FALSE, col="Gray")

Jego dane wyjściowe zostały podsumowane histogramem wszystkich liczb wygenerowanych przez iterację modelu z następującymi losowymi danymi wejściowymi:

Histogram

Zaglądając za kulisy, możemy sprawdzić niektóre z wielu losowych danych wejściowych, które zostały przekazane do tego modelu:

rownames(inputs) <- c("First", "Second", "Third")
print(inputs[, 1:5], digits=2)

100,000

        [,1]  [,2]  [,3]  [,4]  [,5]
First  -1.62 -0.72 -1.11 -1.57 -1.25
Second  0.52  0.67  0.92  1.54  0.24
Third  -0.39  1.45  0.74 -0.48  0.33

Prawdopodobnie odpowiedź na drugie pytanie brzmi, że symulacji można używać wszędzie. W praktyce oczekiwany koszt przeprowadzenia symulacji powinien być niższy niż prawdopodobna korzyść. Jakie są korzyści ze zrozumienia i kwantyfikacji zmienności? Są dwa podstawowe obszary, w których jest to ważne:

  • Poszukiwanie prawdy , jak w nauce i prawie. Sama liczba jest przydatna, ale o wiele bardziej użyteczna jest wiedza o jej dokładności lub pewności.

  • Podejmowanie decyzji, jak w biznesie i życiu codziennym. Decyzje równoważą ryzyko i korzyści. Ryzyko zależy od możliwości złych wyników. Symulacje stochastyczne pomagają ocenić tę możliwość.

Systemy komputerowe stały się wystarczająco potężne, aby wielokrotnie wykonywać realistyczne, złożone modele. Oprogramowanie ewoluowało, aby w szybki i łatwy sposób generować i podsumowywać wartości losowe (jak Rpokazuje drugi przykład). Te dwa czynniki połączyły się przez ostatnie 20 lat (i więcej) do tego stopnia, że ​​symulacja jest rutynowa. Pozostaje pomóc ludziom (1) określić odpowiednie rozkłady nakładów i (2) zrozumieć rozkład wyników. Jest to dziedzina ludzkiej myśli, w której komputery jak dotąd niewiele pomagały.

Whuber
źródło
1
co za świetna odpowiedź! Szczególnie podoba mi się, że „Losowo” nie oznacza arbitralnie ”.
Haitao Du
29

Po pierwsze, pozwól mi powiedzieć, że nie ma jednej odpowiedzi na twoje pytanie. Istnieje wiele przykładów tego, kiedy można (lub trzeba) korzystać z symulacji. Spróbuję podać kilka przykładów poniżej. Po drugie, zauważ, że istnieje wiele sposobów definiowania „symulacji” , więc odpowiedź przynajmniej częściowo zależy od wybranej definicji.

Przykłady:

1. Jesteś statystyką bayesowską , więc symulacja jest twoją metodą wyboru do robienia statystyk. Istnieją nie oparte na symulacji sposoby podejścia do statystyki bayesowskiej, jednak w zdecydowanej większości przypadków używasz symulacji. Aby dowiedzieć się więcej, przeczytaj książkę „Analiza danych bayesowskich” Gelmana (lub inne możliwe zasoby).

Tθθθθθ

3. Nie masz danych lub jest to bardzo ograniczone. Powiedz, że chcesz wiedzieć, jaki byłby możliwy wynik wojny nuklearnej. Niestety (miejmy nadzieję) wcześniej nie było wojny nuklearnej, więc nie masz żadnych danych. W tym przypadku możesz skorzystać z symulacji komputerowej, w której przyjmujesz pewne założenia dotyczące rzeczywistości, a następnie pozwalasz komputerom tworzyć równoległe rzeczywistości wirtualne, w których dochodzi do wojny nuklearnej, dzięki czemu masz próbki możliwych wyników.

4. Twój model statystyczny nie pasuje do oprogramowania lub jest skomplikowany. Takie podejście jest zalecane na przykład przez Gelmana i Hilla w „Analizy danych z wykorzystaniem regresji i modeli wielopoziomowych / hierarchicznych” , w których opisują estymację Bayesa opartą na symulacji jako „następny krok” w modelowaniu regresji.

5. Chcesz dowiedzieć się o możliwych wynikach skomplikowanego procesu. Wyobraź sobie, że chcesz prognozować przyszły wynik jakiegoś skomplikowanego procesu, problemem jest jednak to, że zachowanie twojego procesu jest chaotyczne i biorąc pod uwagę różne dane wejściowe, otrzymujesz różne dane wyjściowe, a liczba możliwych danych wejściowych jest bardzo duża. Zasadniczo miało to miejsce, ponieważ metody symulacyjne Monte Carlo zostały wynalezione przez fizyków i matematyków pracujących nad bombą nuklearną podczas II wojny światowej. Dzięki symulacji próbujesz różnych danych wejściowych i zbierasz próbki, aby uzyskać ogólny pogląd na temat możliwych wyników.

6. Twoje dane nie spełniają kryteriów niektórych metod statystycznych , np. Mają przekrzywiony rozkład, podczas gdy powinny być normalne. W niektórych przypadkach nie jest to tak naprawdę problemem , ale czasem tak jest, dlatego wymyślono metody oparte na symulacji, takie jak bootstrap .

7. Testowanie modelu teoretycznego względem rzeczywistości. Masz model teoretyczny niż opisuje jakiś proces, np. Rozprzestrzenianie się epidemii za pośrednictwem sieci społecznościowej. Możesz użyć modelu do wygenerowania niektórych danych, abyś mógł porównać, czy symulowany jest podobny do rzeczywistych danych. Lada Adamic podaje wiele przykładów takiego zastosowania do analizy sieci społecznościowych w swojej klasie Coursera (patrz niektóre dema tutaj ).

8. Generowanie danych „hipotezy 0”. Generujesz fałszywe (losowe) dane, aby porównać z nimi rzeczywiste dane. Jeśli w twoich danych były jakieś znaczące efekty lub trendy, powinny one różnić się od danych generowanych losowo. Takie podejście jest popierane przez Buja i in. (2009) w swoim artykule „Wnioskowanie statystyczne dla eksploracyjnej analizy danych i diagnostyki modelu”, w którym proponują, w jaki sposób wykorzystanie wykresów może ułatwić eksploracyjną analizę danych i testowanie hipotez (patrz także dokumentacja pakietu nullabor R, który wdraża te pomysły).

Tim
źródło
22

Myślę, że dyskusja na temat odpowiedzi TrynnaDoStat dobrze ilustruje tę kwestię: używamy symulacji, gdy problem jest niemożliwy do analitycznego rozwiązania (np. Tylne rozkłady parametrów w modelu hierarchicznym) lub gdy jesteśmy po prostu zbyt zirytowani, aby poświęcić czas na wypracowanie rozwiązania analitycznie.

W oparciu o to, co zaobserwowałem na tej stronie, próg „wystarczająco irytujący, aby zasymulować” różni się znacznie między statystykami. Ludzie tacy jak @whuber mogą najwyraźniej rzucić okiem na problem i natychmiast zobaczyć rozwiązanie, podczas gdy zwykli śmiertelnicy tacy jak ja będą musieli dokładnie rozważyć problem i być może poczytać trochę przed napisaniem procedury symulacyjnej, aby wykonać ciężką pracę.

Należy pamiętać, że symulacje niekoniecznie są panaceum, ponieważ przy dużych zestawach danych lub skomplikowanych modelach, lub w obu przypadkach będziesz spędzać ogromne ilości czasu (komputerowego) na szacowanie i sprawdzanie swojej symulacji. Na pewno nie jest to warte wysiłku, jeśli można osiągnąć ten sam cel z godziną starannego rozważenia.

Przywróć Monikę
źródło
14

Symulacje są często wykonywane, gdy nie możesz uzyskać zamkniętego formularza dla czegoś (takiego jak dystrybucja) lub chcesz bardzo drobiazgowy i szybki sposób na uzyskanie tego.

XYβXf(β)=P(Y=1|X=1)P(Y=1|X=0)ββf(β)

TrynnaDoStat
źródło
Nie nazwałbym symulacji „szybkimi”, są to wyczerpujące obliczeniowo metody i często zajmują dużo więcej czasu niż przy użyciu metody ML.
Tim
2
To jest o wiele szybsze niż uzyskiwanie dystrybucji.
TrynnaDoStat
3
Jak często uruchamiasz algorytm ML przez ponad tydzień non-stop ..?
Tim
Tangent re: „rozkład współczynnika β dla X jest normalny” - nie zastanawiałem się nad tym, ale po pewnej symulacji stwierdzam, że często nie jest to prawdą w przypadku podpróbek mniejszych niż około 500 i / lub w przypadku współczynników, których średnia jest wyższa niż pewna siła, powiedzmy, +/- 3. Brzmi dobrze?
rolando2
Teoria MLE mówi nam, że w pewnych warunkach prawidłowości MLE jest asymptotycznie normalny. Dodam to do mojej odpowiedzi.
TrynnaDoStat
11

Symulacje to doskonały sposób na sprawdzenie, czy można uzyskać przydatne oszacowania z modelu.

Zrobiłbyś to, generując / symulując fałszywe dane, które odpowiadają rozkładowi sugerowanemu przez Twój model. Następnie śmiało i dopasuj swój model do tych danych. Jest to idealny przypadek: twój model jest w rzeczywistości prawdziwy. Jeśli więc dopasowanie jest głośne lub niedokładne, oznacza to, że istnieje problem z procedurą szacowania lub samym modelem.

Podobnie można symulować dane przy użyciu „niewłaściwego” procesu generowania danych i wykorzystywać te fałszywe dane do oceny, w jaki sposób naruszone założenia modelu wpływają na twoje szacunki. Jest to często nazywane analizą wrażliwości .

Punkty te są podobne do punktów 2 i 8 w odpowiedzi Tima, a także nieco bardziej doraźnej wersji procedury w odpowiedzi Whubera.


Symulacje są również wykorzystywane do wykonywania predykcyjnego sprawdzania modelu, jak zalecają Andrew Gelman i inni. Sprowadza się to do ponownego podłączenia danych predykcyjnych do modelu, a następnie symulowania fałszywych danych odpowiedzi z domniemanego rozkładu, aby sprawdzić, czy symulowane dane są wystarczająco blisko (według dowolnego kryterium, którego używasz) w rzeczywistości.

Pamiętaj, że to nie to samo, co tylko obliczanie dopasowanych wartości. Na przykład w modelu regresji dopasowanymi wartościami są średnie warunkowe; aby przeprowadzić kontrolę predykcyjną modelu regresji, trzeba będzie raz narysować rozkład Gaussa wyśrodkowany na każdej dopasowanej wartości.

Shadowtalker
źródło
6

Najprostszy przypadek symulacji. Załóżmy, że masz model prognozowania liczby niespłaconych pożyczek, masz również model strat z tytułu niespłaconych pożyczek. Teraz musisz przewidzieć całkowitą stratę, jaką jest iloczyn niewykonania zobowiązania i straty z tytułu niewykonania zobowiązania. Nie można po prostu pomnożyć wartości domyślnych i strat w przypadku wartości domyślnych, aby uzyskać przedziały ufności całkowitej straty.

xix1x2

Ten dokument zawiera opis MBA na poziomie MBA tego przypadku użycia do oszacowania ryzyka operacyjnego, w którym masz rozkłady częstotliwości i kwot strat i łącz je, aby uzyskać całkowity rozkład strat.

Aksakal
źródło