Ich versuche, die Anzahl der Aktionen von Benutzern (in diesem Fall "Gefällt mir") im Laufe der Zeit grafisch darzustellen.
Ich habe also "Anzahl der Aktionen" als meine y-Achse, meine x-Achse ist die Zeit (Wochen) und jede Zeile repräsentiert einen Benutzer.
Mein Problem ist, dass ich diese Daten für einen Satz von ungefähr 100 Benutzern betrachten möchte. Aus einem Liniendiagramm wird schnell ein Durcheinander mit 100 Linien. Gibt es einen besseren Diagrammtyp, mit dem ich diese Informationen anzeigen kann? Oder sollte ich mir überlegen, ob ich einzelne Leitungen ein- und ausschalten kann?
Ich würde gerne alle Daten auf einmal sehen, aber es ist nicht besonders wichtig, die Anzahl der Aktionen mit hoher Genauigkeit zu erkennen.
Warum mache ich das?
Für eine Untergruppe meiner Benutzer (Top-Benutzer) möchte ich herausfinden, welchen Benutzern eine neue Version der Anwendung, die an einem bestimmten Datum eingeführt wurde, möglicherweise nicht gefallen hat. Ich suche nach signifikanten Einbußen bei der Anzahl der Aktionen einzelner Benutzer.
quelle
facet_wrap
Funktion von ggplot2 vorschlagen, um einen Block mit 4 x 5 Diagrammen (4 Zeilen, 5 Spalten - je nach gewünschtem Seitenverhältnis anpassen) mit ~ 5 Benutzern pro Diagramm zu erstellen. Das sollte klar genug sein und Sie können es auf ungefähr 10 Benutzer pro Diagramm skalieren, was Platz für 200 bei einem 4 × 5-Diagramm oder 360 bei einem 6 × 6-Diagramm bietet.Antworten:
Ich möchte eine (Standard-) vorläufige Analyse vorschlagen, um die Haupteffekte von (a) Abweichungen unter den Benutzern, (b) der typischen Reaktion aller Benutzer auf die Änderung und (c) der typischen Abweichung von einem Zeitraum zum nächsten zu beseitigen .
Ein einfacher (aber keinesfalls der beste) Weg, dies zu tun, besteht darin, einige Iterationen des "Median-Polierens" an den Daten durchzuführen, um Benutzer-Mediane und Zeit-Mediane herauszusuchen und dann die Residuen über die Zeit hinweg zu glätten. Identifizieren Sie die Glättungen, die sich stark ändern: Sie sind die Benutzer, die Sie in der Grafik hervorheben möchten.
Da es sich um Zählungsdaten handelt, ist es eine gute Idee, sie mit einer Quadratwurzel erneut auszudrücken.
Als Beispiel für das, was daraus resultieren kann, sehen Sie hier einen simulierten 60-Wochen-Datensatz von 240 Benutzern, die normalerweise 10 bis 20 Aktionen pro Woche ausführen. Eine Änderung bei allen Benutzern trat nach der 40. Woche auf. Drei von ihnen wurden "angewiesen", negativ auf die Änderung zu reagieren. Das linke Diagramm zeigt die Rohdaten: Anzahl der Aktionen nach Benutzer (wobei Benutzer nach Farbe unterschieden sind) über die Zeit. Wie in der Frage behauptet, ist es ein Durcheinander. Das rechte Diagramm zeigt die Ergebnisse dieser EDA - in denselben Farben wie zuvor -, wobei die ungewöhnlich ansprechenden Benutzer automatisch identifiziert und hervorgehoben werden. Die Identifikation ist - obwohl etwas ad hoc - vollständig und korrekt (in diesem Beispiel).
Hier ist der
R
Code, der diese Daten erzeugt und die Analyse durchgeführt hat. Es könnte auf verschiedene Arten verbessert werden, einschließlichVerwenden Sie einen vollständigen Mittelwert, um die Residuen zu finden, anstatt nur eine Iteration.
Glätten Sie die Reste separat vor und nach dem Änderungspunkt.
Vielleicht mit einem ausgeklügelten Ausreißererkennungsalgorithmus. Die aktuelle Option kennzeichnet lediglich alle Benutzer, deren Residuenbereich mehr als das Doppelte des Medianbereichs beträgt. Obwohl einfach, ist es robust und scheint gut zu funktionieren. (Ein vom Benutzer einstellbarer Wert
threshold
kann angepasst werden, um diese Identifikation mehr oder weniger streng zu machen.)Tests haben jedoch ergeben, dass diese Lösung für eine Vielzahl von Benutzergruppen von 12 bis 240 oder mehr geeignet ist.
quelle
threshold
auf ca. erhöhenn.users <- 500
n.outliers <- 100
threshold <- 2.5
Im Allgemeinen finde ich, dass mehr als zwei oder drei Zeilen auf einer Facette eines Plots schwer zu lesen sind (obwohl ich es immer noch mache). Das ist also ein interessantes Beispiel dafür, was zu tun ist, wenn Sie etwas haben, das konzeptionell ein 100-Facetten-Plot sein könnte. Eine Möglichkeit besteht darin, alle 100 Facetten zu zeichnen, anstatt zu versuchen, alle auf einmal auf die Seite zu bringen und sie einzeln in einer Animation zu betrachten.
Wir haben diese Technik tatsächlich bei meiner Arbeit verwendet - wir haben ursprünglich die Animation erstellt, die 60 verschiedene Liniendiagramme als Hintergrund für ein Ereignis zeigt (der Start einer neuen Datenreihe), und dabei festgestellt, dass wir tatsächlich einige Merkmale der Daten aufgegriffen haben das war in facettierten Plots mit 15 oder 30 Facetten pro Seite nicht sichtbar.
Hier finden Sie eine alternative Methode zur Darstellung der Rohdaten, bevor Sie den Benutzer und die typischen Zeiteffekte entfernen, wie von @whuber empfohlen. Dies ist nur eine zusätzliche Alternative zu seiner Darstellung der Rohdaten. Ich empfehle Ihnen nachdrücklich, mit der Analyse nach den von ihm vorgeschlagenen Grundsätzen fortzufahren.
Eine Möglichkeit, dieses Problem zu umgehen, besteht darin, die 100 (oder 240 in @ whubers Beispiel) Zeitreihendiagramme separat zu erstellen und zu einer Animation zusammenzufügen. Mit dem folgenden Code werden 240 separate Bilder dieser Art erstellt. Anschließend können Sie mit der kostenlosen Filmerstellungssoftware einen Film daraus machen. Leider war die einzige Möglichkeit, dies zu tun und akzeptable Qualität beizubehalten, eine 9-MB-Datei, aber wenn Sie sie nicht über das Internet senden müssen, ist dies möglicherweise kein Problem, und trotzdem bin ich mir sicher, dass ein bisschen mehr Abhilfe schafft Animation versiert. Das Animationspaket in R könnte hier nützlich sein (Sie können alles in einem Aufruf von R aus erledigen), aber ich habe es für diese Illustration einfach gehalten.
Ich habe die Animation so erstellt, dass sie jede Linie in schwerem Schwarz zeichnet und dann einen blassen, halbtransparenten grünen Schatten hinterlässt, damit das Auge ein allmähliches Bild der akkumulierten Daten erhält. Dies birgt sowohl Risiken als auch Chancen - die Reihenfolge, in der die Zeilen hinzugefügt werden, hinterlässt einen anderen Eindruck. Daher sollten Sie in Betracht ziehen, dies in irgendeiner Weise aussagekräftig zu machen.
Hier sind einige der Standbilder aus dem Film, die dieselben Daten verwenden, die @whuber generiert hat:
quelle
windows()
oder ein neues Gerätefenster initiierenquartz()
und dann Ihrefor()
Schleife darin verschachteln . NB, Sie müssen einSys.sleep(1)
am Ende Ihrer Schleife einfügen, damit Sie die Iterationen tatsächlich sehen können. Natürlich speichert diese Strategie eine Filmdatei nicht wirklich - Sie müssen sie nur jedes Mal neu starten, wenn Sie sie erneut ansehen möchten.Eines der einfachsten Dinge ist ein Boxplot. Sie können sofort sehen, wie sich Ihre Stichprobenmediane bewegen und an welchen Tagen die meisten Ausreißer auftreten.
Für die individuelle Analyse empfehle ich, eine kleine Zufallsstichprobe aus Ihren Daten zu ziehen und separate Zeitreihen zu analysieren.
quelle
Sicher. Sortieren Sie zunächst nach der durchschnittlichen Anzahl von Aktionen. Dann machen Sie (sagen wir) 4 Graphen mit jeweils 25 Linien, eine für jedes Quartil. Das heißt, Sie können die y-Achsen verkleinern (aber die Beschriftung der y-Achse deutlich machen). Und mit 25 Linien können Sie sie nach Linientyp und Farbe variieren und möglicherweise das Symbol zeichnen, um eine gewisse Klarheit zu erzielen
Dann stapeln Sie die Grafiken vertikal mit einer einzigen Zeitachse.
Dies wäre in R oder SAS ziemlich einfach (zumindest wenn Sie Version 9 von SAS haben).
quelle
Ich finde, wenn Ihnen die Zeit ausgeht, sind die Optionen für die Anzeige von Grafiken und Grafikeinstellungen die beste Möglichkeit, die Zeit durch Animation einzuführen, da sie Ihnen eine zusätzliche Dimension für die Arbeit bieten und es Ihnen ermöglichen, mehr Informationen auf einfach zu befolgende Weise anzuzeigen . Ihr Hauptaugenmerk muss auf der Endbenutzererfahrung liegen.
quelle
Wenn Sie am meisten an der Änderung für einzelne Benutzer interessiert sind, ist dies möglicherweise eine gute Situation für eine Sammlung von Sparklines (wie dieses Beispiel aus The Pudding ):
Diese sind ziemlich detailliert, aber Sie können viel mehr Diagramme gleichzeitig anzeigen, indem Sie Achsenbeschriftungen und Einheiten entfernen.
In vielen Datentools sind sie integriert ( Microsoft Excel verfügt über Sparklines ), aber ich nehme an, Sie möchten ein Paket einbinden, um sie in R zu erstellen.
quelle