在 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)
我刚刚对包含大约 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)