当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R agnes 凝聚嵌套(层次聚类)


R语言 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 ,或相异矩阵,具体取决于 diss 参数的值。

对于矩阵或 DataFrame ,每行对应一个观察值,每列对应一个变量。所有变量都必须是数字。允许缺失值 (NA)。

在相异矩阵的情况下, x 通常是 daisydist 的输出。长度为 n*(n-1)/2 的向量也是允许的(其中 n 是观测值的数量),并且将以与上述函数的输出相同的方式进行解释。不允许存在缺失值 (NA)。

diss

逻辑标志:如果为 TRUE(distdissimilarity 对象的默认值),则假定 x 是相异矩阵。如果为 FALSE,则 x 被视为变量观察值矩阵。

metric

字符串,指定用于计算观测值之间差异的度量。当前可用的选项是 "euclidean""manhattan" 。欧几里得距离是差值的平方根,曼哈顿距离是绝对差值之和。如果x已经是相异矩阵,则该参数将被忽略。

stand

逻辑标志:如果为 TRUE,则在计算差异之前对 x 中的测量值进行标准化。通过减去变量的平均值并除以变量的平均绝对偏差,对每个变量(列)的测量值进行标准化。如果x已经是相异矩阵,则该参数将被忽略。

method

定义聚类方法的字符串。实现的六种方法是"average"([未加权对]组[arithMetic]平均方法,又名“UPGMA”)、"single"(单链接)、"complete"(完全链接)、"ward"(Ward 方法) ,"weighted"(加权平均链接,又名“WPGMA”),它的泛化"flexible"使用Lance-Williams公式和par.method参数(的常量版本),以及"gaverage"广义"average"又名“flexible UPGMA” 方法也使用 Lance-Williams 公式和 par.method

默认值为 "average"

par.method

如果 method"flexible""gaverage" ,即长度为 1、3 或 4 的数值向量(默认为 "gaverage" ),请参阅详细信息部分。

keep.diss , keep.data

逻辑指示是否应将差异和/或输入数据x保留在结果中。将它们设置为 FALSE 可以得到更小的结果,因此甚至可以节省内存分配时间。

trace.lev

指定算法期间打印诊断的跟踪级别的整数。默认 0 不打印任何内容;值越高,打印的内容就越多。

细节

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

聚类分析将数据集划分为彼此相似的观察组(聚类)。

分层方法

agnesdianamona 构建聚类层次结构,聚类数量范围从 1 到观察数。

分区方式

pamclarafanny 要求用户给出簇的数量。

例子

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.objectdaisydianadisthclustplot.agnestwins.object

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Agglomerative Nesting (Hierarchical Clustering)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。