尝试聚类时我收到消息:
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/