2012-08-13 12 views
6

utilizo el siguiente código R para generar un dendrograma (ver foto adjunta) con etiquetas basadas en secuencias Traminer:Viendo Traminer (R) dendrogramas en formato de texto/table

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

El código completo (incluyendo conjuntos de datos) se puede encontrar here.

Tan informativo como el dendrograma es gráficamente, sería útil obtener la misma información en formato de texto y/o tabla. Si llamo a cualquiera de los aspectos del objeto clusterward (creado por Agnes), como "orden" o "fusión", obtengo todo etiquetado con números en lugar de los nombres que obtengo de colnames(twitter_sequences). Además, no veo cómo puedo generar las agrupaciones representadas gráficamente en el dendrograma.

En resumen: ¿Cómo puedo obtener la salida del clúster en formato de texto/tabla con las etiquetas correctamente visualizadas con R e idealmente con las librerías traminer/cluster?

enter image description here

Respuesta

4

La pregunta se refiere al paquete de cluster. La página de ayuda para agnes.object devuelta por agnes (ver http://stat.ethz.ch/R-manual/R-devel/library/cluster/html/agnes.object.html) indica que este objeto contiene un componente order.lab "similar a order, pero que contiene etiquetas de observación en lugar de números de observación. Este componente solo está disponible si las observaciones originales fueron etiquetadas".

La matriz de diferencias (twitter.om en su caso) producida por TraMineR actualmente no conserva las etiquetas de secuencia como nombres de fila y columna. Para obtener el componente order.lab, debe asignar manualmente las etiquetas de secuencia como rownames y colnames de su matriz twitter.om. Lo ilustramos aquí con los datos mvad provistos por el paquete TraMineR.

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) 

Eso es para conseguir order con etiquetas de secuencia en lugar de números. Pero ahora no está claro para mí qué resultado del clúster desea en forma de texto/tabla. Desde el dendrograma, usted decide dónde quiere cortarlo, es decir, la cantidad de grupos que desea y corta el dendrograma con cutree, p. Ej. cl.4 <- cutree(clusterward1, k = 4). El resultado cl.4 es un vector con la membresía del clúster para cada secuencia y se obtiene la lista de los miembros del grupo 1, por ejemplo, con rownames(mvad.seq)[cl.4==1].

Como alternativa, puede utilizar el método identify (ver ?identify.hclust) para seleccionar los grupos de forma interactiva desde la trama, pero necesita para pasar el argumento como as.hclust(cward). Aquí está el código para el ejemplo

## 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]] 

Espero que esto ayude.

+0

¡Muchas gracias! ¡Esto es muy útil! – histelheim

Cuestiones relacionadas