微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获取特定组件的变量 (PCA)

如何解决如何获取特定组件的变量 (PCA)

我想从特定组件 (COMP 2) 获取变量:

> pca$eig
         eigenvalue percentage of variance cumulative percentage of variance
comp 1 3.8167747447           47.709684309                          47.70968
comp 2 2.0680904354           25.851130442                          73.56081
comp 3 0.9728158313           12.160197892                          85.72101
comp 4 0.7962420036            9.953025045                          95.67404
comp 5 0.1792036107            2.240045134                          97.91408
comp 6 0.0924269941            1.155337427                          99.06942
comp 7 0.0740850743            0.926063429                          99.99548
comp 8 0.0003613058            0.004516322                         100.00000

R 中是否有任何命令可以用来执行此操作?

解决方法

使用 factoextra,您可以使用 get_pca_var 获得所有组件:

library(FactoMineR)
library(factoextra)

pca <- FactoMineR::PCA(iris[,1:4])

pca.var <- factoextra::get_pca_var(pca)

pca.var$coord

                  Dim.1      Dim.2       Dim.3       Dim.4
Sepal.Length  0.8901688 0.36082989 -0.27565767 -0.03760602
Sepal.Width  -0.4601427 0.88271627  0.09361987  0.01777631
Petal.Length  0.9915552 0.02341519  0.05444699  0.11534978
Petal.Width   0.9649790 0.06399985  0.24298265 -0.07535950

第二维坐标为:

pca.var$coord[,"Dim.2"]
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
  0.36082989   0.88271627   0.02341519   0.06399985  
,

您可以使用 prcomp 和索引选择特定的 PC 组件:

library(fastDummies)
table <- data.frame(NOM = c("Evian","Montagne des Pyrenees","Cristaline-St-Cyr","Fiee des Lois","Volcania","Saint Diery"),ACRO = c("EVIAN","MTPYR","CRIST","FIEE","VOLCA","STDIE"),PAYS = c("F","F","F"),TYPE = c("M","S","M"),PG = c("P","P","G"),CA = c(78,48,71,89,4.1,85),MG = c(24,11,5.5,31,1.7,80),`NA` = c(5,34,11.2,17,2.7,385),K = c(1,1,3.2,2,0.9,65),SUL = c(10,16,5,47,1.1,25),NO3 = c(3.8,4,0.8,1.9),HCO3 = c(357,183,250,360,25.8,1350),CL = c(4.5,50,20,28,285),MOY = c(60.41,43.38,45.86,71.75,4.75,284.61),stringsAsFactors = TRUE)

table_conv <- dummy_cols(table,select_columns = c("NOM","ACRO","PAYS","TYPE","PG"),remove_selected_columns = TRUE)

pca <- prcomp(as.matrix(table_conv))

pca$x[,"PC4"]

我使用您之前的问题作为数据集的指南。这是您的 PC2 特征向量:

pca$rotation[,"PC2"]
> pca$rotation[,"PC2"]
                       CA                        MG                       NA. 
             0.4583258631              0.0567007399             -0.6581371706 
                        K                       SUL                       NO3 
            -0.1004287315              0.1358452663             -0.0009273267 
                     HCO3                        CL                       MOY 
             0.3046381925             -0.4804253636             -0.0355753827 
    NOM_Cristaline-St-Cyr                 NOM_Evian         NOM_Fiee des Lois 
             0.0010557813              0.0044191573              0.0038456894 
NOM_Montagne des Pyrenees           NOM_Saint Diery              NOM_Volcania 
            -0.0029622537             -0.0016729014             -0.0046854729 
               ACRO_CRIST                ACRO_EVIAN                 ACRO_FIEE 
             0.0010557813              0.0044191573              0.0038456894 
               ACRO_MTPYR                ACRO_STDIE                ACRO_VOLCA 
            -0.0029622537             -0.0016729014             -0.0046854729 
                   PAYS_F                    TYPE_M                    TYPE_S 
             0.0000000000              0.0027462560             -0.0027462560 
                     PG_G                      PG_P 
            -0.0016729014              0.0016729014

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。