我正在使用基于约30个变量的主成分分析(PCA)来构成一个将R中3个不同类别(顶部,中间,底部)中的个人分类的索引。
我有一个〜2000个人的数据框,其中包含28个二进制和2个连续变量。
现在,我想使用PC1中的加载因子来构造一个 该索引将我的2000个个体分为3个不同的组,对这30个变量进行了分类。
问题:尽管进行了广泛的研究,但我仍然找不到如何从PCA_loadings中提取负载因子,给每个人一个分数(基于30个变量的负载),随后我可以对每个人进行排名(对于进一步分类)。在图形中显示加载因子是否有意义?
a)使用PCA_outan来运行PCA <-prcomp(na.omit(df1),scale = T)
b)使用PCA_loadings <-PCA_outcome $ rotation
提取载荷c)删除了所有加载因子接近0的变量。
df1 <- read.table(text="
educ call house merge_id school members
A 1 0 1 12_3 0 0.9
B 0 0 0 13_3 1 0.8
C 1 1 1 14_3 0 1.1
D 0 0 0 15_3 1 0.8
E 1 1 1 16_3 3 3.2", header=T)
## Run PCA
PCA_outcome <- prcomp(na.omit(df1), scale = T)
## Extract loadings
PCA_loadings <- PCA_outcome$rotation
## Explanation: A-E are 5 of the 2000 individuals and the variables (education, call, house, school, members) represent my 30 variables (binary and continuous).
预期结果: -获得每个人的排名分数 -随后,为每个人分配1-3类。
答案 0 :(得分:0)
我不确定您要问的是什么,但不是100%肯定,但这是我认为您要问的问题的答案。
首先,PCA的PC1不一定会为您提供社会经济地位指数。如here所述,PC1只是“尽可能多地考虑数据的可变性”。 PC1可能很好地衡量了数据集的社会经济状况,但是您必须认真检查负载,看看这是否有意义。根据负载的迹象,可能是非常负的PC1对应非常积极的社会经济状况。正如我所说:用批判的眼光看待结果。可以here找到有关如何计算PC分数的说明。无论如何,这是属于Cross Validated的讨论,所以让我们看一下代码。
听起来您想执行PCA,拔出PC1,并将其与原始数据帧(和merge_id
)相关联。如果那是您的目标,这是一个解决方案。
# Create data frame
df <- read.table(text = "educ call house merge_id school members
A 1 0 1 12_3 0 0.9
B 0 0 0 13_3 1 0.8
C 1 1 1 14_3 0 1.1
D 0 0 0 15_3 1 0.8
E 1 1 1 16_3 3 3.2", header = TRUE)
# Perform PCA
PCA <- prcomp(df[, names(df) != "merge_id"], scale = TRUE, center = TRUE)
# Add PC1
df$PC1 <- PCA$x[, 1]
# Look at new data frame
print(df)
#> educ call house merge_id school members PC1
#> A 1 0 1 12_3 0 0.9 0.1000145
#> B 0 0 0 13_3 1 0.8 1.6610864
#> C 1 1 1 14_3 0 1.1 -0.8882381
#> D 0 0 0 15_3 1 0.8 1.6610864
#> E 1 1 1 16_3 3 3.2 -2.5339491
由reprex package(v0.2.1.9000)于2019-05-30创建
正如您所说的必须使用PCA,我假设这是一个家庭作业问题,因此,我建议您阅读PCA,以便您了解其功能,并有什么用。