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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。