El siguiente conjunto de datos contiene estadísticas sobre arrestos en los Estados Unidos. Para fines ilustrativos vamos a utilizar las primeras filas de los datos en los ejemplos siguientes.
df <- USArrests[1:20, ]
Para crear un dendrograma en R primero necesitas calcular las matrices de distancias de tus datos con la función dist y luego el clúster jerárquico de la matriz de distancias con hclust para finalmente crear el dendrograma.
Opción 1
Crea el objeto del clúster jerárquico y dibújalo con la función plot.
# Matriz de distancias
d <- dist(df)
# Clúster jerárquico
hc <- hclust(d)
# Dendrograma
plot(hc)

Opción 2
Transforma el clúster jerárquico en clase “dendrogram” con as.dendrogram. Esto creará una visualización más bonita.
# Matriz de distancias
d <- dist(df)
# Clúster jerárquico
hc <- hclust(d)
# Dendrograma
plot(as.dendrogram(hc))
# La línea anterior es similar a:
# plot(hc, hang = -1)

La función dist calcula la matriz de distancias basándose en la distancia euclídea, pero hay otras medidas de distancia disponibles, tales como "maximum", "manhattan", "canberra", "binary" o "minkowski". Elige la que mejor se ajuste a tus datos.
Además de las distancias de medida existen varios métodos de clúster jerárquico que puedes elegir. El método por defecto es "complete", pero también puedes especificar "ward.D", "ward.D2", "single", "average", "mcquitty", "median" o "centroid". Escribe ?hclust para obtener detalles adicionales sobre cada método y otros argumentos.
En los ejemplos a continuación puedes ver la diferencia utilizando cada método.

ward.D
# Matriz de distancias
d <- dist(df)
# Clúster jerárquico
hc <- hclust(d, method = "ward.D")
# Dendrograma
plot(as.dendrogram(hc), main = "ward.D")

ward.D2
# Matriz de distancias
d <- dist(df)
# Clúster jerárquico
hc <- hclust(d, method = "ward.D2")
# Dendrograma
plot(as.dendrogram(hc), main = "ward.D2")

single
# Matriz de distancias
d <- dist(df)
# Clúster jerárquico
hc <- hclust(d, method = "single")
# Dendrograma
plot(as.dendrogram(hc), main = "single")

average
# Matriz de distancias
d <- dist(df)
# Clúster jerárquico
hc <- hclust(d, method = "average")
# Dendrograma
plot(as.dendrogram(hc), main = "average")

mcquitty
# Matriz de distancias
d <- dist(df)
# Clúster jerárquico
hc <- hclust(d, method = "mcquitty")
# Dendrograma
plot(as.dendrogram(hc), main = "mcquitty")

median
# Matriz de distancias
d <- dist(df)
# Clúster jerárquico
hc <- hclust(d, method = "median")
# Dendrograma
plot(as.dendrogram(hc), main = "median")

centroid
# Matriz de distancias
d <- dist(df)
# Clúster jerárquico
hc <- hclust(d, method = "centroid")
# Dendrograma
plot(as.dendrogram(hc), main = "centroid")
Estableciendo el número de grupos
La función rect.hclust permite agregar rectángulos para indicar los grupos del dendrograma. Puedes seleccionar el número de grupos a ser mostrados con el argumento k.
# Matriz de distancias
d <- dist(df)
# Clúster jerárquico
hc <- hclust(d)
# Dendrograma con 3 grupos
plot(as.dendrogram(hc))
rect.hclust(hc, k = 3)

Ten en cuenta que puedes resaltar solo algunos rectángulos en base al número de grupos. En este ejemplo estamos añadiendo solo el primer y el tercer rectángulo.
# Matriz de distancias
d <- dist(df)
# Clúster jerárquico
hc <- hclust(d)
# 3 clusters, dos rectángulos
plot(as.dendrogram(hc))
rect.hclust(hc, k = 3,
which = c(1, 3))

Clústers basados en la altura
También puedes crear grupos en base a la altura con el argumento h. En este ejemplo establecimos h = 150, por lo que se formarán dos grupos.
# Matriz de distancias
d <- dist(df)
# Clúster jerárquico
hc <- hclust(d)
# Grupos del dendrograma en base a la altura
plot(as.dendrogram(hc))
rect.hclust(hc, h = 150)

Color de los rectángulos
El color de cada rectángulo se puede personalizar con el argumento border. Puedes establecer un color o tantos colores como rectángulos.
# Matriz de distancias
d <- dist(df)
# Clúster jerárquico
hc <- hclust(d)
# Colores
plot(as.dendrogram(hc))
rect.hclust(hc, k = 2,
border = 3:4)

También te puede interesar