當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。