Verbesserung der Datenanalyse durch bessere Visualisierung von Daten?

8

Ich habe vier Programme a, b, c, d parallel auf zwei verschiedenen Maschinen Xund Y10 Mal getrennt ausgeführt. Das Folgende ist ein Beispiel der Daten. Die Laufzeiten (Millisekunden) in den 10Läufen jedes Programms werden unter ihren jeweiligen Namen angegeben.

Machine-X:

a b  c d
29 40 21 18
28 43 20 18
30 49 20 28
29 50 19 19
28 51 21 19
29 41 30 29
32 47 10 18
29 43 20 18
28 51 30 29
29 41 21 19


Machine-Y:

a b c d
16 24 19 18
16 24 19 18
16 23 19 18
16 24 19 18
16 24 19 18
16 22 19 18
16 24 19 18
16 24 19 18
16 24 19 18
16 24 19 18

Ich muss Diagramme erstellen, um Folgendes zu visualisieren:

  1. Vergleichen Sie die Leistung jedes Programms (dh die Laufzeit) auf den Maschinen X und Y.
  2. Vergleichen Sie die Variation der Laufzeiten jedes Programms auf den Maschinen X und Y.
  3. Welche Maschine ist fair darin, jedem Programm Rechenressourcen zur Verfügung zu stellen?
  4. Vergleichen Sie die Gesamtlaufzeiten (a + b + c + d) der vier Programme in jedem Lauf auf beiden Maschinen X und Y.
  5. Vergleichen Sie die Variation der Gesamtlaufzeiten der vier Programme in den 10 Läufen.

Für 1 und 2 habe ich Abbildung A gemacht, Abbildung B für 3 und Abbildung C für 4 und 5. Ich bin jedoch nicht zufrieden, da es drei Diagramme gibt und es schwierig ist, alle drei Diagramme in mein Papier einzupassen. Darüber hinaus glaube ich, dass wir besser produzieren können als diese. Ich weiß es wirklich zu schätzen, wenn mir jemand hilft, ein oder zwei schöne Diagramme anstelle von drei in R zu zeichnen und gleichzeitig meine Anforderungen zu erfüllen. Unten finden Sie den R-Code, mit dem ich diese Diagramme erstellt habe.

Abbildung A:

Abbildung A.

Abbildung B: Die X-Achse zeigt die Läufe, die Y-Achse zeigt die Laufzeiten der vier Programme in einem bestimmten Lauf.

Abbildung B.

Abbildung C:

Abbildung C.

R-Code

> pdf("Figure A.pdf")
> par(mfrow=c(1,2))
> boxplot(x,boxwex=0.4, ylim=c(15, 60))
> mtext("Time", side=2, line=2)
> mtext("Running times of each program in 10 runs", side=3, line=2, at=6,cex=1.4)
> mtext("Machine X", side=3, line=0.5, at=2,cex=1.1)
> boxplot(y,boxwex=0.4, ylim=c(15, 60))
> mtext("Machine Y", side=3, line=0.4, at=2,cex=1.1)
> dev.off()



> pdf("Figure B.pdf")
> par(mfrow=c(1,2))
>  boxplot(t(x),boxwex=0.4, ylim=c(0,50))
> mtext("Run Number", side=1, line=2, at=12, cex=1.2)
> mtext("Fairness", side=3, line=2, at=12,cex=1.4)
>  mtext("Machine X", side=3, line=0.5, at=5,cex=1.1)
> boxplot(t(y),boxwex=0.4, ylim=c(0,50))
> mtext("Machine Y", side=3, line=0.4, at=5,cex=1.1)
> dev.off()


> pdf("Figure C.pdf")
> par(mfrow=c(1,2))
> barplot(t(x), ylim=c(0,150),names=1:10,col=mycolor)
> mtext("Run Number", side=1, line=2, at=14, cex=1.2)
> mtext("Total Running-Times in 10 Runs", side=3, line=2, at=14, cex=1.2)
> mtext("Machine X", side=3, line=0.5, at=5,cex=1.1)
> barplot(t(y), ylim=c(0,150), names=1:10,col=mycolor)
> mtext("Machine Y", side=3, line=0.5, at=5,cex=1.1)
> legend("topright",legend=c("a","b","c","d"),fill=mycolor,cex=1.1)
> dev.off()
Samarasa
quelle

Antworten:

12

Obwohl die anderen Befragten nützliche Erkenntnisse geliefert haben, bin ich mit einigen ihrer Standpunkte nicht einverstanden. Insbesondere glaube ich, dass Grafiken, die die Details der Daten anzeigen können (ohne überladen zu sein), reicher und lohnender anzusehen sind als solche, die die Daten offen zusammenfassen oder verbergen, und ich glaube, dass alle Daten interessant sind, nicht nur die für Computer X. Werfen wir einen Blick darauf.

Timing-Plot nach Algorithmus und Computer

(Ich zeige hier kleine Diagramme, um darauf hinzuweisen, dass ziemlich viele Zahlen in kleinen Räumen im Detail sinnvoll dargestellt werden können.)

80=2×4×10

Die grafische Geometrie (Punktmarkierungen gegenüber Liniensegmenten) unterscheidet Computer X (Markierungen) deutlich von Computer Y (Segmente). Variationen in der Symbolik - sowohl Form als auch Farbe für die Punktmarkierungen - sowie Variationen in der Position entlang der x-Achse unterscheiden die Programme deutlich. (Durch die Verwendung der Form wird sichergestellt, dass die Unterscheidungen auch in einem Graustufen-Rendering bestehen bleiben, was wahrscheinlich in einem Print-Journal der Fall ist.)

Die Programme scheinen keine inhärente Reihenfolge zu haben, daher ist es sinnlos, sie alphabetisch mit ihren Codenamen "a", ..., "d" darzustellen. Diese Freiheit wurde ausgebeutet sequenzieren die Ergebnisse durch die mittlere Zeit von Computer X. Diese einfache Änderung erforderlich, die keine zusätzliche Komplexität oder Tinte erfordert, offenbart ein interessantes Muster: die relativen Zeitpunkte der Programme auf Computer Y unterscheiden sich von den relativen Zeiten auf Computer X. Obwohl dies statistisch signifikant sein kann oder nicht, ist es ein Merkmal der Daten, das diese Grafik zufällig sichtbar macht. Das ist , was wir eine gute Grafik hoffen tun.

Indem die Punktmarkierungen groß genug gemacht werden, fügen sie sich fast visuell in eine grafische Darstellung der Gesamtvariabilität nach Programm ein. (Die Überblendung verliert einige Informationen: Wir sehen nicht genau, wo die Überlappungen auftreten. Dies könnte behoben werden, indem die Punkte in horizontaler Richtung leicht verwackelt werden, wodurch alle Überlappungen aufgelöst werden.)

Diese Grafik allein könnte ausreichen, um die Daten darzustellen. Es gibt jedoch noch mehr zu entdecken, wenn dieselben Techniken verwendet werden, um die Zeitabläufe von einem Lauf zum anderen zu vergleichen.

"Fairness" Handlung

Diesmal unterscheidet die horizontale Position Computer Y von Computer X, im Wesentlichen durch Verwendung von nebeneinander angeordneten Feldern. (Umrisse um jedes Panel wurden gelöscht, da sie die visuellen Vergleiche beeinträchtigen würden, die wir über das Diagramm hinweg durchführen möchten.) Innerhalb jedes Panels unterscheidet die Position den Lauf. Genau wie im ersten Diagramm - und unter Verwendung des gleichen Markierungsschemas zur Unterscheidung der Programme - variieren die Markierungen in Form und Farbe. Dies erleichtert Vergleiche zwischen den beiden Darstellungen.

Beachten Sie den visuellen Kontrast in den Markierungsmustern zwischen den beiden Feldern: Dies hat eine Unmittelbarkeit, die die Zahlentabellen nicht bieten, die sorgfältig gescannt werden müssen, bevor man merkt, dass Computer Y in seinen Timings so konsistent ist.

Die Markierungen sind durch schwache gestrichelte Linien verbunden, um visuelle Verbindungen innerhalb jedes Programms herzustellen. Diese Zeilen sind zusätzliche Tinte, die für die Darstellung der Daten scheinbar unnötig ist. Ich vermute, Professor Tufte würde sie vermeiden. Ich finde jedoch, dass sie als nützliche visuelle Hilfsmittel dienen, um die Unordnung zu trennen, in der sich Markierungen für verschiedene Programme fast überlappen.

Auch hier gehe ich davon aus, dass die Läufe unabhängig sind und daher die Laufnummer bedeutungslos ist. Wir können das noch einmal ausnutzen: Innerhalb jedes Panels wurden die Läufe separat nach der Gesamtzeit für die vier Algorithmen sequenziert. (Die x-Achse kennzeichnet keine Laufnummern, da dies nur eine Ablenkung wäre.) Wie im ersten Diagramm zeigt diese Sequenzierung mehrere interessante Korrelationsmuster zwischen den Zeitabläufen der vier Algorithmen in jedem Lauf. Der größte Teil der Variation für Computer X ist auf Änderungen im Algorithmus "b" (rote Quadrate) zurückzuführen. Das haben wir schon in der ersten Grafik gesehen. Die schlechtesten Gesamtleistungen sind jedoch auf zwei lange Zeiten für die Algorithmen "c" und "d" (Golddiamanten bzw. grüne Dreiecke) zurückzuführen, die innerhalb derselben zwei Läufe auftraten. Interessant ist auch, dass die Ausreißer für die Programme "a" und "c" beide im selben Lauf auftraten. Diese Beobachtungen könnten nützliche Informationen über Variationen im Programm-Timing für Computer X liefern. Sie sind Beispiele dafür, wie viel über Variationen und Korrelationen gesehen werden kann, da diese Grafiken die Details der Daten zeigen (anstatt Zusammenfassungen wie Balken oder Boxplots oder was auch immer). -aber darauf muss ich hier nicht näher eingehen; Sie können es selbst erkunden.

Ich habe diese Grafiken erstellt, ohne über eine "Geschichte" nachzudenken oder die Daten zu "drehen", weil ich zuerst sehen wollte, was die Daten zu sagen haben. Solche Grafiken werden vielleicht nie die Seiten von USA Today zieren, aber aufgrund ihrer Fähigkeit , Muster aufzudecken, indem sie schnelle, genaue visuelle Vergleiche ermöglichen,Sie sind gute Kandidaten für die Übermittlung von Ergebnissen an ein wissenschaftliches oder technisches Publikum. (Das heißt nicht, dass sie fehlerfrei sind: Es gibt einige offensichtliche Möglichkeiten, sie zu verbessern, einschließlich Jitter im ersten und gute Legenden und vernünftige Labels in beiden.) Also ja, ich stimme zu, dass die Aufmerksamkeit für das potenzielle Publikum wichtig ist. Ich bin jedoch nicht davon überzeugt, dass Grafiken mit der Absicht erstellt werden sollten, einen bestimmten Standpunkt zu vertreten oder zu vertreten.

Zusammenfassend möchte ich diesen Rat geben.

  • Verwenden Sie Gestaltungsprinzipien aus der Literatur zu Kartographie und kognitiven Neurowissenschaften (z. B. Alan MacEachren ), um die Chancen zu verbessern, dass Leser Ihre Grafik so interpretieren, wie Sie es beabsichtigen, und dass sie ehrliche, unvoreingenommene Schlussfolgerungen daraus ziehen können.

  • Verwenden Sie Gestaltungsprinzipien aus der Literatur zu statistischen Grafiken (z. B. Ed Tufte und Bill Cleveland ), um informative datenreiche Präsentationen zu erstellen.

  • Experimentieren Sie und seien Sie kreativ. Prinzipien sind der Ausgangspunkt für die Erstellung einer statistischen Grafik, aber sie können gebrochen werden. Verstehe, gegen welche Prinzipien du verstößt und warum.

  • Streben Sie eher nach Offenbarung als nach bloßer Zusammenfassung. Eine zufriedenstellende Grafik zeigt deutlich interessierende Muster in den Daten. Eine großartige Grafik zeigt unerwartete Muster und lädt uns zu Vergleichen ein, an die wir vorher vielleicht nicht gedacht haben. Es kann uns dazu veranlassen, neue Fragen und weitere Fragen zu stellen. So fördern wir unser Verständnis.

whuber
quelle
2
+1 Fantastische Antwort! Allein der erste und der letzte Absatz sind großartige Ratschläge, und die Details in der Mitte zeigen genau, wie großartige Grafiken aussehen können und sollten.
Aaron verließ Stack Overflow
@whuber: Tolle Antwort! Vielen Dank. Könnten Sie bitte auch den Code teilen, den Sie für die Figuren verwendet haben? Ist es R-Code?
Samarasa
@kkp Es ist kein R-Code: Dies sind Mathematica- Grafiken. (Wenn Sie Zugriff auf diese Software haben, würde ich gerne den von mir verwendeten Code freigeben.) Sie können mit den Befehlen Plot , Linien und Punkte problemlos in R emuliert werden. Der größte Teil der Arbeit besteht darin, die Grafikoptionen festzulegen und den Daten die horizontalen Koordinaten zuzuweisen. Pakete wie ggplot können einen Teil dieser Arbeit reduzieren.
whuber
@ Aaron Danke; Ihre Meinung als Experte für statistische Grafiken wird sehr geschätzt.
whuber
3

Mit Plots können Sie eine Geschichte erzählen und die Daten so drehen, wie der Leser Ihre Ergebnisse interpretieren soll. Was ist die Nachricht zum Mitnehmen? Was möchtest du in ihren Gedanken behalten? Bestimmen Sie diese Nachricht und überlegen Sie, wie Sie daraus eine Figur machen können.

In Ihren Plots weiß ich nicht, welche Nachricht ich lernen soll, und Sie geben mir zu viel von den Rohdaten zurück. Ich möchte effiziente Zusammenfassungen, nicht die Daten selbst.

Für Handlung 1 würde ich fragen, welche Vergleiche Sie anstellen möchten. Die Diagramme, die Sie erstellt haben, veranschaulichen die programmübergreifenden Laufzeiten für einen bestimmten Computer. Es hört sich so an, als ob Sie die Vergleiche zwischen Computern für ein bestimmtes Programm durchführen möchten. Wenn dies der Fall ist, möchten Sie, dass sich die Statistiken für Programm a auf Computer x in derselben Darstellung befinden wie die Statistiken für Programm a auf Computer y. Ich würde alle 8 Boxen in Ihre beiden Boxplots in der gleichen Abbildung setzen, axe, ay, bx, by, ..., um den Vergleich zu erleichtern, den Sie wirklich machen.

Das gleiche gilt für Handlung 2, aber ich finde diese Handlung seltsam. Sie zeigen im Grunde jeden Datenpunkt, den Sie haben - eine Box für jeden Lauf und ein Lauf hat nur 4 Beobachtungen. Warum gibst du mir nicht einfach ein Box-Diagramm der Gesamtlaufzeiten für Computer x und eines für Computer y?

Die gleiche Kritik "zu viele Daten" gilt auch für Ihre letzte Handlung. Diagramm 3 fügt Diagramm 2 keine neuen Informationen hinzu. Ich kann die Gesamtzeit erhalten, wenn ich nur die mittlere Zeit in Diagramm 2 mit 4 multipliziere. Auch hier können Sie jeweils ein Feld für Computer x und y zeichnen, aber diese wird buchstäblich ein Vielfaches der Handlung sein, die ich vorgeschlagen habe, um Handlung 2 zu ersetzen.

Ich stimme @Andy W zu, dass Computer y nicht so interessant ist, und vielleicht möchten Sie dies einfach angeben und aus Gründen der Kürze aus den Plots ausschließen (obwohl ich denke, dass die Vorschläge, die ich gemacht habe, Ihnen helfen können, diese Plots zu reduzieren). Ich denke jedoch nicht, dass Tische sehr gute Wege sind.

Charlie
quelle
2

Ihre Plots scheinen mir in Ordnung zu sein, und wenn Sie Platzbeschränkungen haben, können Sie sie alle in einem Plot anstatt in drei separaten Plots platzieren (z. B. verwenden par(mfrow=c(3,2))und dann einfach auf demselben Gerät ausgeben).

Es gibt jedoch nicht viel zu berichten Machine Y, es gibt buchstäblich keine Variation außer dem Programm b. Ich denke, die Grafiken sind informativ, um nicht nur zu sehen, wie lange die Laufzeiten dauern, Machine Xsondern auch, wie stark die Laufzeiten variieren.

Wenn dies jedoch wirklich Ihr Anwendungsfall ist, ist es so einfach, alle Daten in einer Tabelle zu platzieren, um den Unterschied zwischen Maschinen zu demonstrieren (obwohl ich glaube, dass die Grafiken immer noch nützlich sind, wenn Sie sich Platz leisten können, um sie in der Tabelle zu platzieren Dokument auch).

Andy W.
quelle