A23-Análisis de Clúster
UNIVERSIDAD DE EL SALVADOR
FACULTAD DE CIENCIAS ECONÓMICAS
ESCUELA DE ECONOMÍA
CICLO II-2024
Asignatura:
Métodos para el Análisis Económico
Docente:
Carlos Ademir Pérez Alas.
Tema:
Análisis de Clúster (Conglomerados)
Grupo:
2
Integrantes:
Márquez Arévalo, Iris Leonor. MA15003 .
Menjivar Guillen, Carlos Fernando. MG20035.
Santos Guzman, Orlando Rigoberto SG18058.
Ciudad Universitaria, 24 de noviembre de 2024.
1. Explique en qué consiste el análisis de conglomerados.
El análisis de conglomerados, también conocido como análisis de clúster, es una técnica que permite agrupar observaciones en diferentes categorías o grupos. Estos grupos, denominados clústeres o conglomerados, se caracterizan por su homogeneidad en relación con las variables que los definen, lo que significa que las observaciones dentro de cada grupo son similares entre sí. Además, una propiedad clave de este análisis es que los diferentes grupos deben ser lo más heterogéneos posible entre sí, en función de las variables consideradas.
El análisis de clúster es un método descriptivo, no inferencial y sin fundamentos estadísticos para realizar inferencias sobre una población a partir de una muestra. Este método se basa en criterios geométricos y se emplea principalmente como una técnica exploratoria y descriptiva, pero no explicativa. Las soluciones obtenidas no son únicas, ya que la asignación de observaciones a un conglomerado depende de diversos factores relacionados con el procedimiento elegido. Asimismo, los resultados del análisis son sensibles a las variables utilizadas: la inclusión o exclusión de variables relevantes puede modificar significativamente los resultados obtenidos.
Pasos en el análisis de clúster:
Contar con datos de 𝑛 casos y k variables
Determinar un indicador que permita evaluar la similitud o distancia entre pares de observaciones.
Agrupar las observaciones con base en la medida de similitud o distancia seleccionada. Existen diferentes tipos de agrupamientos y métodos de clasificación.
Analizar y comparar los grupos resultantes.
Validar los resultados del análisis.
2. Elabore un cuadro comparativo.
|
Análisis de clúster |
Técnicas disponibles
|
Ventajas |
Desventajas
|
|
Jerárquico
Técnica utilizada para agrupar un conjunto de objetos basados en características similares, generando una diferencia de importancia entre ellas, que permite que se genere una jerarquía. |
Enlace promedio Método Ward |
Utilizan métodos de distancia (euclidiana o manhattan),
que permiten una explicación de grupo, más detallada. |
No hay corrección de pasos.
Los métodos tienden a ser más complejos, por lo tanto son métodos más lentos. |
|
No Jerárquico
Técnica utilizada para agrupar un conjunto de objetos basados en características similares. |
CLARA C-means Gaussian Mixture Models (GMM) Expectation-Maximization
|
Los clústeres que se generan son independientes entre sí.
k means es uno de los métodos más rápidos.
La distribución de datos no está estandarizada,
permitiendo su aplicación en múltiples bases de datos.
|
Requiere la predeterminación del número de clústeres
con anticipación. Es sensible a los valores atípicos, debido al tipo de datos que se utilizan.
Si bien es más útil para datos grandes, debe especificarse el contexto porque su efectividad depende siempre del tipo de datos. |
Fuente: elaboración propia con base en: Kassambara, A. (2017). Obtenido de Practical Guide To Cluster Analysis in R. Unsupervised Machine Learning.
3. Describa las técnicas disponibles para realizar el análisis de clúster, tanto jerárquicas como no jerárquicas, presentadas en el cuadro anterior, incluya una explicación de la librería y sintaxis para implementarla en R.
Métodos jerárquicos.
Enlace simple: Este enfoque tiende a crear clústeres en forma de cadena, ya que puede unir clústeres que están conectados a través de un solo punto cercano, lo que puede resultar en una estructura menos compacta en comparación con otros métodos como el enlace completo. En R: Utiliza la función dist() para calcular la matriz de distancias entre los puntos de datos, luego hclust(), luego plot() para visualizar el dendograma.
Enlace completo: En este método, la distancia entre dos clústeres se define como la distancia más larga entre cualquier par de puntos, uno de cada clúster.es una técnica robusta para realizar análisis de clúster jerárquico en R, proporcionando clústeres más compactos y menos influenciados por valores atípicos. Para aplicar el método: Usa la función hclust() con el argumento method = “complete” para realizar el agrupamiento jerárquico. y luego igual que el método de enlace simple.
Enlace aglomerativo: Conocido también por AGNES, (por sus siglas en inglés), que se utiliza para agrupar objetos en clústeres basándose en su similitud. Los datos deben ser una matriz numérica con:filas y columnas. Para utilizar en R, se debe cargar la data, estandarizar los datos, luego se aplica: la función dist(), y dada una matriz de distancias ‘res.dist’ generada por la función dist(), la función base de R hclust() puede ser utilizada para crear el árbol jerárquico. El paquete de R cluster facilita la realización de análisis de clúster en R. Proporciona las funciones agnes() y diana() para calcular el agrupamiento aglomerativo y el agrupamiento divisivo, respectivamente.
Métodos no jerárquicos.
CLARA: CLARA (Clustering Large Applications, Kaufman and Rousseeuw (1990)) is an extension to k-medoids methods. Repite los procesos de muestreo y agrupamiento un número pre especificado de veces para minimizar el sesgo de muestreo. Los resultados finales del agrupamiento corresponden al conjunto de medoids con el costo mínimo. Para lograr un resultado reproducible, comenzamos por la función set.seed(). La función clara() puede ser utilizada para calcular CLARA, se requiere de las funciones: clúster y factor extra.
K-medoides: El término medoid se refiere a un objeto dentro de un clúster para el cual la disimilitud promedio entre él y todos los demás miembros del clúster es mínima. Corresponde al punto más central en el clúster. El algoritmo k-medoides requiere que el usuario especifique 𝑘, el número de clústeres que se generarán. El método de agrupamiento que se utiliza en R, es PAM, se utiliza: el conjunto de datos de demostración ‘USArrests’, que comenzamos escalando, utilizando la función de R scale(). La función pam() [paquete cluster] y pamk() [paquete fpc] pueden ser utilizadas para calcular PAM.
K-means: puede ser utilizado para clasificar observaciones en k grupos, basándose en su similitud. La función de R kmeans() [paquete stats] puede ser utilizada para calcular el algoritmo k-means. El formato simplificado es kmeans(x, centers), donde “x” son los datos y centers es el número de clústeres que se producirán.
C-means: El algoritmo de c-means difuso (FCM) es uno de los algoritmos de agrupamiento difuso más utilizados. El centroide de un clúster se calcula como la media de todos los puntos, ponderada por su grado de pertenencia al clúster. En R: La función fanny() proveniente del paquete cluster puede ser utilizada para calcular agrupamiento difuso. FANNY significa fuzzy analysis clustering.
4. Del texto: Kassambara, A. (2017). Desarrolle los ejemplos presentados en los capítulos: 4,5,6,7,8,9.
Capítulo 4
Datos
# Datos utilizados y su respectica descripción en el capítulo 2
data("USArrests")
df <- scale(USArrests)
head(df, n = 3)## Murder Assault UrbanPop Rape
## Alabama 1.24256408 0.7828393 -0.5209066 -0.003416473
## Alaska 0.50786248 1.1068225 -1.2117642 2.484202941
## Arizona 0.07163341 1.4788032 0.9989801 1.042878388
# A través de la función fviz, obtenemos una vizualización práctica de cuanto es el número de conglomerados óptimos
library(factoextra)
fviz_nbclust(df, kmeans, method = "wss") +
geom_vline(xintercept = 4, linetype = 2)
Como se observa en el resultado el número óptimo de conglomerados para
este ejercicio es de 4 Clúster
Cálculo de agrupación K-meanas
## K-means clustering with 4 clusters of sizes 8, 13, 16, 13
##
## Cluster means:
## Murder Assault UrbanPop Rape
## 1 1.4118898 0.8743346 -0.8145211 0.01927104
## 2 -0.9615407 -1.1066010 -0.9301069 -0.96676331
## 3 -0.4894375 -0.3826001 0.5758298 -0.26165379
## 4 0.6950701 1.0394414 0.7226370 1.27693964
##
## Clustering vector:
## Alabama Alaska Arizona Arkansas California
## 1 4 4 1 4
## Colorado Connecticut Delaware Florida Georgia
## 4 3 3 4 1
## Hawaii Idaho Illinois Indiana Iowa
## 3 2 4 3 2
## Kansas Kentucky Louisiana Maine Maryland
## 3 2 1 2 4
## Massachusetts Michigan Minnesota Mississippi Missouri
## 3 4 2 1 4
## Montana Nebraska Nevada New Hampshire New Jersey
## 2 2 4 2 3
## New Mexico New York North Carolina North Dakota Ohio
## 4 4 1 2 3
## Oklahoma Oregon Pennsylvania Rhode Island South Carolina
## 3 3 3 3 1
## South Dakota Tennessee Texas Utah Vermont
## 2 1 4 3 2
## Virginia Washington West Virginia Wisconsin Wyoming
## 3 3 2 2 3
##
## Within cluster sum of squares by cluster:
## [1] 8.316061 11.952463 16.212213 19.922437
## (between_SS / total_SS = 71.2 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
# Cálculo con nstar como recomendación
set.seed(123)
km.res <- kmeans(df, 4, nstart = 50)
print(km.res)## K-means clustering with 4 clusters of sizes 8, 13, 16, 13
##
## Cluster means:
## Murder Assault UrbanPop Rape
## 1 1.4118898 0.8743346 -0.8145211 0.01927104
## 2 -0.9615407 -1.1066010 -0.9301069 -0.96676331
## 3 -0.4894375 -0.3826001 0.5758298 -0.26165379
## 4 0.6950701 1.0394414 0.7226370 1.27693964
##
## Clustering vector:
## Alabama Alaska Arizona Arkansas California
## 1 4 4 1 4
## Colorado Connecticut Delaware Florida Georgia
## 4 3 3 4 1
## Hawaii Idaho Illinois Indiana Iowa
## 3 2 4 3 2
## Kansas Kentucky Louisiana Maine Maryland
## 3 2 1 2 4
## Massachusetts Michigan Minnesota Mississippi Missouri
## 3 4 2 1 4
## Montana Nebraska Nevada New Hampshire New Jersey
## 2 2 4 2 3
## New Mexico New York North Carolina North Dakota Ohio
## 4 4 1 2 3
## Oklahoma Oregon Pennsylvania Rhode Island South Carolina
## 3 3 3 3 1
## South Dakota Tennessee Texas Utah Vermont
## 2 1 4 3 2
## Virginia Washington West Virginia Wisconsin Wyoming
## 3 3 2 2 3
##
## Within cluster sum of squares by cluster:
## [1] 8.316061 11.952463 16.212213 19.922437
## (between_SS / total_SS = 71.2 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
Ahora usando los datos originales
## cluster Murder Assault UrbanPop Rape
## 1 1 13.93750 243.62500 53.75000 21.41250
## 2 2 3.60000 78.53846 52.07692 12.17692
## 3 3 5.65625 138.87500 73.87500 18.78125
## 4 4 10.81538 257.38462 76.00000 33.19231
## Murder Assault UrbanPop Rape cluster
## Alabama 13.2 236 58 21.2 1
## Alaska 10.0 263 48 44.5 4
## Arizona 8.1 294 80 31.0 4
## Arkansas 8.8 190 50 19.5 1
## California 9.0 276 91 40.6 4
## Colorado 7.9 204 78 38.7 4
Acceso a los resultados de la funcióm k-means
## cluster Murder Assault UrbanPop Rape
## 1 1 13.93750 243.62500 53.75000 21.41250
## 2 2 3.60000 78.53846 52.07692 12.17692
## 3 3 5.65625 138.87500 73.87500 18.78125
## 4 4 10.81538 257.38462 76.00000 33.19231
## Alabama Alaska Arizona Arkansas California
## 1 4 4 1 4
## Colorado Connecticut Delaware Florida Georgia
## 4 3 3 4 1
## Hawaii Idaho Illinois Indiana Iowa
## 3 2 4 3 2
## Kansas Kentucky Louisiana Maine Maryland
## 3 2 1 2 4
## Massachusetts Michigan Minnesota Mississippi Missouri
## 3 4 2 1 4
## Montana Nebraska Nevada New Hampshire New Jersey
## 2 2 4 2 3
## New Mexico New York North Carolina North Dakota Ohio
## 4 4 1 2 3
## Oklahoma Oregon Pennsylvania Rhode Island South Carolina
## 3 3 3 3 1
## South Dakota Tennessee Texas Utah Vermont
## 2 1 4 3 2
## Virginia Washington West Virginia Wisconsin Wyoming
## 3 3 2 2 3
## Alabama Alaska Arizona Arkansas
## 1 4 4 1
## [1] 8 13 16 13
## Murder Assault UrbanPop Rape
## 1 1.4118898 0.8743346 -0.8145211 0.01927104
## 2 -0.9615407 -1.1066010 -0.9301069 -0.96676331
## 3 -0.4894375 -0.3826001 0.5758298 -0.26165379
## 4 0.6950701 1.0394414 0.7226370 1.27693964
Visualización de los clústers K-means
fviz_cluster(km.res, data = df,
palette = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
ellipse.type = "euclid",
star.plot = TRUE,
repel = TRUE,
ggtheme = theme_minimal()
)
4.4 Ventajas y desventajas de la agrupación K-means Un medio análisis de
las ventajas y desventajas del uso de la función k-means
Ejercicio 5
Paquete PAM
## Murder Assault UrbanPop Rape
## Alabama 1.24256408 0.7828393 -0.5209066 -0.003416473
## Alaska 0.50786248 1.1068225 -1.2117642 2.484202941
## Arizona 0.07163341 1.4788032 0.9989801 1.042878388
Estimación del número óptimo de clusters (usando PAM)
## Warning: package 'cluster' was built under R version 4.4.2
Agrupación de clústers
## Medoids:
## ID Murder Assault UrbanPop Rape
## New Mexico 31 0.8292944 1.3708088 0.3081225 1.1603196
## Nebraska 27 -0.8008247 -0.8250772 -0.2445636 -0.5052109
## Clustering vector:
## Alabama Alaska Arizona Arkansas California
## 1 1 1 2 1
## Colorado Connecticut Delaware Florida Georgia
## 1 2 2 1 1
## Hawaii Idaho Illinois Indiana Iowa
## 2 2 1 2 2
## Kansas Kentucky Louisiana Maine Maryland
## 2 2 1 2 1
## Massachusetts Michigan Minnesota Mississippi Missouri
## 2 1 2 1 1
## Montana Nebraska Nevada New Hampshire New Jersey
## 2 2 1 2 2
## New Mexico New York North Carolina North Dakota Ohio
## 1 1 1 2 2
## Oklahoma Oregon Pennsylvania Rhode Island South Carolina
## 2 2 2 2 1
## South Dakota Tennessee Texas Utah Vermont
## 2 1 1 2 2
## Virginia Washington West Virginia Wisconsin Wyoming
## 2 2 2 2 2
## Objective function:
## build swap
## 1.441358 1.368969
##
## Available components:
## [1] "medoids" "id.med" "clustering" "objective" "isolation"
## [6] "clusinfo" "silinfo" "diss" "call" "data"
Ahora usando los datos originales
## Murder Assault UrbanPop Rape cluster
## Alabama 13.2 236 58 21.2 1
## Alaska 10.0 263 48 44.5 1
## Arizona 8.1 294 80 31.0 1
## Murder Assault UrbanPop Rape
## New Mexico 0.8292944 1.3708088 0.3081225 1.1603196
## Nebraska -0.8008247 -0.8250772 -0.2445636 -0.5052109
## Alabama Alaska Arizona Arkansas California Colorado
## 1 1 1 2 1 1
Visualización de clúster en paquete PAM
fviz_cluster(pam.res,
palette = c("#00AFBB", "#FC4E07"),
ellipse.type = "t",
repel = TRUE,
ggtheme = theme_classic()
)Capitulo 6
CLARA
set.seed(1234)
# 500 datos
df <- rbind(cbind(rnorm(200,0,8), rnorm(200,0,8)),
cbind(rnorm(300,50,8), rnorm(300,50,8)))
colnames(df) <- c("x", "y")
rownames(df) <- paste0("S", 1:nrow(df))
# Previewing the data
head(df, nrow = 6)## x y
## S1 -9.656526 3.881815
## S2 2.219434 5.574150
## S3 8.675529 1.484111
## S4 -18.765582 5.605868
## S5 3.432998 2.493448
## S6 4.048447 6.083699
library(cluster)
library(factoextra)
fviz_nbclust(df, clara, method = "silhouette")+
theme_classic()## Call: clara(x = df, k = 2, samples = 50, pamLike = TRUE)
## Medoids:
## x y
## S121 -1.531137 1.145057
## S455 48.357304 50.233499
## Objective function: 9.87862
## Clustering vector: Named int [1:500] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
## - attr(*, "names")= chr [1:500] "S1" "S2" "S3" "S4" "S5" "S6" "S7" ...
## Cluster sizes: 200 300
## Best sample:
## [1] S37 S49 S54 S63 S68 S71 S76 S80 S82 S101 S103 S108 S109 S118 S121
## [16] S128 S132 S138 S144 S162 S203 S210 S216 S231 S234 S249 S260 S261 S286 S299
## [31] S304 S305 S312 S315 S322 S350 S403 S450 S454 S455 S456 S465 S488 S497
##
## Available components:
## [1] "sample" "medoids" "i.med" "clustering" "objective"
## [6] "clusinfo" "diss" "call" "silinfo" "data"
## x y cluster
## S1 -9.656526 3.881815 1
## S2 2.219434 5.574150 1
## S3 8.675529 1.484111 1
## S4 -18.765582 5.605868 1
## x y
## S121 -1.531137 1.145057
## S455 48.357304 50.233499
## S1 S2 S3 S4 S5 S6 S7 S8 S9 S10
## 1 1 1 1 1 1 1 1 1 1
Visualización de los cluster con el paquete clara
fviz_cluster(clara.res,
palette = c("#00AFBB", "#FC4E07"),
ellipse.type = "t",
geom = "point", pointsize = 1,
ggtheme = theme_classic()
)Ejercicio 7
clúster aglomerativo
## Murder Assault UrbanPop Rape
## Alabama 1.24256408 0.7828393 -0.5209066 -0.003416473
## Alaska 0.50786248 1.1068225 -1.2117642 2.484202941
## Arizona 0.07163341 1.4788032 0.9989801 1.042878388
## Arkansas 0.23234938 0.2308680 -1.0735927 -0.184916602
## California 0.27826823 1.2628144 1.7589234 2.067820292
## Colorado 0.02571456 0.3988593 0.8608085 1.864967207
## Alabama Alaska Arizona Arkansas California Colorado
## Alabama 0.000000 2.703754 2.293520 1.289810 3.263110 2.651067
## Alaska 2.703754 0.000000 2.700643 2.826039 3.012541 2.326519
## Arizona 2.293520 2.700643 0.000000 2.717758 1.310484 1.365031
## Arkansas 1.289810 2.826039 2.717758 0.000000 3.763641 2.831051
## California 3.263110 3.012541 1.310484 3.763641 0.000000 1.287619
## Colorado 2.651067 2.326519 1.365031 2.831051 1.287619 0.000000
Dendograma
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## ℹ The deprecated feature was likely used in the factoextra package.
## Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## [1] 0.6975266
## [1] 0.7180382
## Alabama Alaska Arizona Arkansas
## 1 2 2 3
## grp
## 1 2 3 4
## 7 12 19 12
## [1] "Alabama" "Georgia" "Louisiana" "Mississippi"
## [5] "North Carolina" "South Carolina" "Tennessee"
# Resalatar los 4 grupos
fviz_dend(res.hc, k = 4, # cortar los 4 grupos
cex = 0.5, # tamaño de etiqueta
k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
color_labels_by_k = TRUE, # color labels by groups
rect = TRUE # Add rectangle around groups
)fviz_cluster(list(data = df, cluster = grp),
palette = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
ellipse.type = "convex", # Concentración ellipse
repel = TRUE,
show.clust.cent = FALSE, ggtheme = theme_minimal())library("cluster")
# Agrupamiento jerárquico
res.agnes <- agnes(x = USArrests, # Matriz de datos
stand = TRUE, # Standarización de datos
metric = "euclidean", # Distancía métrica de datos
method = "ward" # Método de vinculació
)
# Agrupamienrto de análisis
res.diana <- diana(x = USArrests, # Matriz de datos
stand = TRUE, # Estandarización de datos
metric = "euclidean" # Distancía métrica de datos
)Ejercicio 8
Comparación de dendogramas
library(dendextend)
# Calcular matriz de distancias
res.dist <- dist(df, method = "euclidean")
# Cálculo de 2 agrupaciones jerárquicas
hc1 <- hclust(res.dist, method = "average")
hc2 <- hclust(res.dist, method = "ward.D2")
# Creación de dos dendrogramas
dend1 <- as.dendrogram (hc1)
dend2 <- as.dendrogram (hc2)
# Crear una lista para contener dendrogramas
dend_list <- dendlist(dend1, dend2)Visualizació de demdograma
tanglegram(dend1, dend2,
highlight_distinct_edges = FALSE, # Desactivar líneas discontinuas
common_subtrees_color_lines = FALSE,
common_subtrees_color_branches = TRUE,
main = paste("entanglement =", round(entanglement(dend_list), 2))
)## [,1] [,2]
## [1,] 1.0000000 0.9925544
## [2,] 0.9925544 1.0000000
## [,1] [,2]
## [1,] 1.0000000 0.9895528
## [2,] 0.9895528 1.0000000
## [1] 0.9925544
## [1] 0.9895528
# comparación de dendogramas
# Creación de varios dendrogramas mediante el encadenamiento
dend1 <- df %>% dist %>% hclust("complete") %>% as.dendrogram
dend2 <- df %>% dist %>% hclust("single") %>% as.dendrogram
dend3 <- df %>% dist %>% hclust("average") %>% as.dendrogram
dend4 <- df %>% dist %>% hclust("centroid") %>% as.dendrogram
# Compute correlation matrix
dend_list <- dendlist("Complete" = dend1, "Single" = dend2,
"Average" = dend3, "Centroid" = dend4)
cors <- cor.dendlist(dend_list)
# Print correlation matrix
round(cors, 2)## Complete Single Average Centroid
## Complete 1.00 0.46 0.45 0.30
## Single 0.46 1.00 0.23 0.17
## Average 0.45 0.23 1.00 0.31
## Centroid 0.30 0.17 0.31 1.00
## corrplot 0.95 loaded
Ejercicio 9
visualización de dendograma
# Datos
data(USArrests)
# Calcular distancias y agrupación jerárquica
dd <- dist(scale(USArrests), method = "euclidean")
hc <- hclust(dd, method = "ward.D2")fviz_dend(hc, cex = 0.5,
main = "Dendrogram - ward.D2",
xlab = "Objects", ylab = "Distance", sub = "")fviz_dend(hc, cex = 0.5,
main = "Dendrogram - ward.D2",
xlab = "Objects", ylab = "Distance", sub = "")# Datos de ejemplo
data <- USArrests
dist_matrix <- dist(scale(data)) # Matriz de distancias
hc <- hclust(dist_matrix, method = "ward.D2") # Clustering jerárquico
fviz_dend(hc,
k = 4, # Cortar en 4 grupos
cex = 0.5, # Tamaño de etiquetas
rect = TRUE, # Añadir rectángulos
rect_fill = TRUE, # Rellenar rectángulos
k_colors = "jco" # Usa una paleta predefinida
)fviz_dend(hc,
k = 4, # Cortar en 4 grupos
cex = 0.5, # Tamaño de etiquetas
rect = TRUE, # Añadir rectángulos
rect_fill = TRUE, # Rellenar rectángulos
k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07") # Colores personalizados
)fviz_dend(hc, k = 4, # Cut in four groups
cex = 0.5, # label size
k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
color_labels_by_k = TRUE, # color labels by groups
ggtheme = theme_gray() # Change theme
)fviz_dend(hc, k = 4, cex = 0.4, horiz = TRUE, k_colors = "jco",
rect = TRUE, rect_border = "jco", rect_fill = TRUE)require("igraph")
fviz_dend(hc, k = 4, # Cut in four groups
k_colors = "jco",
type = "phylogenic", repel = TRUE,
phylo_layout = "layout.gem")# Create a plot of the whole dendrogram,
# and extract the dendrogram data
dend_plot <- fviz_dend(hc, k = 4, # Cut in four groups
cex = 0.5, # label size
k_colors = "jco"
)
dend_data <- attr(dend_plot, "dendrogram") # Extract dendrogram data
# Cut the dendrogram at height h = 10
dend_cuts <- cut(dend_data, h = 10)
# Visualize the truncated version containing
# two branches
fviz_dend(dend_cuts$upper)## Warning in min(-diff(our_dend_heights)): ningún argumento finito para min;
## retornando Inf
pdf("dendrogram.pdf", width=30, height=15) # Open a PDF
p <- fviz_dend(hc, k = 4, cex = 1, k_colors = "jco" )
print(p)
dev.off()## png
## 2
data <- scale(USArrests)
dist.res <- dist(data)
hc <- hclust(dist.res, method = "ward.D2")
dend <- as.dendrogram(hc)
plot(dend)library(dendextend)
dend <- USArrests[1:5,] %>%
scale %>%
dist %>%
hclust(method = "ward.D2") %>%
as.dendrogram
plot(dend)library(dendextend)
# 1. Create a customized dendrogram
mycols <- c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07")
dend <- as.dendrogram(hc) %>%
set("branches_lwd", 1) %>% # Branches line width
set("branches_k_color", mycols, k = 4) %>% # Color branches by groups
set("labels_colors", mycols, k = 4) %>% # Color labels by groups
set("labels_cex", 0.5) # Change label size
# 2. Create plot
fviz_dend(dend)