Wie man ggplots stat_density2d korrekt interpretiert

9
Mein ursprüngliches Ziel war es, eine Population von einzelnen Punkten zu zeichnen und dann eine konvexe Hülle zu zeichnen, die 80% dieser Population um die Masse der Bevölkerung herum zentriert.

Nachdem ich eine Reihe von Ideen ausprobiert hatte, war die beste Lösung, die ich mir ausgedacht hatte, ggplot s stat_density2d zu verwenden. Während dies für eine qualitative Analyse gut funktioniert, muss ich immer noch eine 80% Grenze angeben. Ich habe nach einem Weg gesucht, um die Grenze des 80. Perzentils Bevölkerung zu umreißen, aber ich kann stattdessen mit einer Dichtegrenze von 80% Wahrscheinlichkeit arbeiten.

Hier suche ich nach Hilfe. Der Parameter bin für kde2d (verwendet von stat_density2d ) ist nicht eindeutig dokumentiert. Wenn ich in dem folgenden Beispiel bin = 4 setze, bin ich richtig bei der Interpretation der zentralen (grünen) Region, die eine Masse von 25% Wahrscheinlichkeit enthält und die kombinierten gelben, roten und grünen Flächen eine 75% ige Wahrscheinlichkeit darstellen? Wenn dies der Fall ist, würde dann, wenn der Behälter auf = 5 geändert wird, der Bereich, der dann beschrieben wird, gleich einer 80% igen Wahrscheinlichkeits-Masse sein?

%Vor%

Ich wiederholte eine Anzahl von Testfällen und zählte manuell die ausgeschlossenen Punkte [würde gerne einen Weg finden, um sie zu zählen, basierend auf welcher Ebene .. sie waren darin enthalten], aber angesichts der zufälligen Natur der Daten (sowohl meine reale Daten und die Testdaten) die Anzahl der Punkte außerhalb des stat_density2d -Bereichs war so unterschiedlich, dass sie nach Hilfe fragen konnten.

Zusammenfassend, gibt es eine praktische Möglichkeit, ein Polygon um die zentralen 80% der Population von Punkten im Datenrahmen zu zeichnen? Oder bin ich sicher, dass ich stat_density2d verwenden kann und bin bin gleich 5, um eine 80% ige Wahrscheinlichkeitsmasse zu erzeugen?

Ausgezeichnete Antwort von Bryan Hanson, die die unscharfe Vorstellung, dass ich einen undokumentierten bin -Parameter in stat_density2d übergeben könnte, zerstreute. Die Ergebnisse sahen nahe bei Werten für bin um 4 bis 6 aus, aber wie er sagte, ist die tatsächliche Funktion unbekannt und daher nicht verwendbar.

Ich habe den HDRegionplot verwendet, wie er in der akzeptierten Antwort von DWin zur Verfügung gestellt wurde, um mein Problem zu lösen. Dazu habe ich einen Schwerpunkt ( COGravity ) und einen Punkt im Polygon ( pnt.in.poly ) aus dem SDMTools -Paket hinzugefügt, um die Analyse abzuschließen.

%Vor%

    
jclouse 12.10.2013, 00:58
quelle

2 Antworten

2

HPDregionplot im Paket: emdbook soll das machen. Es verwendet MASS :: kde2d, normalisiert aber das Ergebnis. Es hat den Nachteil, dass es ein mcmc-Objekt erfordert.

%Vor%

    
42- 12.10.2013, 13:04
quelle
2

Okay, lassen Sie mich damit beginnen, dass ich mir dieser Antwort nicht ganz sicher bin, und es ist nur eine teilweise Antwort! Es gibt keinen bin -Parameter für MASS::kde2d , was die von stat_density2d verwendete Funktion ist. Betrachtet man die Hilfeseite für kde2d und den Code dafür (einfach durch Eingabe des Funktionsnamens in der Konsole), denke ich, dass der Parameter bin h ist (wie diese Funktionen bin an% weitergeben können) co_de% ist jedoch nicht klar). Nach der Hilfeseite sehen wir, dass, wenn h nicht angegeben ist, es von h berechnet wird. Die Hilfeseite für diese Funktion sagt dies:

%Vor%

Darauf basierend denke ich, dass die Antwort auf Ihre letzte Frage ("Bin ich sicher ...") definitiv nein ist. MASS:bandwidth.nrd in der obigen Funktion ist, was Sie für Ihre Annahme brauchen, um sicher zu sein, aber es ist deutlich verändert, so dass Sie nicht sicher sind. HTH.

Zusätzlicher Gedanke: Haben Sie Beweise dafür, dass Ihr Code das Argument r verwendet? Ich frage mich, ob es ignoriert wird. Wenn ja, versuchen Sie, bins anstelle von h zu übergeben und sehen Sie, ob es abhört.

    
Bryan Hanson 12.10.2013 13:08
quelle

Tags und Links