Supongamos que mat_pages[] contiene páginas en las columnas (que desea agrupar) e individuos en las filas. Puede agrupar las páginas basándose en los datos individuales en Rby utilizando 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. Proporcionan el peso relativo de cada PÁGINA en el cálculo de las puntuaciones. Las cargas con valores absolutos mayores tienen más influencia en la determinación de la puntuación del componente principal correspondiente.
Sin embargo, también debo señalar la que viene de corto de utilizar el PCA para agrupar páginas. La razón es que las cargas dan mayor peso a las PÁGINAS con mayor variación, independientemente de si esta variación se debe realmente al contenido de la PÁGINA o a alguna otra razón (puede ser una variación técnica o individual). Los loadings no reflejan necesariamente las verdaderas diferencias entre los grupos, lo que (tal vez) sea su principal interés. PERO, esta agrupación refleja realmente las diferencias en el grupo bajo el supuesto de que todas las páginas tienen la misma varianza (no sé si es un supuesto válido).
Si dispone de una potente infraestructura informática (lo que puede ser posible dado el tamaño de sus datos), utilizar modelos jerárquicos puede ser una buena idea. En R, se puede hacer usando el paquete lme4.
¿Qué hacer después de tener las puntuaciones?
Se trata de una sugerencia aproximada y el análisis depende en gran medida del aspecto de los datos. Además, supongo que este proceso sería altamente inviable para agrupar los datos de la magnitud que tienes.
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()
Esperemos que esto pueda darle una idea de cómo se agrupan los datos.
Advertencia: esto no es lo que yo recomendaría.
Mi recomendación:
En su caso, las páginas corresponden a los genes y los individuos a los pacientes (básicamente, individuos tiene el mismo significado que en genómica).
Quiere agrupar las páginas en función de los datos.
Usted puede utilizar un montón de paquetes de clustering en R y se han señalado en otras respuestas. Un problema fundamental con los paquetes es como hclust es cómo determinar el número de clusters. Algunos de mis favoritos son:
- pvclust (Le da clusters y también da un valor p para cada cluster. Utilizando el valor p puede determinar los clusters estadísticamente significativos. Problema (el sistema de gestión de la información es muy complejo: requiere mucha potencia de cálculo y no estoy seguro de que funcione con datos de tu tamaño)
- hopach (Le da el número estimado de clusters, y los clusters)
- hay otros paquetes disponibles en Bioconductor, por favor, compruébalos en la vista de tareas.
También puede utilizar algoritmos de agrupación como k-means, etc. Estoy seguro de haber visto un hilo en este foro sobre clustering. Las respuestas eran muy detalladas. Fue preguntado por Tal Galili si no recuerdo mal.