【问题标题】:Plotting select PCA loadings in R在 R 中绘制选择的 PCA 载荷
【发布时间】:2020-08-19 04:59:02
【问题描述】:

我刚刚对包含大约 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 影响最大的变量并仅绘制这些变量?

提前谢谢你!

【问题讨论】:

  • 只是想特别感谢 AmitKohli 和 SlowLearning --combined,你们的 cmets 真的帮助我探索了我的数据集!
  • 不客气!! :)

标签: r plot subset pca


【解决方案1】:

您要做的是首先获取将合成变量与实际变量相关联的实际表。这样做:

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 个变量。

【讨论】:

    【解决方案2】:

    如果你想看到你想要的维度,你应该这样做:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-12
      • 2021-12-08
      • 2018-02-26
      • 2017-01-06
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多