2012-08-13 36 views
6

tôi sử dụng mã R sau đây để tạo ra một dendrogram (xem hình đính kèm) với các nhãn dựa trên chuỗi TraMineR:Hiển thị TraMineR (R) dendrograms ở định dạng văn bản/bảng

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

Mã đầy đủ (bao gồm cả dữ liệu) có thể được tìm thấy here.

Như thông tin như chương trình dendrogram là đồ họa, sẽ rất thuận tiện để có được thông tin tương tự ở dạng văn bản và/hoặc bảng. Nếu tôi gọi bất kỳ khía cạnh nào của đối tượng clusterward (được tạo bởi agnes), chẳng hạn như "order" hoặc "merge", tôi nhận được mọi thứ được gắn nhãn bằng số thay vì tên tôi nhận được từ colnames(twitter_sequences). Ngoài ra, tôi không thấy làm thế nào tôi có thể xuất các nhóm đại diện đồ họa trong dendrogram.

Để tóm tắt: Làm cách nào để có được kết quả cụm từ ở định dạng văn bản/bảng với nhãn được hiển thị đúng cách bằng cách sử dụng R và lý tưởng là thư viện traminer/cluster?

enter image description here

Trả lời

4

Câu hỏi đặt ra liên quan đến gói cluster. Trang trợ giúp cho agnes.object được trả về bởi agnes (Xem http://stat.ethz.ch/R-manual/R-devel/library/cluster/html/agnes.object.html) nói rằng đối tượng này có chứa thành phần order.lab "tương tự như order, nhưng chứa nhãn quan sát thay vì số quan sát. Thành phần này chỉ khả dụng nếu quan sát ban đầu được dán nhãn".

Ma trận khác nhau (twitter.om trong trường hợp của bạn) do TraMineR sản xuất hiện không giữ lại nhãn chuỗi làm tên hàng và cột. Để có được thành phần order.lab, bạn phải gán nhãn chuỗi theo cách thủ công như cả hai rownamescolnames của ma trận twitter.om của bạn. Tôi minh họa ở đây với dữ liệu mvad được cung cấp bởi gói 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) 

Tức là để nhận được order với nhãn trình tự thay vì số. Nhưng bây giờ nó không phải là rõ ràng với tôi mà kết quả cụm bạn muốn ở dạng văn bản/bảng. Từ dendrogram bạn quyết định nơi bạn muốn cắt nó, tức là số lượng nhóm bạn muốn và cắt chương trình dendrogram với cutree, ví dụ: cl.4 <- cutree(clusterward1, k = 4). Kết quả cl.4 là một vectơ có thành viên cụm cho mỗi chuỗi và bạn sẽ có danh sách các thành viên của nhóm 1, ví dụ, với rownames(mvad.seq)[cl.4==1].

Hoặc, bạn có thể sử dụng phương pháp identify (xem ?identify.hclust) để chọn các nhóm tương tác từ cốt truyện, nhưng cần chuyển đối số là as.hclust(cward). Đây là mã cho ví dụ

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

Hy vọng điều này sẽ hữu ích.

+0

Cảm ơn bạn rất nhiều! Điều này rất hữu ích! – histelheim

Các vấn đề liên quan