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


R diana 分裂分析聚类


R语言 diana 位于 cluster 包(package)。

说明

计算数据集的分裂层次聚类,返回类 diana 的对象。

用法

diana(x, diss = inherits(x, "dist"), metric = "euclidean", stand = FALSE,
      stop.at.k = FALSE,
      keep.diss = n < 100, keep.data = !diss, trace.lev = 0)

参数

x

数据矩阵或 DataFrame ,或相异矩阵或对象,具体取决于 diss 参数的值。

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

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

diss

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

metric

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

stand

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

stop.at.k

逻辑或整数,默认为FALSE。否则必须是整数,例如 中的 ,指定 diana 算法应提前停止。非默认尚未实现。

keep.diss , keep.data

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

trace.lev

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

细节

diana 在 Kaufman 和 Rousseuw (1990) 的第 6 章中有完整说明。它在计算分裂层次结构方面可能是独一无二的,而大多数其他用于层次聚类的软件都是聚合的。此外,diana提供了(a)除法系数(参见diana.object),用于测量找到的聚类结构的数量; (b) 横幅,一种新颖的图形显示(参见plot.diana)。

diana- 算法构建一个聚类层次结构,从包含所有 n 个观察值的一个大聚类开始。聚类被划分,直到每个聚类仅包含一个观察值。
在每个阶段,选择直径最大的簇。 (簇的直径是其任意两个观测值之间最大的差异。)
为了划分所选簇,该算法首先寻找其最不同的观测值(即,与所选簇的其他观测值具有最大的平均差异)。此观察启动"splinter group"。在后续步骤中,算法会重新分配更接近 "splinter group" 而非 "old party" 的观测值。结果是将所选簇划分为两个新簇。

代表聚类的"diana"类的对象;此类具有以下通用函数的方法: printsummaryplot

此外,类"diana"继承自"twins"。因此,泛型函数pltree可用于diana对象,并且as.hclustas.dendrogram方法可用。

合法的 diana 对象是包含以下组件的列表:

order

一个向量,给出原始观察值的排列以允许绘图,从某种意义上说,聚类树的分支不会交叉。

order.lab

类似于 order 的向量,但包含观察标签而不是观察编号。仅当原始观察结果被标记时,此组件才可用。

height

具有分裂前簇直径的向量。

dc

分裂系数,衡量数据集的聚类结构。对于每个观测值 i,用 表示它所属的最后一个簇的直径(在被分割为单个观测值之前)除以整个数据集的直径。 dc 是所有 的平均值。它也可以被视为横幅图的平均宽度(或填充百分比)。由于 dc 随着观察数量的增加而增长,因此不应使用此度量来比较大小差异很大的数据集。

merge

(n-1) x 2 矩阵,其中 n 是观测值的数量。 merge 的第 i 行说明了聚类步骤 n-i 处的分割。如果 r 行中的数字 为负,则单个观测值 在阶段 n-r 处被拆分。如果 j 为正,则将在阶段 n-j 分裂的簇(由行 j 说明)将在阶段 n-r 分裂。

diss

"dissimilarity" 的对象,表示数据集的总相异矩阵。

data

包含原始或标准化测量值的矩阵,具体取决于函数 agnesstand 选项。如果给出相异矩阵作为输入结构,则该分量不可用。

例子

data(votes.repub)
dv <- diana(votes.repub, metric = "manhattan", stand = TRUE)
print(dv)
plot(dv)

## Cut into 2 groups:
dv2 <- cutree(as.hclust(dv), k = 2)
table(dv2) # 8 and 42 group members
rownames(votes.repub)[dv2 == 1]

## For two groups, does the metric matter ?
dv0 <- diana(votes.repub, stand = TRUE) # default: Euclidean
dv.2 <- cutree(as.hclust(dv0), k = 2)
table(dv2 == dv.2)## identical group assignments

str(as.dendrogram(dv0)) # {via as.dendrogram.twins() method}

data(agriculture)
## Plot similar to Figure 8 in ref
## Not run: plot(diana(agriculture), ask = TRUE)

也可以看看

agnes 也可用于背景和参考; cutree (和 as.hclust )用于分组提取; daisydistplot.dianatwins.object

相关用法


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