agnes
位于 cluster
包(package)。 说明
计算数据集的凝聚层次聚类。
用法
agnes(x, diss = inherits(x, "dist"), metric = "euclidean",
stand = FALSE, method = "average", par.method,
keep.diss = n < 100, keep.data = !diss, trace.lev = 0)
参数
x |
数据矩阵或 DataFrame ,或相异矩阵,具体取决于 对于矩阵或 DataFrame ,每行对应一个观察值,每列对应一个变量。所有变量都必须是数字。允许缺失值 (NA)。 在相异矩阵的情况下, |
diss |
逻辑标志:如果为 TRUE( |
metric |
字符串,指定用于计算观测值之间差异的度量。当前可用的选项是 |
stand |
逻辑标志:如果为 TRUE,则在计算差异之前对 |
method |
定义聚类方法的字符串。实现的六种方法是 默认值为 |
par.method |
如果 |
keep.diss , keep.data |
逻辑指示是否应将差异和/或输入数据 |
trace.lev |
指定算法期间打印诊断的跟踪级别的整数。默认 |
细节
agnes
在 Kaufman 和 Rousseuw (1990) 的第 5 章中有完整说明。与hclust
等其他凝聚聚类方法相比,agnes
具有以下特点:(a)它产生凝聚系数(参见agnes.object
),衡量发现的聚类结构的数量; (b) 除了通常的树之外,它还提供横幅,一种新颖的图形显示(请参阅plot.agnes
)。
agnes
-算法构建聚类的层次结构。
起初,每个观察结果本身都是一个小簇。聚类被合并,直到只剩下一个包含所有观测值的大聚类。每个阶段两人最近的簇合并形成一个更大的簇。
为了method="average"
,两个簇之间的距离是一个簇中的点与另一簇中的点之间的差异的平均值。
在method="single"
,我们使用第一个簇中的点和第二个簇中的点之间的最小差异(最近邻法)。
什么时候method="complete"
,我们使用第一个簇中的点与第二个簇中的点之间的最大差异(最远邻居方法)。
method = "flexible"
允许(并要求)更多细节:Lance-Williams 公式指定当聚类聚集时如何计算相异性(K&R;(1990), p.237 中的方程 (32))。如果簇 和 聚合成一个新簇,则它们的并集与另一个簇 之间的差异由下式给出
其中四个系数par.method
,直接作为长度为 4 的向量,或者(更方便)如果par.method
长度为 1,比如说 ,par.method
扩展为 “Flexible Strategy” (K&R;(1990), p.236 f) 和 Lance-Williams 系数 .
另外,如果length(par.method) == 3
, 已设置。
使用 method = "flexible"
时可能需要小心和专业知识,特别是当 par.method
指定的长度大于 1 时。自 cluster
版本 2.0 起,导致无效 merge
结构的选择现在会发出错误信号(已来自 C 代码)。加权平均值 (method="weighted"
) 与 method="flexible", par.method = 0.5
相同。另外,method= "single"
相当于method="flexible", par.method = c(.5,.5,0,-.5)
,method="complete"
相当于method="flexible", par.method = c(.5,.5,0,+.5)
。
method = "gaverage"
是 "average"
的泛化,又名 “flexible UPGMA” 方法,并且(该方法的泛化)在 Belbin 等人中详细介绍。 (1992)。如"flexible"
,它使用上面的Lance-Williams公式进行相异性更新,但 和 不是常数。但分别与簇 和 的大小 和 成正比,即
其中 par.method
确定,直接作为 或 和 ,或者(不太灵活,但更方便)如下: 、 由
Belbin 等人提出了 “flexible beta”,即用户只会指定 par.method
),明智地 (如
并且 确定 和 为
和 。
此 par.method
指定(作为长度为 1 的向量),如果未指定 par.method
,则使用默认值 -0.1,因为 Belbin 等人建议采用 -0.1 左右的 值作为一般的凝聚层次聚类策略。 可以由
请注意, method = "gaverage", par.method = 0
(或 par.method =
c(1,1,0,0)
)相当于 agnes()
默认方法 "average"
。
值
表示聚类的类 "agnes"
(扩展 "twins"
)的对象。有关详细信息和适用的方法,请参阅agnes.object
。
BACKGROUND
聚类分析将数据集划分为彼此相似的观察组(聚类)。
例子
data(votes.repub)
agn1 <- agnes(votes.repub, metric = "manhattan", stand = TRUE)
agn1
plot(agn1)
op <- par(mfrow=c(2,2))
agn2 <- agnes(daisy(votes.repub), diss = TRUE, method = "complete")
plot(agn2)
## alpha = 0.625 ==> beta = -1/4 is "recommended" by some
agnS <- agnes(votes.repub, method = "flexible", par.meth = 0.625)
plot(agnS)
par(op)
## "show" equivalence of three "flexible" special cases
d.vr <- daisy(votes.repub)
a.wgt <- agnes(d.vr, method = "weighted")
a.sing <- agnes(d.vr, method = "single")
a.comp <- agnes(d.vr, method = "complete")
iC <- -(6:7) # not using 'call' and 'method' for comparisons
stopifnot(
all.equal(a.wgt [iC], agnes(d.vr, method="flexible", par.method = 0.5)[iC]) ,
all.equal(a.sing[iC], agnes(d.vr, method="flex", par.method= c(.5,.5,0, -.5))[iC]),
all.equal(a.comp[iC], agnes(d.vr, method="flex", par.method= c(.5,.5,0, +.5))[iC]))
## Exploring the dendrogram structure
(d2 <- as.dendrogram(agn2)) # two main branches
d2[[1]] # the first branch
d2[[2]] # the 2nd one { 8 + 42 = 50 }
d2[[1]][[1]]# first sub-branch of branch 1 .. and shorter form
identical(d2[[c(1,1)]],
d2[[1]][[1]])
## a "textual picture" of the dendrogram :
str(d2)
data(agriculture)
## Plot similar to Figure 7 in ref
## Not run: plot(agnes(agriculture), ask = TRUE)
data(animals)
aa.a <- agnes(animals) # default method = "average"
aa.ga <- agnes(animals, method = "gaverage")
op <- par(mfcol=1:2, mgp=c(1.5, 0.6, 0), mar=c(.1+ c(4,3,2,1)),
cex.main=0.8)
plot(aa.a, which.plot = 2)
plot(aa.ga, which.plot = 2)
par(op)
## Show how "gaverage" is a "generalized average":
aa.ga.0 <- agnes(animals, method = "gaverage", par.method = 0)
stopifnot(all.equal(aa.ga.0[iC], aa.a[iC]))
作者
Method "gaverage"
has been contributed by Pierre Roudier, Landcare
Research, New Zealand.
参考
Kaufman, L. and Rousseeuw, P.J. (1990). (=: “K&R(1990)”) Finding Groups in Data: An Introduction to Cluster Analysis. Wiley, New York.
Anja Struyf, Mia Hubert and Peter J. Rousseeuw (1996) Clustering in an Object-Oriented Environment. Journal of Statistical Software 1. doi:10.18637/jss.v001.i04
Struyf, A., Hubert, M. and Rousseeuw, P.J. (1997). Integrating Robust Clustering Techniques in S-PLUS, Computational Statistics and Data Analysis, 26, 17-37.
Lance, G.N., and W.T. Williams (1966). A General Theory of Classifactory Sorting Strategies, I. Hierarchical Systems. Computer J. 9, 373-380.
Belbin, L., Faith, D.P. and Milligan, G.W. (1992). A Comparison of Two Approaches to Beta-Flexible Clustering. Multivariate Behavioral Research, 27, 417-433.
也可以看看
agnes.object
、daisy
、diana
、dist
、hclust
、plot.agnes
、twins.object
。
相关用法
- R agnes.object 聚合嵌套 (AGNES) 对象
- R agriculture 欧盟农业劳动力
- R animals 动物的属性
- R summary.clara “clara”对象的摘要方法
- R diana 分裂分析聚类
- R pluton 钚同位素成分批次
- R votes.repub 总统选举中共和党候选人的投票
- R print.mona MONA 对象的打印方法
- R print.clara CLARA 对象的打印方法
- R mona 二元变量的单论分析聚类
- R plot.diana 分裂层次聚类图
- R plot.mona 一元分裂层次聚类的旗帜
- R bannerplot 绘图横幅(层次聚类)
- R plot.partition 数据集分区图
- R summary.agnes “agnes”对象的摘要方法
- R pltree 绘制层次聚类的聚类树
- R summary.mona “mona”对象的摘要方法
- R plantTraits 植物物种性状数据
- R plot.agnes 凝聚层次聚类图
- R print.agnes AGNES 对象的打印方法
- R chorSub Kola 数据 C 范围的子集
- R pam 围绕 Medoid 进行分区
- R volume.ellipsoid 计算(椭球体的)体积
- R clusplot (分区对象的)双变量聚类图
- R print.pam PAM 对象的打印方法
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Agglomerative Nesting (Hierarchical Clustering)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。