impostazione matrice di distanza e di clustering metodi heatmap.2
-
25-10-2019 - |
Domanda
default heatmap.2 a dist per il calcolo della matrice di distanza e hclust per il clustering. Qualcuno ora come posso impostare dist di utilizzare il metodo euclideo e hclust utilizzare il metodo baricentro? Ho fornito un esempio di codice compilabile soffietto. Ho provato: distfun = dist (method = "euclidea"), ma questo non funziona. Tutte le idee?
library("gplots")
library("RColorBrewer")
test <- matrix(c(79,38.6,30.2,10.8,22,
81,37.7,28.4,9.7,19.9,
82,36.2,26.8,9.8,20.9,
74,29.9,17.2,6.1,13.9,
81,37.4,20.5,6.7,14.6),ncol=5,byrow=TRUE)
colnames(test) <- c("18:0","18:1","18:2","18:3","20:0")
rownames(test) <- c("Sample 1","Sample 2","Sample 3", "Sample 4","Sample 5")
test <- as.table(test)
mat=data.matrix(test)
heatmap.2(mat,
dendrogram="row",
Rowv=TRUE,
Colv=NULL,
distfun = dist,
hclustfun = hclust,
xlab = "Lipid Species",
ylab = NULL,
colsep=c(1),
sepcolor="black",
key=TRUE,
keysize=1,
trace="none",
density.info=c("none"),
margins=c(8, 12),
col=bluered
)
Soluzione
Guardando il codice per heatmap.2
Sono abbastanza sicuro che il default è quello di utilizzare dist
, ed è di default è a sua volta di utilizzare distanze euclidee.
Il motivo per il vostro tentativo di passare distfun = dist(method = 'euclidean')
non ha lavoro è che distfun
(e hclustfun
) dovrebbero essere semplicemente nome di funzioni. Quindi, se si vuole default alter e passare gli argomenti è necessario scrivere una funzione wrapper in questo modo:
heatmap.2(...,hclustfun = function(x) hclust(x,method = 'centroid'),...)
Come ho già detto, io sono abbastanza certo che heatmap.2
sta usando distanze euclidee per impostazione predefinita, ma una soluzione simile può essere utilizzato per modificare la funzione di distanza utilizzata:
heatmap.2(...,distfun = function(x) dist(x,method = 'euclidean'),...)