R 聚类产生错误消息

标签 r cluster-analysis na

尝试聚类时我收到消息:

Error in diana(mat.in, stand = TRUE) : No clustering performed, NA's in dissimilarity matrix.

这是出乎意料的,因为戴安娜采用矩阵而不是相异矩阵。根据文档,NA 的允许在矩阵中[但不在相异矩阵中]。

例子:

require("cluster")
mat.in=data.frame(A=c(12,10,NA,14,12,60),B=c(NA,11,45,25,13,65))
d=diana(mat.in,stand=TRUE)

我已确保既没有全 NA 列也没有全 NA 行。

有人知道这里发生了什么吗?

最佳答案

至少对于示例数据而言,问题是对于样本 1 和 3,没有信息 可用于计算相异性。考虑:

> daisy(mat.in)
Dissimilarities :
          1         2         3         4         5
2  2.828427                                        
3        NA 48.083261                              
4  2.828427 14.560220 28.284271                    
5  0.000000  2.828427 45.254834 12.165525          
6 67.882251 73.593478 28.284271 60.959003 70.767224

Metric :  euclidean 
Number of objects : 6
> mat.in
   A  B
1 12 NA
2 10 11
3 NA 45
4 14 25
5 12 13
6 60 65

这说明相异矩阵中的 NA 是真实的。对于样本 1 和样本 2 之间的比较,样本 3 中缺少 A,但样本 1 中存在 A,而 B 则相反。由于没有可用于计算这两个样本的相异性的数据,您在相异性矩阵中得到一个 NA

请注意,NA 是明确允许的,只要保留一些信息来计算相异性;生成的矩阵包含所有样本与样本 1 和 3 之间的差异。

关于R 聚类产生错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12638625/

相关文章:

替换 data.frame 列中的某些值

r - 基于另一个向量的条件向量创建

r - 使用 data.table 查找间隔之间的差距

memory-management - 实现层次聚类的数据结构

r - 处理TRUE,FALSE,NA和NaN

r - 如何在表中包含 NA 数据

r - 将grid.text添加到arrange.grob以导出为PNG

r - 如何在 MikTeX 中获取 pgfSweave 包(例如当前的 PGF)的依赖项?

algorithm - 考虑 "belongingness"的集群相似曲线?

algorithm - 字符串的聚类算法