从 PCA 中提取最重要的变量

机器算法验证 r 聚类 主成分分析
2022-04-01 11:42:39

我想从 PCA 结果中获得最重要的变量。我在图中看到两个集群。我现在可能不是只有一个变量导致了这种情况,所以也许我必须得到多个变量。

我正在使用“ Adegenet ”R 包。我的原始数据是一个矩阵,其中行是 PubMed 论文,列是 MeSH 关键字。数据已被转换为类 SNP,以使该方法适应新的输入数据。如果您认为我对这个包的工作不正确,请指出正确的 R 包,我之所以选择它是因为我已经知道它是如何工作的。

基于 1359 篇宏基因组论文和 3459 个 MeSH 术语的 PCA 前两个维度

#R code
library(adegenet)
#Load SNPs
myPath <- "pubmed_result_metagenomics_ALL_parsed.fasta"#core SNPs retrieved with kSNP from 188 H. parasuis strains, removing from the analysis the strains tagged with ‘NK’ phenotype. kSNP k-mer sizes tested were 25, 20 and 15, selecting the run that gave more SNPs, i.e., 15.
core_SNPs_matrix <- fasta2genlight(myPath, chunk=1000, multicore=FALSE)#
core_SNPs_matrix <- as.matrix(core_SNPs_matrix)

# Principal Component Analysis (PCA)
pca1 <- glPca(core_SNPs_matrix) # 10 components saved
pca1

# Draw PCA colorplot
myCol <- colorplot(pca1$scores,pca1$scores, transp=TRUE, cex=4)
abline(h=0,v=0, col="grey")
add.scatter.eig(pca1$eig[1:40],2,1,2, posi="topright", inset=.05, ratio=.3)
title("First two dimensions of PCA \n based on 1359 metagenomcs papers \n and 3459 MeSH terms")
dev.copy2pdf(file = "Figure_12.pdf") #Save as .pdf#
1个回答

“最重要”的主成分通常被认为是具有最大特征值的主成分。如果您的包以通常的方式工作,这应该是第一个主要组件 PC1。要查看每个组件的重要性,请将特征值除以要分解的变量数。这告诉您每个组件“解释”的数据变化的百分比。您使用多少组件最终取决于您,尽管您可能想查看这篇论文

编辑要根据它们对主成分的贡献来找到最重要的变量,您确实必须查看负载。载荷是主成分在变量上的投影。特定变量的特别高(或特别低)负载意味着主成分与变量密切相关。我对 PCA 的经验主要来自股票回报,我们认为高负荷代表公司面临潜在风险的一些风险敞口。在这种情况下,高负荷意味着大量曝光。在这里,您可以将它们视为论文中的一些常见主题,并且加载是该论文与该主题的匹配程度(或取决于您的数据的组织方式,关键字与该主题的匹配程度)。

因此,查看那些对您的主成分贡献最大的变量,并根据它们的负载的绝对值来找到它们是绝对有意义的——因为主成分的含义最终是不清楚的。