Supongamos que mat_pages [] contiene páginas en las columnas (que desea agrupar) e individuos en las filas. Puede agrupar páginas basadas en datos individuales en Rby con el siguiente comando:
pc <- prcomp(x=mat_pages,center=TRUE,scale=TRUE)
La matriz de cargas es la matriz de vectores propios de la descomposición SVD de los datos. Dan el peso relativo de cada PÁGINA en el cálculo de puntajes. Las cargas con valores absolutos más grandes tienen más influencia para determinar la puntuación del componente principal correspondiente.
Sin embargo, también debo señalar la brevedad del uso de PCA para agrupar páginas. La razón de esto es que las cargas otorgan mayores pesos a las PÁGINAS con mayor variación, independientemente de si esta variación se debe realmente al contenido de la PÁGINA o por alguna otra razón (puede ser una variación técnica o individual). Las cargas no reflejan necesariamente las verdaderas diferencias entre los grupos, lo que (quizás) sea su interés principal. PERO, este agrupamiento realmente refleja las diferencias en el grupo bajo el supuesto de que todas las páginas tienen la misma variación (no sé si este es un supuesto válido).
Si tiene unas potentes instalaciones informáticas (que pueden ser posibles dado el tamaño de sus datos), puede ser una buena idea usar modelos jerárquicos. En R, se puede hacer usando el paquete lme4.
¿Qué hacer después de tener los puntajes?
Esta es una sugerencia cruda y el análisis depende en gran medida del aspecto de los datos. Además, supongo que este proceso sería muy inviable para agrupar los datos de magnitud que tiene.
pc.col <- paste("page", 1:27000, sep=".")
pdf("principle-components.pdf")
plot(pc$x[,1:2]) ## Just look at the 1st two loadings (as you can see the groupings in a plane)
dev.off()
Con suerte, esto puede darle una idea de cómo se agrupan los datos.
Advertencia: esto no es lo que recomendaría.
Mi recomendación:
Problemas como estos surgen con frecuencia en genómica. En su caso, las páginas corresponden a genes y los individuos corresponden a pacientes (básicamente, los individuos tienen el mismo significado que en genómica)
Desea agrupar las páginas en función de los datos.
Puede usar muchos paquetes de agrupación en R y se le ha señalado en otras respuestas. Un problema fundamental con los paquetes es que hclust es cómo determinar el número de clústeres. Algunos de mis favoritos son:
- pvclust (Le da grupos y también le da un valor p para cada grupo. Usando el valor p puede determinar los grupos estadísticamente significativos. Problema : requiere mucha potencia computacional y no estoy seguro de si funcionará con los datos de su tamaño)
- hopach (le da el número estimado de grupos y los grupos)
- Hay otros paquetes disponibles en Bioconductor. Compruébelos en la vista de tareas.
También puede usar agrupaciones de algos como k-means etc. Estoy seguro de que vi un hilo en este foro sobre la agrupación. Las respuestas fueron muy detalladas. Tal Galili le preguntó si recuerdo correctamente.