Построение графиков выбора нагрузок PCA в R - PullRequest
1 голос
/ 04 мая 2020

Я только что выполнил анализ PCA для большого набора данных с приблизительно 20 000 переменных. Для этого я использовал следующий код:

df_pca <- prcomp(df, center=FALSE, scale.=TRUE)

Мне любопытно, как мои переменные влияли на PCA.1 (измерение 1 анализа PCA) и PCA.2 (измерение 2 анализа PCA).

Я использовал следующий код, чтобы посмотреть, как каждая переменная влияла на анализ измерений:

fviz_pca_var(df_pca, col.var = "black")

Однако, это создает график со всеми 20 000 моих переменных, и так как существует так много информации нечитаемо.

Можно ли выбрать переменные, которые больше всего повлияли на PCA.1 и PCA.2, и отобразить только те из них?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 04 мая 2020

Если вы хотите увидеть нужный размер, вы должны сделать следующее:

library(factoextra)    
fviz_contrib(df_pca,
                 choice = "var",
                 axes = 5,
                 top = 10, color = 'darkorange3', barfill  = 'blue4',fill ='blue4')

с помощью axes вы можете выбрать тусклость, которую хотите видеть. В этом случае вы видите номер измерения 5. enter image description here

Если вы хотите увидеть переменные и кривую, которые помогут вам выбрать номер измерения, вы можете использовать это :

fviz_screeplot(df_pca, ncp=14,linecolor = 'darkorange3', barfill  = 'blue4', 
               barcolor ='blue4', xlab = "Dimensioni", 
               ylab = '% varicance',
               main = 'Reduction of components')
get_eigenvalue(df_pca)

enter image description here

1 голос
/ 04 мая 2020

Что вы хотите сделать, это сначала получить фактическую таблицу, которая коррелирует переменную c синтеза с реальными переменными. Сделайте это следующим образом:

a <- df_pca$rotation

Затем мы можем использовать dplyr для манипулирования фреймом данных и извлекать то, что нам нужно:

library(dplyr)
library(tibble)
a %>% as.data.frame %>% rownames_to_column %>% 
select(rowname, PC1, PC2) %>% arrange(desc(PC1)) %>% head(10)

Вышеприведенная организация покажет топ-10 самых важных переменных для ПК1. Вы можете запустить то же самое для ПК2, изменив значение arrange(desc(PC2)) ... и увидеть более или менее 10 переменных, изменив значение head(10).

.
...