“TSS矩阵是无限的。必须有太多的缺失值。使用nbclust

时间:2017-09-06 05:42:59

标签: r cluster-analysis

我想确定使用NbClust包进行聚类的最佳k。我的数据包含连续和分类变量,所以我使用相似矩阵,该矩阵是使用群集包中的daisy()计算的。我用下面的代码:

 res.nb <- NbClust(gower_dist_gender, min.nc = 1, 
              max.nc = 5,method = "complete", index ="all")

遇到这个错误:

The TSS matrix is indefinite. There must be too many missing values. The 
  index cannot be calculated.

问题是什么?我该如何解决? 另外考虑当我将索引设置为“轮廓”时,没有出现任何问题并将最佳k返回为2.但是我想使用index =“all”来确保根据大多数索引获得最佳k的结果(当索引设置为“all”时,26个索引被视为索引,结果显示多数投票的索引数量为k)。 所以问题是为什么运行上面的代码将索引设置为“all”会遇到之前提到的错误?

非常感谢任何一点帮助。

1 个答案:

答案 0 :(得分:0)

你对NbClust的电话是错误的。

请参阅有关如何使用距离矩阵而不是数据矩阵的文档:

  

数据

     

矩阵或数据集。

     

迪斯

     

要使用的相异矩阵。默认情况下,diss = NULL,但如果被相异矩阵替换,则距离应为“NULL”。

     

距离

     

用于计算相异度矩阵的距离度量。这必须是以下之一:“euclidean”,“maximum”,“manhattan”,“canberra”,“binary”,“minkowski”或“NULL”。默认情况下,distance =“euclidean”。 如果距离为“NULL”,则应由用户给出相异度矩阵(diss)。如果距离不是“NULL”,则相异度矩阵应为“NULL”。

使用data = NULL,distance = NULL并设置diss。