Wie addiere und subtrahiere ich Wahrscheinlichkeitsverteilungen wie reelle Zahlen?

9

Ich hätte gerne Ihren Rat: Könnten Sie eine Bibliothek empfehlen, mit der Sie PDFs (Wahrscheinlichkeitsdichtefunktionen) wie echte Zahlen addieren / subtrahieren / multiplizieren / teilen können?

Hinter den Kulissen müsste es ein Monte-Carlo machen, um das Ergebnis auszuarbeiten, also würde ich wahrscheinlich etwas Schnelles und Effizientes bevorzugen, das jede GPU im System nutzen kann.

Aktualisierung:

Dies ist die Art von C # -Code, die ich suche:

%Vor%

Aktualisierung:

Was ich suche, ist eine Methode, um die Algebra auf "Wahrscheinlichkeitsformen" in Der Fehler der Mittelwerte von Sam Savage zu implementieren . Das Video Monte-Carlo-Simulation in Matlab erläutert den Effekt, den ich möchte - eine Bibliothek, die mathematische Berechnungen für eine Reihe von Eingabeverteilungen durchführt .

Aktualisierung:

Wenn Sie nach folgendem suchen, werden Informationen zu den entsprechenden Bibliotheken angezeigt:

  • "Monte Carlo Bibliothek"
  • "Monte Carlo C ++"
  • "Monte Carlo Matlab"
  • "Monte Carlo .NET"
Contango 07.06.2011, 20:11
quelle

3 Antworten

2

Mit dem Kit @Risk Developer können Sie mit einer Reihe von Wahrscheinlichkeitsdichtefunktionen beginnen und anschließend Algebra ausführen die Eingänge, um etwas Ausgang zu erhalten, dh P = A + B.

Die Keywords auf dieser Seite können verwendet werden, um andere konkurrierende Angebote zu finden, z. versuche nach:

  • "Monte Carlo Simulationsmodell C ++"
  • "Monte Carlo Simulationsmodell .NET"
  • "Risikoanalyse-Toolkit"
  • "Verteilen von Anpassungsfähigkeiten".

Es ist nicht so schwer, dies in einer Sprache wie C ++ oder .NET zu programmieren. Der Monte-Carlo-Anteil ist wahrscheinlich nur etwa 50 Zeilen Code:

  • Lesen Sie " Der Fehler der Mittelwerte " von Sam Savage, um zu verstehen, wie Sie die Algebra auf "Wahrscheinlichkeitsformen" anwenden können.
  • Verfügen Sie über eine Methode zum Erzeugen einer "Wahrscheinlichkeitsform", entweder durch Bootstrapping von einigen abgetasteten Daten oder von einer vorher festgelegten Wahrscheinlichkeitsdichtefunktion, oder indem Sie Math.NET-Wahrscheinlichkeitsbibliothek .
  • Nimm 10000 Stichproben aus den Eingabewahrscheinlichkeitsformen.
  • Führe die Algebra an den Samples durch, d. h. +, -, /, * usw., um 1000 Ausgaben zu erhalten. Sie können auch einen Wahrscheinlichkeitsbaum bilden, der and, oder, usw. auf den Eingaben bedeutet.
  • Kombinieren Sie diese 10000 Ausgänge zu einer neuen "Wahrscheinlichkeitsform", indem Sie die Ergebnisse in 100 diskrete "Buckets" setzen.
  • Nun, da wir eine neue "Wahrscheinlichkeitsform" haben, können wir diese als Eingabe in einen neuen Wahrscheinlichkeitsbaum verwenden oder eine Integration durchführen, um den Bereich zu erhalten, der ihn bei gegebenem Schwellenwert wieder in eine harte Wahrscheinlichkeitszahl umwandelt.
  • Das Video Monte-Carlo-Simulation in Matlab erklärt diesen ganzen Prozess viel besser als ich.
Contango 08.06.2011, 08:10
quelle
1

@Gravitas - Basierend auf diesem Austausch mit @ user207442 klingt es so, als ob Sie nur ein Objekt wollen, das eine Faltung für Addition und Subtraktion abstrahiert. Es gibt sicherlich eine geschlossene Form für das Produkt von zwei Zufallsvariablen, aber es könnte von der Verteilung abhängen.

C # 's heiße neue Stiefschwester, F #, lassen Sie uns ein paar Spaß FP-Techniken machen, und es integriert sich nahtlos mit C #. Ihr Ziel, einen "zufälligen Variablen" -Typ zu abstrahieren, der "summiert" (gefaltet) oder "multipliziert" (??) sein kann, scheint nach eine Monade . Hier ist ein einfaches Beispiel .

Edit: müssen Sie mcmc in c # neu erfinden? Wir verwenden Winbugs dafür in meiner Schule ... das ist die C ++ - Bibliothek, die winbugs verwendet: Ссылка . Anstatt das Rad neu zu erfinden, könntest du deinen Code einfach um das C ++ wickeln (wieder scheint es, als würden Monaden hier in die Hand kommen)?

    
egbutter 08.06.2011 09:01
quelle
0

Sehen Sie sich die Math.NET Numerics-Bibliothek an. Hier ist die Seite, die für die Verteilung der Wahrscheinlichkeitsverteilung spezifisch ist.

    
safwanc 07.06.2011 20:35
quelle

Tags und Links