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