3

尝试集群时,我收到以下消息:

diana 中的错误(mat.in,stand = TRUE):未执行聚类,NA 在相异矩阵中。

这是出乎意料的,因为 diana 采用矩阵而不是相异矩阵。根据文档,矩阵允许使用 NA [但在相异矩阵中不允许使用 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 行。

有谁知道这里发生了什么?

4

1 回答 1

1

至少对于示例数据,问题在于样本 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 之间的比较,A样本 3 缺失,但样本 1 存在,而反之亦然B。由于没有数据可用于计算这两个样本的相异性,因此您会NA在相异矩阵中得到一个。

请注意,NA只要有一些信息可以计算相异性,显然允许 s ;生成的矩阵包含所有样本与样本 1 和 3 之间的差异。

于 2012-09-28T11:47:56.303 回答