使用 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 进行讨论。
我是 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 进行讨论。