hclust
位於 stats
包(package)。 說明
對一組差異性的層次聚類分析及其分析方法。
用法
hclust(d, method = "complete", members = NULL)
## S3 method for class 'hclust'
plot(x, labels = NULL, hang = 0.1, check = TRUE,
axes = TRUE, frame.plot = FALSE, ann = TRUE,
main = "Cluster Dendrogram",
sub = NULL, xlab = NULL, ylab = "Height", ...)
參數
d |
由 |
method |
要使用的聚集方法。這應該是 |
members |
|
x |
|
hang |
標簽應懸掛在繪圖其餘部分下方的繪圖高度的分數。負值將導致標簽從 0 開始下垂。 |
check |
邏輯表明如果 |
labels |
樹葉標簽的字符向量。默認情況下使用原始數據的行名稱或行號。如果 |
axes, frame.plot, ann |
邏輯標誌如 |
main, sub, xlab, ylab |
|
... |
進一步的圖形論證。例如, |
細節
此函數使用正在聚類的 對象的一組不同點來執行層次聚類分析。最初,每個對象都被分配到自己的簇,然後算法迭代地進行,在每個階段加入兩個最相似的簇,一直持續到隻剩下一個簇為止。在每個階段,根據所使用的特定聚類方法,通過Lance-Williams相異性更新公式重新計算聚類之間的距離。
提供了多種不同的聚類方法。 Ward 的最小方差方法旨在尋找緊湊的球形簇。完全鏈接方法發現相似的簇。單鏈接方法(與最小生成樹密切相關)采用“朋友的朋友”聚類策略。其他方法可以被視為針對具有介於單鏈接方法和完全鏈接方法之間的特征的聚類。但請注意,方法 "median"
和 "centroid"
不會導致單調距離測量,或者等效地,生成的樹狀圖可能具有難以解釋的所謂反轉或反轉,但請注意 Legendre 和 Legendre (2012) 中的三分法。
在 Ward 聚類文獻中發現了兩種不同的算法。選項使用的那個"ward.D"
(相當於唯一的病房選項"ward"
在R版本 3.0.3)才不是實施 Ward (1963) 聚類標準,而選項"ward.D2"
實施該標準(Murtagh 和 Legendre 2014)。對於後者,不同之處在於平方集群更新之前。注意agnes(*, method="ward")
對應於hclust(*, "ward.D2")
.
如果 members != NULL
,則 d
被視為簇之間的相異矩陣,而不是單例之間的相異矩陣,並且 members
給出每個簇的觀測值數量。這樣,層次聚類算法可以“從樹狀圖的中間開始”,例如,為了重建樹的切口上方的部分(參見示例)。僅對於有限數量的距離/鏈接組合,可以有效地計算簇之間的差異(即,無需 hclust
本身),最簡單的組合是平方歐幾裏德距離和質心鏈接。在這種情況下,聚類之間的差異是聚類均值之間的歐氏距離的平方。
在分層集群顯示中,每次合並時都需要做出決定,以指定哪個子樹應位於左側,哪個子樹應位於右側。由於對於 hclust
中使用的算法是對子樹進行排序,以便更緊密的簇位於左側(左子樹的最後一次(即最近一次)合並的值低於右子樹的最後一次合並的值)。單個觀測值是可能的最緊密的簇,並且涉及兩個觀測值的合並按觀測序列號將它們按順序排列。 觀察存在 合並,因此聚類樹或樹狀圖中的葉子有 可能的排序。
值
hclust 類的對象,說明聚類過程生成的樹。該對象是一個包含組件的列表:
merge |
|
height |
一組 |
order |
給出適合繪圖的原始觀察值的排列的向量,從某種意義上說,使用此排序和矩陣 |
labels |
每個被聚類的對象的標簽。 |
call |
產生結果的調用。 |
method |
已使用的聚類方法。 |
dist.method |
用於創建 |
hclust
對象有 print
、 plot
和 identify
(請參閱 identify.hclust
)方法和 rect.hclust()
函數。
注意
方法 "centroid"
通常與平方歐幾裏得距離一起使用。
例子
require(graphics)
### Example 1: Violent crime rates by US state
hc <- hclust(dist(USArrests), "ave")
plot(hc)
plot(hc, hang = -1)
## Do the same with centroid clustering and *squared* Euclidean distance,
## cut the tree into ten clusters and reconstruct the upper part of the
## tree from the cluster centers.
hc <- hclust(dist(USArrests)^2, "cen")
memb <- cutree(hc, k = 10)
cent <- NULL
for(k in 1:10){
cent <- rbind(cent, colMeans(USArrests[memb == k, , drop = FALSE]))
}
hc1 <- hclust(dist(cent)^2, method = "cen", members = table(memb))
opar <- par(mfrow = c(1, 2))
plot(hc, labels = FALSE, hang = -1, main = "Original Tree")
plot(hc1, labels = FALSE, hang = -1, main = "Re-start from 10 clusters")
par(opar)
### Example 2: Straight-line distances among 10 US cities
## Compare the results of algorithms "ward.D" and "ward.D2"
mds2 <- -cmdscale(UScitiesD)
plot(mds2, type="n", axes=FALSE, ann=FALSE)
text(mds2, labels=rownames(mds2), xpd = NA)
hcity.D <- hclust(UScitiesD, "ward.D") # "wrong"
hcity.D2 <- hclust(UScitiesD, "ward.D2")
opar <- par(mfrow = c(1, 2))
plot(hcity.D, hang=-1)
plot(hcity.D2, hang=-1)
par(opar)
作者
The hclust
function is based on Fortran code
contributed to STATLIB by F. Murtagh.
參考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988). The New S Language. Wadsworth & Brooks/Cole. (S version.)
Everitt, B. (1974). Cluster Analysis. London: Heinemann Educ. Books.
Hartigan, J.A. (1975). Clustering Algorithms. New York: Wiley.
Sneath, P. H. A. and R. R. Sokal (1973). Numerical Taxonomy. San Francisco: Freeman.
Anderberg, M. R. (1973). Cluster Analysis for Applications. Academic Press: New York.
Gordon, A. D. (1999). Classification. Second Edition. London: Chapman and Hall / CRC
Murtagh, F. (1985). “Multidimensional Clustering Algorithms”, in COMPSTAT Lectures 4. Wuerzburg: Physica-Verlag (for algorithmic details of algorithms used).
McQuitty, L.L. (1966). Similarity Analysis by Reciprocal Pairs for Discrete and Continuous Data. Educational and Psychological Measurement, 26, 825-831. doi:10.1177/001316446602600402.
Legendre, P. and L. Legendre (2012). Numerical Ecology, 3rd English ed. Amsterdam: Elsevier Science BV.
Murtagh, Fionn and Legendre, Pierre (2014). Ward's hierarchical agglomerative clustering method: which algorithms implement Ward's criterion? Journal of Classification, 31, 274-295. doi:10.1007/s00357-014-9161-z.
也可以看看
相關用法
- R heatmap 繪製熱圖
- R stlmethods STL 對象的方法
- R medpolish 矩陣的中值波蘭(穩健雙向分解)
- R naprint 調整缺失值
- R summary.nls 總結非線性最小二乘模型擬合
- R summary.manova 多元方差分析的匯總方法
- R formula 模型公式
- R nls.control 控製 nls 中的迭代
- R aggregate 計算數據子集的匯總統計
- R deriv 簡單表達式的符號和算法導數
- R kruskal.test Kruskal-Wallis 秩和檢驗
- R quade.test 四方測試
- R decompose 移動平均線的經典季節性分解
- R plot.stepfun 繪製階躍函數
- R alias 查找模型中的別名(依賴項)
- R qqnorm 分位數-分位數圖
- R eff.aovlist 多層方差分析的計算效率
- R pairwise.t.test 成對 t 檢驗
- R loglin 擬合對數線性模型
- R predict.smooth.spline 通過平滑樣條擬合進行預測
- R bartlett.test 方差齊性的 Bartlett 檢驗
- R influence.measures 回歸刪除診斷
- R loess.control 設置黃土參數
- R Normal 正態分布
- R summary.lm 總結線性模型擬合
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Hierarchical Clustering。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。