簡體   English   中英

指定三個聚類組,但樹狀圖聚類成四個

[英]specifying three cluster groups, but dendrogram clusters into four

我有一個令人沮喪的問題,我無法重現(我希望我能)。 我用三個生態數據集生成了樹狀圖,每個數據集使用相同的代碼但唯一的對象。 樹狀圖中的每一片葉子都是一個調查圖,物種存在/豐度推動了聚類。

我將樹狀圖分成 3 組,並為每組進行顏色編碼。 當使用歐幾里得距離進行聚類時,這適用於所有三個數據集,而當使用 Bray-Curtis 距離時,這適用於我的兩個數據集。 但是:第三個數據集在使用 Bray-Curtis 時會聚集兩片葉子,並強制顏色代碼循環使用,盡管指定了 k = 3,但仍創建了 k = 4 個組。

我的問題是:當我指定 k = 3 個組時,為什么將兩片葉子(圖)強制放入它們自己的“簇”中,並強制樹狀圖有 4 個簇?

我在下面粘貼了一個代碼示例,以及“正確”和“錯誤”樹狀圖的圖像。 好奇是否有人有任何故障排除建議,因為我無法提供重現此錯誤的代碼。 TIA。

我試過了:

  • 刪除自定義顏色值(沒有效果,當 k = 3 時仍然得到 4 個簇)。
  • 向 'dend' 對象添加一個 cutree 參數,但這會產生錯誤 'Error in stats::cutree(tree, k = k, h = h, ...) : the 'height' component of 'tree' is not sorted (日益)'

示例代碼(與用於每個樹狀圖的唯一對象的格式相同)。 請從https://drive.google.com/file/d/12eXIXVuHTu4BLGxcGu18bqhT85ZOHkNW/view?usp=sharing訪問 csv。 有關麻煩的數據集,請參見文件 clusterdata.csv。 Colnames是物種; 行是情節 ID; 值是覆蓋類箱(0 = 不存在,1 = < 25%,2 = 25-50% 等)

#library(dendextend)
d <- read.csv("clusterdata.csv")

dend <- d %>% 
vegdist(method = "bray") %>% 
hclust(method = "ward.D") %>% 
# cutree(h = 3) %>% 
as.dendrogram()

mycol <- c("#009E73", "#0072B2", "#E69F00")

dend.plot <-  as.dendrogram(dend) %>%
   set("branches_lwd", 2) %>% # Branches line width
   set("branches_k_color", mycol, k = 3) %>% # Color branches by groups
   set("labels_cex", 0.5) # Change label size
plot(dend.plot, ylab = "Bray-Curtis Distance", main = "why would clusters be different?")

“正確”樹狀圖 - 在三個最高級別進行切割和顏色編碼 “錯誤”的樹狀圖 - 為什么兩片橙葉是自己的簇?!?

我在下面的帖子中找到了一個解決方案,該解決方案涉及一個圍繞高度分量的中間步驟,以解決高度差太小或為負的問題。

dend <- d %>% 
vegdist(method = "bray") %>% 
hclust(method = "ward.D")
dend$height <- round(dend$height, 6)
dend <- as.dendrogram(dend)

它在平均鏈接下工作得很好,但在 Ward 的情況下,一些距離非常小。 如果您運行以下命令,您會注意到四舍五入后的值更加合理:

dend <- d %>% 
vegdist(method = "bray") %>% 
hclust(method = "ward.D")

dend$height
diff(round(dend$height,6))

'tree' 的 'height' 組件未排序 cutree 中的錯誤

關於將 HC 與 Bray 距離相結合的問題的交叉驗證的有趣討論: HC 與 Bray 距離

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM