Dendrograma en R con la función hclust

Conjunto de datos de muestra

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, ]

Dendrograma básico

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)

Dendrograma en R

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)

Agrupamiento jerárquico a través de un dendrograma en R

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.

Métodos de agrupamiento clúster

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.

Función hclust en R

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")

Dendrograma clúster en R

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")

Método de agrupamiento en R

single

# Matriz de distancias
d <- dist(df)

# Clúster jerárquico
hc <- hclust(d, method = "single")

# Dendrograma
plot(as.dendrogram(hc), main = "single")

Dibujar hclust en R

average

# Matriz de distancias
d <- dist(df)

# Clúster jerárquico
hc <- hclust(d, method = "average")

# Dendrograma
plot(as.dendrogram(hc), main = "average")

Dibujar dendrograma en R

mcquitty

# Matriz de distancias
d <- dist(df)

# Clúster jerárquico
hc <- hclust(d, method = "mcquitty")

# Dendrograma
plot(as.dendrogram(hc), main = "mcquitty")

Métodos hclust

median

# Matriz de distancias
d <- dist(df)

# Clúster jerárquico
hc <- hclust(d, method = "median")

# Dendrograma
plot(as.dendrogram(hc), main = "median")

hclust método centroid

centroid

# Matriz de distancias
d <- dist(df)

# Clúster jerárquico
hc <- hclust(d, method = "centroid")

# Dendrograma
plot(as.dendrogram(hc), main = "centroid")

Añadiendo rectángulos sobre los clústers jerárquicos

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)

Grupos con rect.hclust en R

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))

Agregando rectángulos a los clústers en R

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)

Clustering basedo en la altura

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)

Personalización del color de los grupos en R

Better Data Visualizations

A Guide for Scholars, Researchers, and Wonks

Comprar en Amazon
ggplot2

Elegant Graphics for Data Analysis

Comprar en Amazon
Fundamentals of Data Visualization

A Primer on Making Informative and Compelling Figures

Comprar en Amazon
Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon

También te puede interesar