使用 PCA 绘制散点图以及如何读取结果

Making a scatterplot with PCA and how to read results

我是 R 的新手,对 PCA 不熟悉。我的问题是,根据一项调查,我有一个包含九个变量观察结果的列表,第一个是受访者的性别,接下来的五个(Q51_1_c、Q51_2_c、Q51_4_c、Q51_6_c,Q51_7_c)问创业问题,其他人问未来期望(Q56_1_c,Q56_2_c,Q56_3_c)。除了性别,所有这些变量的取值都在 1 到 5 之间。我想制作一个有两个轴的散点图。第一个轴为 "entrepreneurial variables",第二个轴为 "future expectations variables",然后将散点图中的点定义为男性和女性的位置。我的数据如下所示:

 x <- "Q1b Q51_1_c Q51_2_c Q51_4_c Q51_6_c Q51_7_c Q56_1_c Q56_2_c Q56_3_c
3    Male       5       4       4       4       4       5       4       4
4  Female       4       3       4       4       3       3       4       3
5  Female       1       1       1       1       1       3       1       1
7  Female       2       1       1       1       1       5       1       4
8  Female       4       4       5       4       4       5       4       4
9  Female       3       3       4       4       3       3       4       4
13   Male       4       4       4       4       5       3       3       3
15 Female       3       4       4       4       4       1       1       5
16 Female       4       1       4       4       4       3       3       3
19 Female       3       2       3       3       3       3       3       3
20   Male       1       1       1       1       1       3       1       5
21 Female       3       1       1       2       1       3       3       3
26 Female       5       5       1       2       1       4       4       3
27 Female       2       1       1       1       1       1       1       1
29   Male       2       2       2       2       1       4       4       4
31 Female       3       1       1       1       1       5       2       3
34 Female       4       1       1       4       3       3       1       4
36 Female       5       1       1       4       4       5       1       2
37   Male       5       1       2       4       4       5       4       5
38 Female       3       1       1       1       1       1       1       1"

致 运行 PCA 这是我的代码:

x <- na.omit(x) #Jus to simplyfy

resul <- prcomp(x[,-1], scale = TRUE)

x$PC1 <- resul$x[,1] #Saving Scores PC1
x$PC2 <- resul$x[,2] #Saving Scores PC2

结果轴是这样的:

biplot(resul, scale = 0)

最后,制作散点图:

x %>%
  group_by(Q1b) %>%
  summarise(mean_PC1 = mean(PC1),
            mean_PC2 = mean(PC2)) %>%
    ggplot(aes(x=mean_PC1, y=mean_PC2, colour=Q1b)) +
    geom_point() +
    theme_bw()

这给了我这个:

我不确定如何阅读结果...我是否应该接受女性在未来期望方面的价值普遍高于男性。而男性在创业方面的价值更高?

提前致谢!!

您对轴的解释看起来是正确的,即 PC1 是一个梯度,从左到右代表减少 "entrepreneurialness",而 PC2 是一个从下到上代表增加的未来预期的梯度(假设“原始数据中的 5" 表示最高 entrepreneurialness/expectations).

就男性和女性是否不同而言,您可能需要绘制的不仅仅是每个组的均值:即使男性和女性在 entrepreneurialness/expectations 方面确实相同,您也永远不会期望两个样本的均值在散点图上彼此重叠。为了解决这个问题,您可以绘制实际观察结果而不是它们的均值(即每行一个点,按性别着色)并查看它们在图中是否混合或分开 space。或者,根据主要成分回归性别。

另一个问题是对序数数据使用 PCA 是否合适 - 请参阅 here 进行讨论。