Визуализация PCA с большим количеством переменных в R с использованием ggbiplot - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь визуализировать PCA, который включает в себя 87 переменных.

prc <-prcomp(df[,1:87], center = TRUE, scale. = TRUE)
ggbiplot(prc, labels = rownames(df[,1:87]), var.axes = TRUE)

Когда я создаю биплот, многие векторы пересекаются друг с другом, делая невозможным считывание меток. Мне было интересно, есть ли способ показать только некоторые из ярлыков одновременно. Например, я думаю, что было бы полезно, если бы я мог создать несколько отдельных биплотов, каждый из которых отображал бы только подмножество меток на векторах.

Этот вопрос кажется тесно связанным, но я не знаю, переводит ли он последнюю версию ggbiplot. Я также не уверен, как изменить оригинальные функции.

1 Ответ

2 голосов
/ 23 января 2020

Потенциальным решением является использование пакета factoextra для визуализации результатов вашего PCA. Функция fviz_pca_biplot() включает аргумент repel. При repel = TRUE метки графиков разложены, чтобы минимизировать перекрытие. В документации также упоминаются опции select.var, например select.var = list(contrib=5) для отображения только 5 наиболее влиятельных векторов. Кроме того, опция select.var = list(name), которая, по-видимому, позволяет задавать конкретное подмножество c переменных, которые вы хотите показать.

# read data
df <- mtcars[, c(1:7,10:11)]

# perform PCA
library("FactoMineR")
res.pca <- PCA(df, graph = FALSE)

# visualize
library(factoextra)
fviz_pca_biplot(res.pca, repel = TRUE, select.var = list(contrib = 5))

biplot with only 5 vectors shown

...