Wann werden Simulationen verwendet?


40

Das ist also eine sehr einfache und dumme Frage. Als ich in der Schule war, widmete ich dem gesamten Konzept der Simulationen im Unterricht jedoch nur sehr wenig Aufmerksamkeit, und das hat mich ein wenig verängstigt.

  1. Können Sie den Simulationsprozess mit Laien erklären? (Kann zur Generierung von Daten, Regressionskoeffizienten usw. dienen.)

  2. Was sind einige praktische Situationen / Probleme, wenn man Simulationen verwenden würde?

Ich würde es vorziehen, wenn Beispiele in R gegeben würden.


10
(2) hat bereits über tausend Antworten auf dieser Website: Suche nach simulieren .
Whuber

@Tim Das einzige, mit dem ich in meinem Kommentar nicht einverstanden bin, ist, dass unsere Website über tausend Antworten mit Simulationen enthält, aber das ist eine objektive Tatsache, deren Wahrheit Sie selbst überprüfen können. Ich habe weder ausdrücklich noch stillschweigend behauptet, dass dies eine vollständige oder repräsentative Liste von irgendetwas darstellt. Als eine Reihe konkreter Beispiele ist es jedoch weitaus umfangreicher und detaillierter als jede einzelne Antwort jemals zu erwarten wäre und als solche eine wertvolle Ressource für jeden, der die Frage (2) weiter verfolgen möchte.
whuber

@whuber ok, guter Punkt.
Tim

Antworten:


42

Ein quantitatives Modell emuliert ein bestimmtes Verhalten der Welt, indem (a) Objekte durch einige ihrer numerischen Eigenschaften dargestellt werden und (b) diese Zahlen auf bestimmte Weise kombiniert werden, um numerische Ausgaben zu erzeugen, die auch Eigenschaften von Interesse darstellen.

Abbildung 1: Ein deterministisches Modell

In diesem Schema werden drei numerische Eingaben links kombiniert, um eine numerische Ausgabe rechts zu erzeugen. Die Zahlenzeilen geben mögliche Werte der Ein- und Ausgänge an. Die Punkte zeigen bestimmte Werte an. Heutzutage führen digitale Computer die Berechnungen in der Regel durch, sind jedoch nicht unbedingt erforderlich: Modelle wurden mit Bleistift und Papier oder durch den Bau "analoger" Geräte in Holz-, Metall- und elektronischen Schaltkreisen berechnet.

Zum Beispiel summiert das vorhergehende Modell vielleicht seine drei Eingaben. RCode für dieses Modell könnte so aussehen

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

Seine Ausgabe ist einfach eine Zahl,

-0,1

Wir können die Welt nicht perfekt kennen: Selbst wenn das Modell genau so funktioniert wie die Welt, sind unsere Informationen unvollständig und die Dinge auf der Welt variieren. (Stochastische) Simulationen helfen uns zu verstehen, wie sich eine solche Unsicherheit und Variation der Modelleingaben in Unsicherheit und Variation der Ausgaben niederschlagen sollte. Dazu werden die Eingaben nach dem Zufallsprinzip variiert, das Modell für jede Variation ausgeführt und die kollektive Ausgabe zusammengefasst.

"Zufällig" bedeutet nicht willkürlich. Der Modellierer muss (ob wissentlich oder nicht, ob explizit oder implizit) die beabsichtigten Frequenzen aller Eingaben angeben. Die Frequenzen der Ausgänge bieten die detaillierteste Zusammenfassung der Ergebnisse.

Abbildung: Zufällige Eingaben

Das gleiche Modell mit zufälligen Eingaben und der daraus resultierenden (berechneten) zufälligen Ausgabe.

Die Abbildung zeigt Häufigkeiten mit Histogrammen zur Darstellung von Zahlenverteilungen. Die beabsichtigten Eingangsfrequenzen werden für die Eingänge auf der linken Seite angezeigt, während die berechnete Ausgangsfrequenz, die durch mehrmaliges Ausführen des Modells erhalten wurde, auf der rechten Seite angezeigt wird.

Jeder Satz von Eingaben in ein deterministisches Modell erzeugt eine vorhersagbare numerische Ausgabe. Wenn das Modell jedoch in einer stochastischen Simulation verwendet wird, ist die Ausgabe eine Verteilung (wie die rechts gezeigte lange graue). Die Streuung der Ausgabeverteilung gibt Aufschluss darüber, wie unterschiedlich die Modellausgaben sein können, wenn sich ihre Eingaben ändern.

Das vorstehende Codebeispiel könnte folgendermaßen geändert werden, um daraus eine Simulation zu machen:

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")

Die Ausgabe wurde mit einem Histogramm aller Zahlen zusammengefasst, die durch die Iteration des Modells mit diesen zufälligen Eingaben generiert wurden:

Histogramm

Wir werfen einen Blick hinter die Kulissen und sehen uns einige der vielen zufälligen Eingaben an, die an dieses Modell übergeben wurden:

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

Die Antwort auf die zweite Frage lautet wohl, dass Simulationen überall eingesetzt werden können. In der Praxis sollten die erwarteten Kosten für die Durchführung der Simulation geringer sein als der wahrscheinliche Nutzen. Welche Vorteile bringt es, die Variabilität zu verstehen und zu quantifizieren? Es gibt zwei Hauptbereiche, in denen dies wichtig ist:

  • Suche nach der Wahrheit , wie in der Wissenschaft und im Gesetz. Eine Zahl an sich ist nützlich, aber es ist weitaus nützlicher zu wissen, wie genau oder sicher diese Zahl ist.

  • Entscheidungen treffen, wie im Geschäftsleben und im täglichen Leben. Entscheidungen gleichen Risiken und Nutzen aus. Risiken hängen von der Möglichkeit schlechter Ergebnisse ab. Stochastische Simulationen helfen, diese Möglichkeit einzuschätzen.

Computersysteme sind leistungsfähig genug geworden, um realistische, komplexe Modelle wiederholt auszuführen. Es wurde eine Software entwickelt, die das schnelle und einfache Generieren und Zusammenfassen von Zufallswerten unterstützt (wie das zweite RBeispiel zeigt). Diese beiden Faktoren haben sich in den letzten 20 Jahren (und mehr) zu einem Punkt zusammengeschlossen, an dem Simulation Routine ist. Was bleibt, ist zu helfen, (1) geeignete Verteilungen von Inputs zu spezifizieren und (2) die Verteilung von Outputs zu verstehen. Das ist die Domäne des menschlichen Denkens, in der Computer bisher wenig hilfreich waren.


1
Was für eine großartige Antwort! Ich mag besonders "" Zufällig "bedeutet nicht willkürlich."
Haitao Du

29

Lassen Sie mich zunächst sagen, dass es keine einheitliche Antwort auf Ihre Frage gibt. Es gibt mehrere Beispiele, wann Sie die Simulation verwenden können (oder müssen). Ich werde versuchen, Ihnen nachfolgend einige Beispiele zu nennen. Zweitens gibt es mehrere Möglichkeiten, eine "Simulation" zu definieren , sodass die Antwort zumindest teilweise von der von Ihnen gewählten Definition abhängt.

Beispiele:

1. Sie sind ein Bayes-Statistiker , daher ist die Simulation die Methode Ihrer Wahl, um Statistiken zu erstellen. Es gibt nicht simulationsbasierte Ansätze für die Bayes'sche Statistik, in den meisten Fällen verwenden Sie jedoch die Simulation. Weitere Informationen finden Sie im Buch "Bayesian Data Analysis" von Gelman (oder in anderen möglichen Ressourcen).

Tθθθθθ

3. Sie haben die Daten nicht oder sie sind sehr begrenzt. Angenommen, Sie möchten wissen, was der mögliche Ausgang eines Atomkrieges sein könnte. Leider (hoffentlich) gab es vorher keinen Atomkrieg, so dass Sie keine Daten haben. In diesem Fall können Sie eine Computersimulation verwenden, bei der Sie einige Annahmen über die Realität treffen und dann Computer parallele virtuelle Realitäten erstellen lassen, in denen der Atomkrieg stattfindet, sodass Sie einige Beispiele möglicher Ergebnisse haben.

4. Ihr statistisches Modell passt nicht zur Software oder ist kompliziert. Dieser Ansatz wird beispielsweise von Gelman und Hill in "Data Analysis Using Regression" und "Multilevel / Hierarchical Models" vertreten , wo sie die simulationsbasierte Bayes'sche Schätzung als "nächsten Schritt" in der Regressionsmodellierung beschreiben.

5. Sie möchten mögliche Ergebnisse eines komplizierten Prozesses kennenlernen. Stellen Sie sich vor, Sie möchten das zukünftige Ergebnis eines komplizierten Prozesses vorhersagen. Das Problem ist jedoch, dass das Verhalten Ihres Prozesses chaotisch ist und bei unterschiedlichen Eingaben unterschiedliche Ausgaben erzielt werden, während die Anzahl der möglichen Eingaben sehr groß ist. Im Allgemeinen war dies der Fall, weil Monte-Carlo-Simulationsmethoden von Physikern und Mathematikern erfunden wurden, die während des Zweiten Weltkriegs an Atombomben arbeiteten. Bei der Simulation probieren Sie verschiedene Eingaben aus und sammeln Stichproben, um sich einen Überblick über die möglichen Ergebnisse zu verschaffen.

6. Ihre Daten erfüllen nicht die Kriterien für eine statistische Methode , z. B. die Verteilung ist schief, obwohl dies normal sein sollte. In einigen Fällen ist dies kein wirkliches Problem , aber manchmal ist es so, dass simulationsbasierte Methoden wie Bootstrap erfunden wurden.

7. Ein theoretisches Modell gegen die Realität testen. Sie haben ein theoretisches Modell, das einen bestimmten Prozess beschreibt, z. B. die Ausbreitung einer Epidemie über ein soziales Netzwerk. Sie können das Modell verwenden, um einige Daten zu generieren, damit Sie vergleichen können, ob die simulierten Daten den tatsächlichen Daten ähnlich sind. Lada Adamic gibt mehrere Beispiele für eine solche Verwendung für die Analyse sozialer Netzwerke in ihrer Coursera-Klasse (siehe einige Demos hier ).

8. Erzeugen von "Hypothese 0" -Daten. Sie generieren gefälschte (zufällige) Daten, um die realen Daten damit zu vergleichen. Wenn Ihre Daten signifikante Auswirkungen oder Trends aufweisen, sollten sie sich von den zufällig generierten Daten unterscheiden. Dieser Ansatz wird von Buja et al. (2009) in ihrer Arbeit "Statistical Inference for Exploratory Data Analysis and Model Diagnostics", in der sie vorschlagen, wie die Verwendung von Plots eine exploratorische Datenanalyse und einen Hypothesentest erleichtern kann (siehe auch Dokumentation des nullabor R-Pakets, das diese Ideen implementiert).


22

Ich denke, dass die Diskussion der Antwort von TrynnaDoStat den Punkt gut verdeutlicht: Wir verwenden Simulationen, wenn das Problem nicht analytisch zu lösen ist (z. B. die hintere Verteilung von Parametern in einem hierarchischen Modell) oder wenn wir einfach zu verärgert sind, um die Zeit in zu investieren Die Lösung analytisch erarbeiten.

Basierend auf dem, was ich auf dieser Website beobachtet habe, variiert die Schwelle von "nervig genug, um zu simulieren" stark zwischen den Statistikern. Leute wie @whuber können anscheinend auf ein Problem blicken und sofort die Lösung sehen, während Sterbliche wie ich das Problem sorgfältig prüfen und vielleicht etwas lesen müssen, bevor sie eine Simulationsroutine schreiben, um die harte Arbeit zu erledigen.

Denken Sie daran, dass Simulationen kein Allheilmittel sein müssen, da Sie bei großen Datenmengen oder komplizierten Modellen oder beidem enorm viel (Computer-) Zeit für die Schätzung und Überprüfung Ihrer Simulation benötigen. Es ist sicherlich nicht die Mühe wert, wenn Sie das gleiche Ziel mit einer Stunde sorgfältiger Überlegung erreichen könnten.


14

Simulationen werden oft durchgeführt, wenn Sie für etwas (z. B. eine Distribution) kein geschlossenes Formular erhalten können oder wenn Sie einen genauen und schnellen Weg suchen, um an das etwas zu gelangen.

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


Ich würde Simulationen nicht als "schnell" bezeichnen, da dies rechenintensive Methoden sind und oft viel mehr Zeit in Anspruch nehmen als mit dem ML-Ansatz.
Tim

2
Es ist verdammt viel schneller als die Verteilung abzuleiten.
TrynnaDoStat

3
Wie oft führen Sie einen ML-Algorithmus mehr als eine Woche ohne Unterbrechung aus?
Tim

Tangens re: "Verteilung des Koeffizienten β für X ist normal" - Ich hatte nicht viel darüber nachgedacht, aber nach einer Simulation stelle ich fest, dass dies bei Teilproben von weniger als etwa 500 und / oder bei Koeffizienten, deren Durchschnitt über dem Durchschnitt liegt, häufig nicht zutrifft eine gewisse Stärke, sagen wir +/- 3. Ton richtig?
Rolando2

Die MLE-Theorie besagt, dass die MLE unter bestimmten Regelmäßigkeitsbedingungen asymptotisch normal ist. Ich werde dies zu meiner Antwort hinzufügen.
TrynnaDoStat

11

Simulationen sind eine hervorragende Möglichkeit, um zu überprüfen, ob Sie nützliche Schätzungen aus einem Modell abrufen können.

Sie würden dies tun, indem Sie gefälschte Daten generieren / simulieren, die der von Ihrem Modell implizierten Verteilung folgen. Dann passen Sie Ihr Modell an diese Daten an. Dies ist ein idealer Fall: Ihr Modell ist in der Tat wahr. Wenn also die Anpassung verrauscht oder ungenau ist, wissen Sie, dass ein Problem mit dem Schätzverfahren oder dem Modell selbst vorliegt.

In ähnlicher Weise können Sie Daten mithilfe des "falschen" Datenerzeugungsprozesses simulieren und diese gefälschten Daten verwenden, um zu bewerten, wie sich die Verletzung von Modellannahmen auf Ihre Schätzungen auswirkt. Dies wird häufig als Sensitivitätsanalyse bezeichnet .

Diese Punkte ähneln den Punkten 2 und 8 in Tims Antwort sowie einer etwas ad-hoceren Version des Verfahrens in Whubers Antwort.


Simulationen werden auch verwendet, um vorausschauende Modellprüfungen durchzuführen , wie dies von Andrew Gelman und anderen befürwortet wird. Dies bedeutet, dass Sie Ihre Prädiktor-Daten wieder in das Modell einfügen und dann gefälschte Antwortdaten aus der implizierten Verteilung simulieren, um festzustellen, ob Ihre simulierten Daten (nach welchem ​​Kriterium auch immer) nahe genug an der Realität liegen.

Beachten Sie, dass dies nicht das Gleiche ist wie die Berechnung angepasster Werte. In einem Regressionsmodell sind die angepassten Werte beispielsweise bedingte Durchschnittswerte. Um eine Vorhersageprüfung für ein Regressionsmodell durchzuführen, müssen Sie einmal aus der Gaußschen Verteilung zeichnen, die auf jedem angepassten Wert zentriert ist.


6

Der einfachste Fall für die Simulation. Nehmen wir an, Sie haben ein Prognosemodell für die Anzahl der Kreditausfälle und ein Modell für Verluste aus ausgefallenen Krediten. Nun müssen Sie den Gesamtverlust prognostizieren, den das Produkt aus Ausfällen und Verlusten aufgrund des Ausfalls ergibt. Sie können die Standardwerte und Verluste nicht einfach mit den Standardwerten multiplizieren, um die Konfidenzintervalle des Gesamtverlusts zu erhalten.

xix1x2

Dieses Dokument enthält eine Beschreibung dieses Anwendungsfalls für die Abschätzung des Betriebsrisikos auf MBA-Ebene, in der Sie die Verteilungen der Verlusthäufigkeit und -beträge kennen und diese kombinieren, um die Gesamtverlustverteilung zu erhalten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.