在 R 中绘制 select PCA 载荷

Plotting select PCA loadings in R

我刚刚对包含大约 20,000 个变量的大型数据集执行了 PCA 分析。为此,我使用了以下代码:

df_pca <- prcomp(df, center=FALSE, scale.=TRUE)

我很好奇我的变量如何影响 PCA.1(PCA 分析的维度 1)和 PCA.2(PCA 分析的维度 2)。

我使用以下代码查看每个变量如何影响维度分析:

fviz_pca_var(df_pca, col.var = "black")

但是,这会创建一个包含我的所有 20,000 个变量的图表,并且由于信息太多,无法读取。

有没有办法 select 对 PCA.1 和 PCA.2 影响最大的变量并仅绘制这些变量?

提前致谢!

你想要做的是首先得到实际的table,它与合成变量和真实变量相关联。这样做:

a <- df_pca$rotation

然后我们可以使用dplyr操作数据框,提取我们想要的:

library(dplyr)
library(tibble)
a %>% as.data.frame %>% rownames_to_column %>% 
select(rowname, PC1, PC2) %>% arrange(desc(PC1^2+PC2^2)) %>% head(10)

以上将组织显示 PC1 和 PC2 的前 10 个最重要的变量。您可以 运行 PC1 仅通过更改为 arrange(desc(abs(PC1))) 或 PC2 通过更改为 arrange(desc(abs(PC2)))... 并通过更改 head(10) 查看多于或少于 10 个变量.

如果您想查看所需的维度,您应该这样做:

library(factoextra)    
fviz_contrib(df_pca,
                 choice = "var",
                 axes = 5,
                 top = 10, color = 'darkorange3', barfill  = 'blue4',fill ='blue4')

axes 你可以选择你想看到的暗淡。在本例中,您看到的是维度编号 5。

如果你想看到帮助你选择维数的变量和曲线,你可以使用这个:

fviz_screeplot(df_pca, ncp=14,linecolor = 'darkorange3', barfill  = 'blue4', 
               barcolor ='blue4', xlab = "Dimensioni", 
               ylab = '% varicance',
               main = 'Reduction of components')
get_eigenvalue(df_pca)