测试组间的性别构成

数据挖掘 r 分配
2022-02-14 18:28:58

我用 k=4 做了 kmeans,我想知道 4 个集群之间的性别构成是否有任何差异。

我是否使用 Fisher 的独立性精确检验?r 中是否有任何推荐的库可以处理此问题以及组之间的事后测试?

1个回答

对于聚类分析,您可以使用轮廓系数或轮廓宽度。这些在 R 中可用clusterfactoextra打包在 R 中。

我将解释轮廓分析中的基本内容:

轮廓系数计算如下:

1) 对于每个观测值 i,它计算 i 与 i 所属的同一簇内的所有其他点之间的平均差异。我们称这种平均差异为“Di”。

2)现在我们在 i 和所有其他集群之间进行相同的差异计算,并得到它们中的最低值。也就是说,我们发现 i 和紧跟在它自己的簇之后最接近 i 的簇之间的差异。让我们称这个值为“Ci”

3) 轮廓 (Si) 宽度是 Ci 和 Di 之间的差 (Ci-Di) 除以这两个值中的最大值 (max(Di, Ci))。

Si = (Ci - Di) / max(Di, Ci)

所以,轮廓宽度的解释如下:

  • Si > 0 表示观测值聚类良好。离 1 越近,聚类效果越好。
  • Si < 0 表示观测被放置在错误的簇中。
  • Si = 0 表示观察在两个集群之间。

计算上述内容并可视化的基本代码:

library(cluster)
library(factoextra)

sil <- silhouette(clustering$cluster, dist(input))
fviz_silhouette(sil)