我刚刚对一个包含大约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个变量的图,由于有如此多的信息,它是不可读的。
有没有一种方法可以选择对PCA.1和PCA.2影响最大的变量,并只绘制这些变量的图形?
提前谢谢你!
发布于 2020-05-05 01:56:33
您要做的是首先获得将合成变量与实际变量相关联的实际表格。像这样做:
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个变量。您可以仅通过更改为arrange(desc(abs(PC1)))来对PC1运行相同的操作,或者通过更改为arrange(desc(abs(PC2)))来运行PC2 ...并通过更改head(10)查看多于或少于10个变量。
发布于 2020-05-05 02:31:24
如果你想看到你想要的尺寸,你应该这样做:
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)

https://stackoverflow.com/questions/61597791
复制相似问题