Отображение дендрограмм TraMineR (R) в текстовом/табличном формате

Я использую следующий код R для создания дендрограммы (см. прикрепленное изображение) с метками на основе последовательностей TraMineR:

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

Полный код (включая набор данных) можно найти здесь< /а>.

Какой бы информативной ни была графическая дендрограмма, было бы удобно получить ту же информацию в текстовом и/или табличном формате. Если я называю какой-либо из аспектов объекта clusterward (созданный agnes), например, «упорядочить» или «объединить», я получаю все пометки, используя числа, а не имена, которые я получаю от colnames(twitter_sequences). Кроме того, я не понимаю, как я могу вывести группы, представленные графически в дендрограмме.

Подводя итог: Как я могу получить вывод кластера в текстовом/табличном формате с правильно отображаемыми метками с помощью R и, в идеале, библиотек трамина/кластера?

введите здесь описание изображения


person histelheim    schedule 13.08.2012    source источник


Ответы (1)


Вопрос касается пакета cluster. Страница справки для agnes.object, возвращенная agnes (см. http://stat.ethz.ch/R-manual/R-devel/library/cluster/html/agnes.object.html) утверждает, что этот объект содержит компонент order.lab, "похожий на order, но содержащий метки наблюдений вместо номеров наблюдений. Этот компонент доступен только в том случае, если исходные наблюдения были помечены».

Матрица различий (в вашем случае twitter.om), созданная TraMineR, в настоящее время не сохраняет метки последовательностей в качестве имен строк и столбцов. Чтобы получить компонент order.lab, вы должны вручную назначить метки последовательности как rownames, так и colnames вашей матрицы twitter.om. Я иллюстрирую здесь данные mvad, предоставленные пакетом 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)

Это для получения 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]] 

Надеюсь это поможет.

person Gilbert    schedule 14.08.2012
comment
Большое спасибо! Это очень полезно! - person histelheim; 15.08.2012