Alternativen zum dreidimensionalen Streudiagramm


7

Für eine Präsentation muss ich dreidimensionale Daten visualisieren. Ich sollte sie im "Stil eines Streudiagramms" visualisieren.

Mai waren erste Ideen

  • Ein dreidimensionales Streudiagramm
  • Eine Streudiagramm-Matrix
  • Dimensionalitätsreduktion (PCA) und anschließend ein zweidimensionales Streudiagramm

Was sind Alternativen zu diesen Konzepten? Wenn möglich, geben Sie R-Code in Ihre Antwort ein.

Bearbeiten: Ich habe 40 Objekte mit 3 Dimensionen. Jede Beobachtung kann einen ganzzahligen Wert von 1 bis 6 annehmen.


3
Die Antworten hängen von der Struktur und Semantik Ihrer Daten ab. Je nachdem, was Sie haben, können Sie getäfelte Streudiagramme oder Streudiagramme mit einer dritten Dimension verwenden, die durch Farben angezeigt wird. Können Sie uns etwas mehr über Ihre Daten erzählen und vielleicht ein Beispiel posten?
Stephan Kolassa

1
In meinem Bereich ist das PCA-Diagramm das beste Beispiel. Sie haben nur eine Dimension verloren, wenn Sie PCA verwenden.
Hello World

1
Parallele Koordinatendiagramme können in diesem Maßstab (3 Dimensionen, 40 Punkte) gut sein. Sie sind über die parcoordFunktion im MASSPaket verfügbar . Beachten Sie, dass manchmal das Ändern der Reihenfolge der Dimensionen dazu führen kann, dass diese Diagramme aufschlussreicher werden.
G5W

1
Die Hauptschwierigkeit, die ich sehe, besteht darin, nur ganzzahlige Werte von 1 bis 6 zu haben. Dies macht es viel schwieriger zu sehen, was die Daten tun, da sich die Punkte überlappen. Sie werden höchstwahrscheinlich Ihre geplotteten Punkte wie plot(jitter(y2) ~ jitter(x2), pch = 15)Referenz zittern
Tavrock

Antworten:


3

Ich denke, was in erster Linie zu Ihrer Liste hinzugefügt werden muss, sind Coplots , aber lassen Sie uns daran arbeiten. Der Ausgangspunkt für die Visualisierung zweier kontinuierlicher Variablen sollte immer ein Streudiagramm sein. Bei mehr als zwei Variablen verallgemeinert sich dies natürlich auf eine Streudiagramm-Matrix (wenn Sie jedoch viele Variablen haben, müssen Sie diese möglicherweise in mehrere Matrizen aufteilen, siehe: So extrahieren Sie Informationen aus einer Streudiagramm-Matrix, wenn Sie ein großes N haben, diskret Daten & viele Variablen? ). Das ist daran zu erkennen ist , dass ein Scatterplotmatrix ein Satz von 2D ist marginal Projektionen aus einem höherdimensionalen Raum. Aber diese Ränder nicht die interessanteste oder informativ sein. Genau dasRänder, die Sie vielleicht betrachten möchten, sind eine schwierige Frage (vgl. Projektionsverfolgung ), aber der einfachste nächste zu untersuchende Satz ist der Satz, der die Variablen orthogonal macht, dh Streudiagramme der Variablen, die sich aus einer Hauptkomponentenanalyse ergeben . Sie erwähnen, dass Sie dies zur Datenreduktion verwenden und das Streudiagramm der ersten beiden Hauptkomponenten betrachten. Das Denken dahinter ist vernünftig, aber Sie müssen sich nicht nur die ersten beiden ansehen, andere könnten es wert sein, untersucht zu werden (vgl. Beispiele für PCA, bei denen PCs mit geringer Varianz „nützlich“ sind ), also können / sollten Sie machen eine Streudiagramm-Matrix von diesen auch. Eine andere Möglichkeit bei der Ausgabe einer PCA besteht darin, einen Biplot zu erstellenDies überlagert die Beziehung der ursprünglichen Variablen zu den Hauptkomponenten (als Pfeile) über dem Streudiagramm. Sie können auch eine Streudiagrammmatrix der Hauptkomponenten mit Biplots kombinieren.

Alle oben genannten sind, wie ich bereits erwähnte, marginal. Ein Coplot ist bedingt (der obere Teil meiner Antwort hier steht im Gegensatz zu bedingt und marginal). Wörtlich ist "Coplot" eine Mischung aus "bedingter Handlung". In einem Coplot nehmen Sie Slices (oder Teilmengen) der Daten in den anderen Dimensionen und zeichnen die Daten in diesen Teilmengen in einer Reihe von Streudiagrammen. Sobald Sie gelernt haben, wie man sie liest, sind sie eine schöne Ergänzung zu Ihren Optionen zum Erkunden von Mustern in höherdimensionalen Daten.

Um diese Ideen zu veranschaulichen, ist hier ein Beispiel mit dem RandU-Datensatz (Pseudozufallsdaten, die von einem in den 1970er Jahren beliebten Algorithmus generiert wurden):

data(randu)
windows()
  pairs(randu)

Geben Sie hier die Bildbeschreibung ein

pca = princomp(randu)
attr(pca$scores, "dimnames")[[1]][1:400] = "o"
windows()
  par(mfrow=c(3,3), mar=rep(.5,4), oma=rep(2,4))
  for(i in 1:3){
    for(j in 1:3){
      if(i<j){
        plot(y=pca$scores[,i], x=pca$scores[,j], axes=FALSE); box()
      } else if(i==j){
        plot(density(pca$scores[,i]), axes=FALSE, main=""); box()
        text(0, .5, labels=colnames(pca$scores)[i])
      } else {
        biplot(pca, choices=c(j,i), main="", xaxp=c(-10,10,1), yaxp=c(-10,10,1))
      }
    }
  }

Geben Sie hier die Bildbeschreibung ein

windows()
  coplot(y~x|z, randu)

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.