0

我正在尝试对包含调查结果的数据集执行 PCA。该调查是针对公司进行的(公司在行中),他们被问到多个问题(问题和答案在列中)。大多数问题都基于“请从一组 X 的答案 X = {1,2,3,4...} 中选择一个答案。有一些布尔值,但大部分答案有更多的变化。

我想做的是缩小维度并寻找公司之间的相似之处。为此,我想执行 PCA。

我将使用的数据集可以从以下网址下载:https ://www.kaggle.com/jakubdbrowski/datapca

datapca <- read.csv2("datapca.csv")
datapca <- datapca[,-c(1)]

我需要删除没有任何信息的第一列。数据集是事先清理和准备好的。现在我可以执行 PCA。

xxx.pca <- prcomp(datapca, center = TRUE, scale.= TRUE)

现在我想寻找可以从我的数据中获得的集群数量。

fviz_nbclust(xxx.pca$x, FUNcluster=kmeans, k.max = 8)

看起来很难在这个特定的数据集中找到集群。

hopkins(datapca, n=nrow(xxx.pca$x)-1) 

但是,我想继续分析以完成整个分析过程。一旦我收到更新的数据,也许结果会更好。

所以我将按照建议创建两个集群。

km1<-eclust(xxx.pca$x, "kmeans", hc_metric="eucliden",k=2)

在这一点上,我的问题来了。现在,我想尝试查看集群并确定哪些负载负责集群并表征两个集群?

我还想问一下,是否可以确定最重要的负载,减少它们的数量(现在有 150 个,这使得图表过于复杂)并以更清晰的方式绘制它们?下面的两张图都很混乱。

fviz_pca_var(xxx.pca, col.var = "black")
biplot(xxx.pca, showLoadings = TRUE, lab = NULL)

非常感谢您!

4

1 回答 1

0

前 2 台 PC 解释了大约 23% 的数据变化。前 13 个解释了大约 50% 的数据,前 26 个解释了 66%。您需要决定有多少组件是有意义的。

xxx.comp <- summary(xxx.pca)
xxx.comp$importance[, c(2, 13, 26)]
#                             PC2     PC13     PC26
# Standard deviation     3.679506 1.527898 1.225693
# Proportion of Variance 0.090260 0.015560 0.010020
# Cumulative Proportion  0.233080 0.497630 0.658610

绘制前两个组件显示了一些聚类:

plot(xxx.pca$x[, 1:2], pch=20)

阴谋

您可以从识别二维的集群开始,看看它们是否有意义,然后增加维度的数量。

于 2022-01-08T02:52:45.743 回答