Können wir Base R verwenden, um 95% der Fläche unter einer Kurve zu finden?

8

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?

%Vor%

P.S Mit anderen Worten ist es sehr wünschenswert, wenn ein solches Intervall das kürzeste mögliche 95% Intervall ist.

    
rnorouzian 15.08.2017, 23:16
quelle

2 Antworten

11

Symmetrische Verteilung

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.

%Vor%

Benutze es so,

%Vor%

gibt

Asymmetrische Verteilung

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

%Vor%

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!).

    
Remko Duursma 15.08.2017, 23:45
quelle
1

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%     

Joseph Wood 16.08.2017 01:46
quelle