Heatmap de Données de puces à adn à l'aide de Pearson Distance
J'ai essayé de générer une matrice de classification en R pour certaines données de puces à adn et pour la plupart, ont été couronnés de succès dans la production, basé sur la formation en ligne, mais il ne fait pas exactement ce que je veux. Ce que je voudrais, c'est pour des données de cluster basé sur Pearson distance, plutôt que la distance euclidienne, mais j'ai quelques difficultés.
À l'aide de heatmap2 (à partir de la gplots paquet) j'utilise le code suivant pour faire ma première carte de chaleur:
heatmap.2(Test402,trace="none",density="none",scale="row", ColSideColors=c("red","blue") [data.test.factors],col=redgreen,labRow="",hclustfun=function(x) hclust(x,method="complete"))
Test402 est une matrice avec 402 lignes (les gènes) et 31 colonnes (les patients), et de données.test.les facteurs sont des indicateurs de résultat du groupe de chaque patient appartient. À l'aide de hclustfun fonctionne très bien ici et la heatmap semble être plus sensible aux changements dans la méthode et de l'ensemble des œuvres. Le problème, c'est le regroupement distance est tout de la distance Euclidienne, je voudrais changer qu'à l'aéroport Pearson de distance. J'ai donc tenter le suivant:
heatmap.2(Test402,trace="none",density="none",scale="row", ColSideColors=c("red","blue")[data.test.factors],col=redgreen,labRow="",hclustfun=function(x) hclust(x,method="complete"), distfun=function(x) as.dist((1-cor(x))/2) )
la commande ci-dessus échoue. C'est parce que Test402 doit être une matrice carrée. Donc à la recherche d'autres conseils, j'ai essayé le suivant:
cU = cor(Test402)
heatmap.2(cU,trace="none",density="none",scale="row", ColSideColors=c("red","blue")[data.test.factors],col=redgreen,labRow="",hclustfun=function(x) hclust(x,method="complete"), distfun=function(x) as.dist((1-x)/2) )
Qui fonctionne, MAIS là est le problème. La heatmap, plutôt que d'avoir l'original de l'expression des valeurs dans TEST402, maintenant n'affiche que les corrélations. C'est NOTwhat je veux! Je veux cette, et je veux seulement le dendrogramme de cluster différemment, je ne veux pas changer ce que les données sont effectivement représentés dans la heatmap! Est-ce possible?
OriginalL'auteur Ana | 2011-07-16
Vous devez vous connecter pour publier un commentaire.
Ok...je pense que vous êtes tout simplement confus sur la façon
cor
etdist
fonctionner. À partir de la documentation surdist
:Et de la documentation sur
cor
:Voir la différence?
dist
(etdist
objets, ce qui est leheatmap.2
est en supposant qu'il s') supposons que vous avez calculé la distance entre lignes, tout en utilisantcor
vous êtes essentiellement le calcul de la distance entre colonnes. L'ajout d'une simple transposition à votre fonction de distance le permet (non carré) exemple d'exécuter pour moi:Simple erreur, peut-être, mais pas idiot. Mon seul indice est que les docs pour heatmap.2 dit que distfun par défaut
dist
.OriginalL'auteur joran