Unter Verwendung von Base R fragte ich mich, ob ich den 95% -Bereich unter der als posterior
bezeichneten Kurve ermitteln könnte?
Genauer gesagt möchte ich von der mode
(der grünen gestrichelten Linie) in Richtung der Schwänze gehen und dann aufhören, wenn ich 95% der Kurvenfläche bedeckt habe. Gewünscht sind die X-Achsen-Werte, die die Grenzen dieses 95% -Bereichs darstellen, wie in der folgenden Abbildung gezeigt?
P.S Mit anderen Worten ist es sehr wünschenswert, wenn ein solches Intervall das kürzeste mögliche 95% Intervall ist.
Obwohl das Beispiel von OP nicht genau symmetrisch war, ist es nah genug - und nützlich, um dort zu beginnen, da die Lösung viel einfacher ist.
Sie können eine Kombination aus integrate
und optimize
verwenden. Ich schrieb dies als eine benutzerdefinierte Funktion, aber beachten Sie, dass Sie, wenn Sie dies in anderen Situationen verwenden, die Grenzen für das Durchsuchen des Quantils möglicherweise überdenken müssen.
Benutze es so,
%Vor%gibt
Im Falle einer asymmetrischen Verteilung müssen wir zwei Punkte suchen, die das Kriterium P (a & lt; x & lt; b) = Prob erfüllen, wobei Prob eine gewünschte Wahrscheinlichkeit ist. Da es unendlich viele Intervalle (a, b) gibt, die dies erfüllen, schlug OP vor, den kürzesten zu finden.
Wichtig in der Lösung ist die Definition von domain
, die Region, in der wir suchen wollen (wir können -Inf, Inf
nicht verwenden, also muss der Benutzer dies auf vernünftige Werte setzen).
Nun benutze den obigen Code wie folgt. Ich benutze eine sehr asymmetrische Funktion (nehme an, dass mydist eigentlich ein kompliziertes pdf ist, nicht das dgamma).
%Vor% In diesem Beispiel setze ich die Domäne auf (0,10), da das Intervall eindeutig irgendwo da sein muss. Beachten Sie, dass die Verwendung eines sehr großen Werts wie (0, 1E05) nicht funktioniert, weil integrate
Probleme mit langen Sequenzen von Nullen hat. Auch für Ihre Situation müssen Sie die Domain anpassen (es sei denn, jemand hat eine bessere Idee!).
Hier ist eine Lösung, die die Trapezregel verwendet. Sie werden bemerken, dass die Lösung, die von @Remko bereitgestellt wird, weit überlegen ist, aber diese Lösung bringt hoffentlich einen pädagogischen Wert, da sie zeigt, wie komplizierte Probleme auf einfache Geometrie, arithmetische und grundlegende Programmierkonstrukte wie for loops
reduziert werden können >
%Vor%
Tags und Links optimization r function distribution integrate