Ich habe einige Daten, die ich visualisieren muss, und bin mir nicht sicher, wie ich das am besten machen soll. Ich habe eine Reihe von Basiselementen mit den jeweiligen Frequenzen F = { f 1 , ⋯ , f n } und den Ergebnissen O ∈ { 0 , 1 } n. Jetzt muss ich zeichnen, wie gut meine Methode die niederfrequenten Elemente "findet" (dh ein 1-Ergebnis). Ich hatte anfangs nur eine x-Achse der Frequenz und eine a-Achse von 0-1 mit Punktdiagrammen, aber es sah schrecklich aus (besonders beim Vergleich von Daten aus zwei Methoden). Das heißt, jeder Punkt hat ein Ergebnis (0/1) und ist nach seiner Häufigkeit geordnet.
Hier ist ein Beispiel mit den Ergebnissen einer einzelnen Methode:
Meine nächste Idee war, die Daten in Intervalle zu unterteilen und eine lokale Empfindlichkeit über die Intervalle zu berechnen, aber das Problem bei dieser Idee ist, dass die Häufigkeitsverteilung nicht unbedingt einheitlich ist. Wie sollte ich die Intervalle am besten auswählen?
Kennt jemand eine bessere / nützlichere Möglichkeit, diese Art von Daten zu visualisieren, um die Effektivität des Findens seltener (dh sehr niederfrequenter) Elemente darzustellen?
quelle
Antworten:
Was ich in der Vergangenheit getan habe, ist im Grunde das, was Sie mit einem Löss hinzugefügt haben . Abhängig von der Punktdichte würde ich wie unten gezeigt durchscheinende Punkte (Alpha) und / oder Rohrsymbole ("|") verwenden, um die Überlappung zu minimieren.
(Ich denke nicht, dass sich die Fehlerbalken an den Rändern hier verbreitern sollten, aber es gibt keine einfache Möglichkeit, dies mit der internen stat_smooth-Funktion von ggplot zu tun. Wenn Sie diese Methode für Real in R verwenden würden, könnten wir dies tun durch Schätzen des Lösses und seines Fehlerbalkens vor dem Plotten.)
( Bearbeiten: Und Pluspunkte für Kommentare von Andy W. zum Ausprobieren von vertikalem Jitter, wenn die Dichte der Daten dies nützlich macht, und von Mimshot zu geeigneten Konfidenzintervallen.)
quelle
geom_point(size=2, alpha=0.4)
mitgeom_jitter(size=2, alpha=0.4, position = position_jitter(height = .02))
.ggplot2
, um die richtigen CIs bereitzustellen ? Ich habe eine Handlung mit CIs, von[0,1]
denen eindeutig die falsche Berechnung stammtÜberlegen Sie auch, welche Skalen für Ihren Anwendungsfall am besten geeignet sind. Angenommen, Sie führen eine visuelle Inspektion durch, um in logistischer Regression zu modellieren, und möchten einen kontinuierlichen Prädiktor visualisieren, um festzustellen, ob Sie Ihrem Modell einen Spline- oder Polynomterm hinzufügen müssen. In diesem Fall möchten Sie möglicherweise eher eine Skala für die Log-Quoten als für die Wahrscheinlichkeit / das Verhältnis.
Die Funktion im Kern unten verwendet einige begrenzte Heuristiken, um den kontinuierlichen Prädiktor in Bins aufzuteilen, den mittleren Anteil zu berechnen, in logarithmische Quoten umzuwandeln und dann
geom_smooth
über diese aggregierten Punkte zu zeichnen .Beispiel dafür, wie dieses Diagramm aussieht, wenn eine Kovariate eine quadratische Beziehung (+ Rauschen) zu den Log-Quoten eines binären Ziels hat:
Erstellt am 06.02.2019 durch das reprex-Paket (v0.2.1)
Zum Vergleich sehen Sie hier, wie diese quadratische Beziehung aussehen würde, wenn Sie nur die Einsen / Nullen zeichnen und Folgendes hinzufügen würden
geom_smooth
:Erstellt am 25.02.2019 durch das reprex-Paket (v0.2.1)
Die Beziehung zu logit ist weniger klar und die Verwendung
geom_smooth
hat einige Probleme.quelle
Ich bin damit einverstanden, dass das Posten nur einiger Zeilen mit Beispieldaten einen langen Weg gehen würde. Wenn ich die Frage verstehe, wäre es meiner Meinung nach am einfachsten, die Häufigkeit anhand des gefundenen Anteils darzustellen.
Zuerst werde ich einige Beispieldaten in R generieren; Bitte korrigieren Sie mich, wenn ich Sie nicht richtig verstanden habe.
Und jetzt zeichnen Sie einfach die Frequenz (
F
) durchproportion
:quelle