以文本/表格格式显示TraMineR(R)树形图

时间:2012-08-13 17:50:43

标签: r cluster-analysis dendrogram traminer

我使用以下R代码生成带有基于TraMineR序列的标签的树形图(参见附图):

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

可以找到完整代码(包括数据集)here

由于树形图以图形方式提供信息,因此以文本和/或表格格式获取相同信息会很方便。如果我调用对象clusterward(由agnes创建)的任何方面,例如“order”或“merge”,我会使用数字标记所有内容,而不是从colnames(twitter_sequences)获得的名称。另外,我看不出如何在树形图中输出以图形方式表示的分组。

总结:如何使用R以及理想情况下的电车/集群库正确显示标签,以文本/表格格式获取集群输出?

enter image description here

1 个答案:

答案 0 :(得分:4)

问题与cluster包有关。 agnes.object返回的agnes的帮助页面 (参见http://stat.ethz.ch/R-manual/R-devel/library/cluster/html/agnes.object.html)声明此对象包含order.lab组件“类似于order,但包含观察标签而非观察数字。此组件仅在标记原始观察时可用。 “

TraMineR生成的相异度矩阵(在您的情况下为twitter.om)当前不会将序列标签保留为行名和列名。要获取order.lab组件,您必须手动将序列标签指定为rownames矩阵的colnamestwitter.om。我在这里用TraMineR包提供的mvad数据进行说明。

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)

这是为了使order获得序列标签而不是数字。但现在我不清楚你想要的文本/表格形式的集群结果。从树形图中,您可以决定要剪切的位置,即所需的组数,并使用cutree剪切树形图,例如: cl.4 <- cutree(clusterward1, k = 4)。结果cl.4是具有每个序列的集群成员资格的向量,您将获得组1的成员列表,例如,rownames(mvad.seq)[cl.4==1]

或者,您可以使用identify方法(请参阅?identify.hclust)从图中以交互方式选择组,但需要将参数作为as.hclust(cward)传递。这是示例的代码

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

希望这有帮助。