2012-08-13 9 views
6

I den folgenden R-Code verwenden, um ein Dendrogramm (siehe beigefügtes Bild) mit Etikett, basierend auf Traminer Sequenzen zu erzeugen:angezeigte Traminer (R) Dendrogramme in text/Tabellenformat

library(TraMineR) 
library(cluster) 
clusterward <- agnes(twitter.om, diss = TRUE, method = "ward") 
plot(clusterward, which.plots = 2, labels=colnames(twitter_sequences)) 

Der vollständige Code (einschließlich Datensatz) kann here gefunden werden.

So informativ wie das Dendrogramm ist grafisch, wäre es praktisch, die gleichen Informationen im Text- und/oder Tabellenformat zu erhalten. Wenn ich irgendeinen Aspekt des Objekts clusterweise (von agnes erzeugt) anrufe, wie zum Beispiel "order" oder "merge", bekomme ich alles mit Nummern beschriftet anstatt die Namen, die ich von colnames(twitter_sequences) bekomme. Auch sehe ich nicht, wie ich die im Dendrogramm grafisch dargestellten Gruppierungen ausgeben kann.

Zusammenfassend: Wie bekomme ich die Cluster-Ausgabe im Text/Tabellen-Format mit den Etiketten richtig angezeigt mit R und idealerweise die Traminer/Cluster-Bibliotheken?

enter image description here

Antwort

4

Die Frage bezieht sich auf das cluster Paket. Die Hilfeseite für die von agnes zurück agnes.object (Siehe http://stat.ethz.ch/R-manual/R-devel/library/cluster/html/agnes.object.html) besagt, dass dieses Objekt enthält eine order.lab Komponente „ähnlich wie order, sondern enthält Beobachtung Etiketten statt Beobachtungszahlen. Diese Komponente ist nur verfügbar, wenn die ursprünglichen Beobachtungen markiert.“

Die Unähnlichkeitsmatrix (twitter.om in Ihrem Fall), die von TraMineR erzeugt wurde, speichert die Sequenzbezeichnungen derzeit nicht als Zeilen- und Spaltennamen. Um die order.lab Komponente zu erhalten, müssen Sie die Sequenzbezeichnungen manuell als rownames und colnames Ihrer twitter.om Matrix zuweisen. Ich illustriere hier mit den Daten, die vom TraMineR-Paket zur Verfügung gestellt werden.

library(TraMineR) 
data(mvad) 
## attaching row labels 
rownames(mvad) <- paste("seq",rownames(mvad),sep="") 
mvad.seq <- seqdef(mvad[17:86]) 
## computing the dissimilarity matrix 
dist.om <- seqdist(mvad.seq, method = "OM", indel = 1, sm = "TRATE") 
## assigning row and column labels 
rownames(dist.om) <- rownames(mvad) 
colnames(dist.om) <- rownames(mvad) 
dist.om[1:6,1:6] 

## Hierarchical cluster with agnes library(cluster) 
cward <- agnes(dist.om, diss = TRUE, method = "ward") 

## here we can see that cward has an order.lab component 
attributes(cward) 

Das ist für immer order mit Sequenz Etiketten statt Zahlen. Aber jetzt ist mir nicht klar, welches Clusterergebnis Sie in Text-/Tabellenform haben wollen. Aus dem Dendrogramm entscheiden Sie, wo Sie es schneiden möchten, d. H. Die Anzahl der gewünschten Gruppen und schneiden Sie das Dendrogramm mit cutree, z. cl.4 <- cutree(clusterward1, k = 4). Das Ergebnis cl.4 ist ein Vektor mit der Clusterzugehörigkeit für jede Sequenz und Sie erhalten die Liste der Mitglieder der Gruppe 1, zum Beispiel mit rownames(mvad.seq)[cl.4==1].

Alternativ können Sie die identify-Methode (siehe ?identify.hclust) verwenden, um die Gruppen interaktiv aus dem Diagramm auszuwählen, aber das Argument als as.hclust(cward) übergeben. Hier ist der Code für das Beispiel

## plot the dendrogram 
plot(cward, which.plot = 2, labels=FALSE) 

## and select the groups manually from the plot 
x <- identify(as.hclust(cward)) ## Terminate with second mouse button 

## number of groups selected 
length(x) 
## list of members of the first group 
x[[1]] 

Hope dies hilft.

+0

Vielen Dank! Das ist sehr hilfreich! – histelheim