Estoy intentando realizar un análisis de cluster jerárquico aglomerativo en R.
Sin embargo, cuando utilizo determinados métodos de agrupación, obtengo inversiones (ramificaciones hacia arriba) en el árbol resultante, lo que viola la propiedad ultramétrica.
Los dos métodos son: UPGMC y WPGMC (methods="median" y "centroid" en hclust
). Legendre & Legendre en su libro Numerical Ecology sugieren algunas razones por las que esto puede ocurrir (Sección 8.6). Sin embargo, no proporcionan ninguna solución para rectificar el problema y convertir los árboles en ultramétricos.
Tengo curiosidad: ¿es esto una consecuencia inevitable de los datos y del método de agrupación, o hay alguna forma de producir un árbol que satisfaga la propiedad ultramétrica utilizando estos dos métodos?
Aquí hay un conjunto de datos de ejemplo y un código R para jugar:
#Generate data frame with mixed continuous and categorical trait data for 10 species
set.seed(91)
(df=data.frame(trait1=runif(10,0,10),trait2=runif(10,0,10),
trait3=sample(letters[1:3],10,replace=T),row.names=paste("sp",1:10,sep="")))
#Generate Gower dissimilarity matrix from trait data
library(cluster)
(dist.gower=daisy(df,metric="gower"))
#Create a vector of clustering methods
tree.methods=c("ward","single","complete","average","mcquitty","median","centroid")
#Build the trees using each method
trees=lapply(tree.methods,function(i) hclust(dist.gower,method=i))
#Plot the trees
par(mfrow=c(4,2))
for(i in 1:length(trees)) {plot(trees[[i]])}
#The last two trees have reversals...cannot be converted to ultrametric!