如何找到主成分和原始数据变量之间的 link?
How do I find the link between principal components and raw data's variables?
我正在使用 R 中的 prcomp() 函数。
我想知道是否有任何简单的方法可以查看每个主成分的变量贡献。
或者,如果 prcomp 不是为此设计的,我可以使用哪个 pca 分析(或 pca "like")来回答这个问题:
原始数据中的哪些变量最具判别力?
如何查看原始数据变量对所有主成分的贡献
或者,对于每个主成分:
PC1 = Var55 + Var2000 ( or 78% Var55 + 22% Var2000)
PC2 = Var19 + Var32 + Var45
PC3 = ...
正如@Axeman所说,你可以看看旋转
如果您有此 PCA:
pcaRes <- prcomp(df, scale. = TRUE)
然后,看看旋转
loadings <- pcaRes$rotation
这应该显示变量如何影响 PCA 轴。例如。,
负值表示负相关。
如果你想要每个变量的相对贡献,你可以求和
每个 PC 轴的总载荷(负数使用绝对值)然后
将每个值除以列 sum
#You can do this quick and dirty way
t(t(abs(loadings))/rowSums(t(abs(loadings))))*100
# or this sweet function
sweep(x = abs(loadings), MARGIN = 2,
STATS = colSums(abs(loadings)), FUN = "/")*100
我正在使用 R 中的 prcomp() 函数。 我想知道是否有任何简单的方法可以查看每个主成分的变量贡献。
或者,如果 prcomp 不是为此设计的,我可以使用哪个 pca 分析(或 pca "like")来回答这个问题:
原始数据中的哪些变量最具判别力?
如何查看原始数据变量对所有主成分的贡献
或者,对于每个主成分:
PC1 = Var55 + Var2000 ( or 78% Var55 + 22% Var2000)
PC2 = Var19 + Var32 + Var45
PC3 = ...
正如@Axeman所说,你可以看看旋转
如果您有此 PCA:
pcaRes <- prcomp(df, scale. = TRUE)
然后,看看旋转
loadings <- pcaRes$rotation
这应该显示变量如何影响 PCA 轴。例如。, 负值表示负相关。
如果你想要每个变量的相对贡献,你可以求和 每个 PC 轴的总载荷(负数使用绝对值)然后 将每个值除以列 sum
#You can do this quick and dirty way
t(t(abs(loadings))/rowSums(t(abs(loadings))))*100
# or this sweet function
sweep(x = abs(loadings), MARGIN = 2,
STATS = colSums(abs(loadings)), FUN = "/")*100