Agrupación PCA y análisis de los grupos en R
Estoy tratando de realizar un PCA en un conjunto de datos que contiene los resultados de una encuesta. La encuesta se realizó a empresas (las empresas se encuentran en filas) y se les hicieron múltiples preguntas (las preguntas y respuestas se encuentran en columnas). La mayoría de las preguntas se basaron en un patrón “Por favor elija una respuesta de un conjunto X de respuestas X = {1, 2, 3, 4…}. Hay algunos valores booleanos, pero una buena parte de las respuestas tiene más variación.
Lo que me gustaría hacer es reducir las dimensiones y buscar similitudes entre las empresas. Con este propósito, me gustaría realizar un PCA.
El conjunto de datos que utilizaré se puede descargar desde: https://www.kaggle.com/jakubdbrowski/datapca
datapca <- read.csv2("datapca.csv")
datapca <- datapca[,-c(1)]
Necesito eliminar la primera columna que no tiene información. El conjunto de datos se limpió y preparó previamente. Ahora puedo realizar un PCA.
xxx.pca <- prcomp(datapca, center = TRUE, scale. = TRUE)
Ahora me gustaría buscar la cantidad de grupos que podría obtener de mis datos.
fviz_nbclust(xxx.pca$x, FUNcluster = kmeans, k.max = 8)
Parece que podría ser difícil encontrar grupos en este conjunto de datos en particular.
hopkins(datapca, n = nrow(xxx.pca$x)-1)
Sin embargo, me gustaría continuar el análisis y seguir todo el proceso analítico. Una vez que reciba los datos actualizados, tal vez los resultados sean mejores.
Entonces, crearé dos grupos como se sugiere.
km1 <- eclust(xxx.pca$x, "kmeans", hc_metric = "euclidean", k = 2)
Y en este punto viene mi pregunta. En este momento, me gustaría intentar analizar los grupos y determinar qué cargas son responsables de la agrupación y caracterizar los dos grupos.
También me gustaría preguntar si es posible determinar las cargas más importantes, reducir su número (ahora hay 150, lo cual hace que el gráfico sea demasiado complicado) y representarlas de una manera más clara. Ambos gráficos de abajo están demasiado desordenados.
fviz_pca_var(xxx.pca, col.var = "black")
biplot(xxx.pca, showLoadings = TRUE, lab = NULL)
¡Muchas gracias de antemano!
davy.ai
Para determinar qué cargas son responsables de la agrupación y caracterizar los dos grupos, puedes usar la función fviz_cluster() del paquete factoextra. Esta función te permite visualizar los resultados del PCA en relación a la agrupación.
Aquí tienes un ejemplo de código:
“`{r}
library(factoextra)
Paleta de colores para los grupos
col <- c(“#0072B2”, “#D55E00”)
Visualizar los resultados del PCA con respecto a la agrupación
fviz_cluster(km1, xxx.pca$x, geom = “point”,
ellipse.type = “norm”, ellipse.level = 0.95,
palette = col, ggtheme = theme_minimal())
Esto te dará un gráfico de escalamiento de la proporción de varianza explicada por cada componente principal. Puedes ver qué componentes principales explican la mayor parte de la varianza y seleccionarlos para un análisis posterior.
Para representar las cargas más importantes de una forma más clara, puedes usar la función fviz_pca_var() del paquete factoextra. Esta función te permite visualizar las cargas de cada variable en los componentes principales.
Aquí tienes un ejemplo de código:
“`{r}
Visualizar las cargas de cada variable en los componentes principales
fviz_pca_var(xxx.pca, col.var = “black”, select.var = list(contrib = 5),
repel = TRUE, ggtheme = theme_minimal())
“`
Esto te dará un biplot de las cargas de la(s) variable(s) seleccionada(s) en los componentes principales. Puedes seleccionar las cargas más importantes según el gráfico de escalamiento y agregarlas al argumento “select.var”. El argumento “repel” permite que las etiquetas se coloquen fuera de los puntos para evitar superposiciones.