es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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!

Tags:  , ,

Answer

  1. Avatar for 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 dispersión de los resultados del PCA, coloreado según la membresía al grupo. También puedes agregar elipses al gráfico para mostrar la distribución de los grupos. Para determinar las cargas más importantes, puedes usar la función fviz_eig() del paquete factoextra. Esta función te permite visualizar la proporción de varianza explicada por cada componente principal y la proporción acumulada de varianza explicada. Aquí tienes un ejemplo de código: ```{r} # Visualizar la proporción de varianza explicada por cada componente principal fviz_eig(xxx.pca, addlabels = TRUE)

    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.

Comments are closed.