Vamos assumir que mat_pages [] contém páginas nas colunas (que você deseja agrupar) e indivíduos nas linhas. Você pode agrupar páginas com base em dados individuais no Rby usando o seguinte comando:
pc <- prcomp(x=mat_pages,center=TRUE,scale=TRUE)
A matriz loadings é a matriz de vetores próprios da decomposição SVD dos dados. Eles dão o peso relativo de cada PAGE no cálculo das pontuações. Cargas com valores absolutos maiores têm mais influência na determinação da pontuação do componente principal correspondente.
No entanto, devo destacar também a curta utilização do PCA para agrupar páginas. A razão para isso é que as cargas fornecem pesos maiores às PAGES com variação mais alta, independentemente de essa variação ser realmente devida ao conteúdo da PAGE ou a algum outro motivo (pode ser variação técnica ou individual). Os carregamentos não refletem necessariamente as verdadeiras diferenças entre os grupos, que (talvez) são seu principal interesse. MAS, esse agrupamento reflete verdadeiramente as diferenças no grupo sob a suposição de que todas as páginas têm a mesma variação (não sei se essa é uma suposição válida).
Se você possui instalações de computação poderosas (o que pode ser possível, considerando o tamanho dos dados), usar modelos hierárquicos pode ser uma boa ideia. Em R, isso pode ser feito usando o pacote lme4.
O que você faz depois de ter as pontuações?
Essa é uma sugestão grosseira e a análise depende muito da aparência dos dados. Além disso, eu acho que esse processo seria altamente inviável para agrupar os dados de magnitude que você possui.
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()
Felizmente, isso pode fornecer uma imagem de como os dados são agrupados.
Aviso: não é isso que eu recomendaria.
Minha recomendação:
Problemas como esses surgem frequentemente na genômica. No seu caso, as páginas correspondem a genes e os indivíduos correspondem a pacientes (basicamente indivíduos têm o mesmo significado que na genômica).
Você deseja agrupar as páginas com base nos dados.
Você pode usar muitos pacotes de cluster no R e foi apontado em outras respostas. Um problema fundamental dos pacotes é como hclust: como determinar o número de clusters. Alguns dos meus favoritos são:
- pvclust (fornece clusters e também fornece um valor de p para cada cluster. Usando o valor de p, você pode determinar os clusters estatisticamente significativos. Problema : requer muita energia computacional e não tenho certeza se ele funcionará com os dados de seu Tamanho)
- hopach (fornece o número estimado de clusters e os clusters)
- Se houver outros pacotes disponíveis no Bioconductor, verifique-os na visualização de tarefas.
Você também pode usar algos de cluster como k-means etc. Tenho certeza de que vi um tópico neste fórum sobre cluster. As respostas foram muito detalhadas. Tal Galili perguntou se eu me lembro corretamente.