Universidad de San Carlos de Guatemala
Use R!
Libro Texto
Kassambara, A. (2017). Practical Guide to Cluster Analysis in R: Unsupervised Machine Learning (Multivariate Analysis) (1st ed.)
Descripción de los datos
Este conjunto de datos contiene estadísticas sobre arrestos por agresión, asesinato y violación por cada 100 000 habitantes en cada uno de los 50 estados de EE. UU. También se indica el porcentaje de la población que vive en zonas urbanas.
# Extensión en .csv texto separado por espacios
= read.csv("Datos_V1.csv",sep=";",
violacion header = TRUE)
# Leyendo las seis primeras líneas
dim(violacion)
## [1] 50 5
# Reemplace el nombre de la primera columna con una string vacía
colnames(violacion)[1] <- ""
head(violacion)
## Asesinato Asalto PopUrbano Violacion
## 1 Alabama 13.2 236 58 21.2
## 2 Alaska 10.0 263 48 44.5
## 3 Arizona 8.1 294 80 31.0
## 4 Arkansas 8.8 190 50 19.5
## 5 California 9.0 276 91 40.6
## 6 Colorado 7.9 204 78 38.7
Introducción
- Explique en que consiste el análisis de conglomerados
El análisis clústers(AC), es un método estándar del análisis multivariado que puede reducir una compleja cantidad de información en pequeños grupos o clústers, donde los miembros de cada uno de ellos comparten características similares. El AC se considera una técnica eminentemente exploratoria que no utiliza ningún tipo de modelo estadístico para llevar a cabo el proceso de clasificación y, por ello, se le podría calificar como una técnica de aprendizaje no supervisado, es decir, una técnica muy adecuada para extraer información de un conjunto de datos sin imponer restricciones previas en forma de modelos estadísticos.
El AC tiene por objeto formar grupos o clústers homogéneos en función de las similitudes o similaridades entre ellos. Los grupos se forman de tal manera que cada objeto es parecido a los que hay dentro del clúster con respecto a algún criterio de selección predeterminado). Las técnicas de agrupamiento en el AC se pueden clasificar en dos categorías: el clúster jerárquico y el no jerárquico.(Heredia, Escobar, and Dı́az 2012, pág. 4)
Es uno de los métodos de minería de datos importantes para descubrir conocimientos en datos multidimensionales. En la literatura, se lo denomina “reconocimiento de patrones” o “máquina no supervisada de aprendizaje”; “sin supervisión” porque no se guía por ideas a priori de las cuales las variables o muestras pertenecen a qué conglomerados. “Aprendiendo” porque en la máquina el algoritmo “aprende” cómo agruparse, es imortante mencionar que el análisis de conglomerados es popular en muchos campos, que incluyen: medicina, marketing y urbanismo, etc. (Kassambara 2017, pág. 3)
Dentro del métodos de análisis de clúster están:
Método Jerárquico:
El método de agrupamiento Jerárquico o análisis de agrupamiento Jerárquico, es una alternativa del método de la agrupación No jerárquico, a diferencia de esta la agrupación Jerárquica no requieren Pre especificar el número de clústeres que se producirán.
La agrupación jerárquica se puede subdividir en dos tipos:
Agrupación aglomerativa en la que, cada observación se considera inicialmente como un racimo propio (hoja). Luego, los clústeres más similares se fusionan sucesivamente hasta que haya un solo gran clúster (raíz), esta agrupación es conocida como Dendrograma.
La agrupación en clústeres dividida, una inversión de la agrupación aglomerativa, comienza con la raíz, en que todos los objetos están incluidos en un grupo. Entonces el más heterogéneo los conglomerados se dividen sucesivamente hasta que todas las observaciones están en su propio conglomerado. (Kassambara 2017, pág. 65)
Método No Jerárquico:
Los métodos no jerárquicos o también conocidos como agrupación en clústeres de particiones son métodos de agrupación que se utilizan para clasificar observaciones, dentro de un conjunto de datos, en varios grupos en función de su similitud. Los algoritmos requieren analista para especificar el número de conglomerados que se generarán.
La agrupación en clústeres No jerárquico de uso común incluye:
Agrupación de K-medias, en este método cada agrupación está representada por el centro o por medio de los puntos de datos pertenecientes al clúster. El método de las K-medias es sensible a puntos de datos anómalos y valores atípicos.
Agrupación de K-medoides o Partición alrededor de medoides, con sus siglas en ingles (PAM), en el que cada grupo está representado por uno de los objetos en el racimo. PAM es menos sensible a valores atípicos en comparación con el método de k-medias.
Algoritmo de Agrupación de aplicaciones grandes con sus siglas en ingles CLARA, es una extensión del método Partición alrededor de medoides (PAM), adaptado para grandes conjuntos de datos.(Kassambara 2017, pág. 35).
Las técnicas utilizadas para realizar el análisis de clúster atinentes al cuadro anterior son:
Método Jerárquico
Este método es alternativa del método de la agrupación No jerárquico, a diferencia de esta la agrupación Jerárquica no requieren Pre especificar el número de clústeres que se producirán. Dentro de este método esta la agrupación aglomerativa y la no aglomerativa.
Agrupación aglomerativa: En esta agrupación cada observación se considera inicialmente como un racimo propio (hoja). Luego, los clústeres más similares se fusionan sucesivamente hasta que haya un solo gran clúster (raíz), esta agrupación es conocida como dendrograma. Los agrupamiento aglomerativo es el tipo más común de agrupamiento jerárquico que se utiliza para agrupar objetos en grupos en función de su similitud. También se conoce como (Anidación aglomerativa). El algoritmo comienza tratando cada objeto como un grupo único. A continuación, los pares de grupos se fusionan sucesivamente hasta que todos los grupos se fusionan en un grupo grande que contiene todos los objetos. El resultado es una representación basada en árbol de los objetos, denominada dendrograma.
La agrupación aglomerativa funciona de forma “de abajo hacia arriba.” Es decir, cada objeto se considera inicialmente como un grupo de un solo elemento (hoja). En cada paso del algoritmo, los dos grupos que son más similares se combinan en un nuevo grupo más grande (nodos). Este procedimiento se repite hasta que todos los puntos son miembros de un solo gran clúster (raíz).
Los pasos para realizar agrupaciones jerárquicas aglomerarías utilizando el software R:
Preparación de los datos.
Calcular información de similitud entre cada par de objetos en el conjunto de datos.
Uso de la función de vinculación para agrupar objetos en un árbol de agrupamiento jerárquico, según la información de distancia generada en el paso 1. Los objetos/agrupaciones que están muy próximos se vinculan entre sí mediante la función de vinculación.
Determinar dónde cortar el árbol jerárquico en grupos. Esto crea una partición de los datos.
Estructura y preparación de datos:
Los datos deben ser una matriz numérica con: filas que representan observaciones (individuos); y columnas que representan variables. Se deben de estandarizar las variables en el conjunto de datos antes de realizar un análisis posterior. La estandarización hace que las variables sean comparables cuando se miden en diferentes escalas. Por ejemplo, una variable puede medir la altura en metros y otra variable puede medir el peso en kg.
La agrupación en clústeres dividida: Una inversión de la agrupación aglomerativa, comienza con la raíz, en que todos los objetos están incluidos en un grupo. Entonces el más heterogéneo los conglomerados se dividen sucesivamente hasta que todas las observaciones están en su propio conglomerado.
La inversa de la agrupación aglomerativa es agrupamiento divisivo, que también se conoce como DIANA (Análisis de división) y funciona de manera “de arriba hacia abajo”. Comienza con la raíz, en la que todos los objetos se incluyen en un solo clúster. En cada paso de la iteración, el grupo más heterogéneo se divide en dos. El proceso se repite hasta que todos los objetos están en su propio clúster
Paquete Cluster R:
El paquete R grupo facilita la realización de análisis de
conglomerados en R. Proporciona la función Inés()
y
Diana()
para calcular agrupaciones aglomerativas y
divisivas, respectivamente. Estas funciones realizan todos los pasos
necesarios para usted. No es necesario ejecutar elescala()
,
dist()
y hclust()
funcionan por separado.
Las funciones se pueden ejecutar de la siguiente manera:
- Método No Jerárquico
Los métodos no jerárquicos o también conocidos como agrupación en clústeres de particiones son métodos de agrupación que se utilizan para clasificar observaciones, dentro de un conjunto de datos, en varios grupos en función de su similitud. Los algoritmos requieren analista para especificar el número de conglomerados que se generarán.
Agrupación de K-medias, en este método cada agrupación está representada por el centro o por medio de los puntos de datos pertenecientes al clúster. El método de las K-medias es sensible a puntos de datos anómalos y valores atípicos.
Agrupación de K-medoides o Partición alrededor de medoides, con sus siglas en ingles (PAM), en el que cada grupo está representado por uno de los objetos en el racimo. PAM es menos sensible a valores atípicos en comparación con el método de k-medias.
Algoritmo de Agrupación de aplicaciones grandes con sus siglas en ingles CLARA, es una extensión del método Partición alrededor de medoides (PAM), adaptado para grandes conjuntos de datos.
El clúster por medio de técnicas no jerárquicas no requiere de procesos de construcción de árboles;
En su lugar, asignan los objetos a clústers una vez que el número de grupos a formar esté especificado. Los procedimientos de aglomeración no jerárquicos se denominan frecuentemente agrupaciones de k–medias, k–medianas y k–modas. Una desventaja con respecto a la técnica jerárquica consiste en que debe conocerse a priori el número de clústers a obtener, lo que implica un grado de subjetividad en el proceso (Peterson, 2002). A pesar de lo anterior, se considera un método dinámico en el sentido en que los objetos dentro de los clústers se pueden mover de un clúster a otro, minimizando la distancia entre objetos dentro de un mismo clúster (Rao & Srinivas, 2006). Pese a las ventajas del método de aglomeración no jerárquico, en este artículo se presenta la aplicación del método jerárquico dado el interés de no querer asignar a priori el número de grupos a formar. A continuación se describen las técnicas empleadas en el análisis clúster y el método de similitud utilizado.
El algoritmo K-means se puede resumir de la siguiente manera:
Especifique el número de clústeres (K) que se crearán (por el analista)
Seleccionar aleatoriamente k objetos del conjunto de datos como centros o medias del conglomerado inicial
Asigna cada observación a su centroide más cercano, según la distancia euclidiana entre el objeto y el centroide.
Para cada uno de los k clústeres, actualice el centroide de racimo calculando los nuevos valores medios de todos los puntos de datos del conglomerado. El centoide de unKth cluster es un vector de longitud pag que contiene las medias de todas las variables para las observaciones en el kth grupo; pag es el número de variables.
Minimice iterativamente el total dentro de la suma del cuadrado. Es decir, repita los pasos 3 y hasta que las asignaciones de clúster dejen de cambiar o se alcance el número máximo de iteraciones. De forma predeterminada, el software R utiliza 10 como valor predeterminado para el número máximo de iteraciones.
Para calcular la agrupación en clústeres de k-medias en R, Los
datos deben contener solo variables continuas, ya que el algoritmo de
kmedias utiliza medias variables. Como no queremos que el algoritmo de
k-medias dependa de una unidad variable arbitraria, comenzamos escalando
los datos usando la funció Rescala()
de la siguiente
manera:
Base de datos
Tasas de delitos violentos por estado de EE. UU.
Descripción
Este conjunto de datos contiene estadísticas sobre arrestos por agresión, asesinato y violación por cada 100 000 habitantes en cada uno de los 50 estados de EE. UU. También se indica el porcentaje de la población que vive en zonas urbanas.
Cargando el conjunto de datos, data (“USArrests”)
data("USArrests") # Cargando el conjunto de datos
<- scale(USArrests) # Scaling the data
df # Ver las primeras 3 filas de datos
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
Paquetes y funciones de R requeridos
La función R estándar para la agrupación en clústeres de k-medias es k significa() [estadisticas paquete], cuyo formato simplificado es el siguiente: k significa(x, centros, iter.max = 10, nstart = 1)
X: matriz numérica, marco de datos numéricos o un vector numérico
centros: Los valores posibles son el número de conglomerados (k) o un conjunto de centros de conglomerados iniciales (distintos). Si es un número, se elige un conjunto aleatorio de filas (distintas) en x como centros iniciales.
iter.max: El número máximo de iteraciones permitidas. El valor predeterminado es 10. nstart: El número de particiones iniciales aleatorias cuando los centros son un número. A menudo se recomienda probar nstart> 1.
Para crear un hermoso gráfico de los clústeres generados con el k significa() función, utilizará la factoextra paquete.
Estimación del número óptimo de conglomerados
La agrupación de k-means requiere que los usuarios especifiquen el número de agrupaciones que se generarán.
La idea es calcular la agrupación de k-medias utilizando diferentes valores de las agrupaciones k. A continuación, se dibuja el wss (dentro de la suma del cuadrado) de acuerdo con el número de grupos. La ubicación de una curva (rodilla) en la parcela se considera generalmente como un indicador del número apropiado de grupos.
La función R fviz_nbclust() [en factoextra paquete] proporciona una solución conveniente para estimar el número óptimo de clústeres.
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.3.2
## Carregando pacotes exigidos: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
fviz_nbclust(df, kmeans, method = "wss") +
geom_vline(xintercept = 4, linetype = 2)
El gráfico anterior representa la varianza dentro de los grupos. Disminuye a medida que k aumenta, pero se puede ver una curva (o “codo”) en k = 4. Esta curva indica que los grupos adicionales más allá del cuarto tienen poco valor. En la siguiente sección, clasificaremos las observaciones en 4 racimos.
Cálculo de la agrupación en clústeres de k-medias
Como el algoritmo de agrupamiento de k-medias comienza con k
centroides seleccionados al azar, siempre se recomienda usar el
set.seed()
función con el fin de establecer una semilla
para R es aleatorio generador de números. El objetivo es hacer
reproducibles los resultados, de modo que el lector de este artículo
obtenga exactamente los mismos resultados que se muestran a
continuación.
El siguiente código R funciona agrupación de k-medias con k = 4:
# Calcule k-medias con k = 4
set.seed(123)
<- kmeans(df, 4, nstart = 25)
km.res # Imprime los resultados
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"
La salida impresa muestra:
- las medias o centros del conglomerado: una matriz, cuyas filas son el número de conglomerados (1 a 4) y las columnas son variables el vector de agrupamiento: un vector de números enteros (de 1: k) que indica el grupo al que se asigna cada punto.
Es posible calcular la media de cada variable por conglomerados utilizando los datos originales:
aggregate(USArrests, by = list(cluster = km.res$cluster), mean)
## 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
Si desea agregar las clasificaciones de puntos a los datos originales, use esto:
<- cbind(USArrests, cluster = km.res$cluster)
dd head(dd)
## 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ón kmeans()
kmeans () La función devuelve una lista de componentes, que incluye:
grupo: Un vector de números enteros (de 1: k) que indica el grupo al que se asigna cada punto
centros: Una matriz de centros de conglomerados (medias de conglomerados)
totss: La suma total de cuadrados (TSS), es decir \((XI \neq x̄)2\). TSS mide la varianza total en los datos.
dentro: Vector de suma de cuadrados dentro del conglomerado, un componente por conglomerado
tot.withinss: Suma total de cuadrados dentro del conglomerado, es decir suma(dentro)
entre: La suma de cuadrados entre grupos, es decir \(totss \neq tot.withinss\)
Talla: El número de observaciones en cada grupo
Se puede acceder a los componentes de la siguiente manera:
# Número de conglomerado para cada una de las observaciones
$cluster km.res
## 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
head(km.res$cluster, 4)
## Alabama Alaska Arizona Arkansas
## 1 4 4 1
# Tamaño de cluster
$size km.res
## [1] 8 13 16 13
# Clúster significa
$centers km.res
## 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 clústeres de k-medias
Es una buena idea trazar los resultados del clúster. Estos se pueden utilizar para evaluar la elección del número de conglomerados, así como para comparar dos análisis de conglomerados diferentes.
Ahora, queremos visualizar los datos en un diagrama de dispersión coloreando cada punto de datos de acuerdo con su asignación de grupo.
El problema es que los datos contienen más de 2 variables y la pregunta es qué variables elegir para el diagrama de dispersión xy.
Una solución es reducir el número de dimensiones aplicando un algoritmo de reducción de dimensionalidad, como Análisis de componentes principales (PCA), que opera sobre las cuatro variables y genera dos nuevas variables (que representan las variables originales) que puede usar para hacer el gráfico.
En otras palabras, si tenemos un conjunto de datos multidimensionales, una solución es realizar un análisis de componentes principales (PCA) y trazar puntos de datos de acuerdo con las dos primeras coordenadas de los componentes principales.
La función fviz_cluster()
[factoextra paquete] se
puede utilizar para visualizar fácilmente los clústeres de kmedias. Toma
los resultados de k-medias y los datos originales como argumentos. En la
gráfica resultante, las observaciones se representan mediante puntos,
utilizando componentes principales si el número de variables es mayor
que 2. También es posible dibujar una elipse de concentración alrededor
de cada grupo.
fviz_cluster(
km.res,data = df,
palette = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
ellipse.type = "euclid",
# Concentration ellipse
star.plot = TRUE,
# Add segments from centroids to items
repel = TRUE,
# Avoid label overplotting (slow)
ggtheme = theme_minimal()
)
Capítulo 5
K-Medoides
Concepto PAM
El uso de medias implica que la agrupación de k medias es muy sensible a los valores atípicos. Esto puede afectar gravemente la asignación de observaciones a los conglomerados. Un algoritmo más robusto es proporcionado por elPAM algoritmo.
Algoritmo PAM
El algoritmo PAM se basa en la búsqueda de k objetos representativos o medoides entre las observaciones del conjunto de datos. Después de encontrar un conjunto de k medoides, los grupos se construyen asignando cada observación al medoide más cercano.
A continuación, se intercambian cada medoide my cada punto de datos no medoide seleccionado y se calcula la función objetivo. La función objetivo corresponde a la suma de las diferencias de todos los objetos con su medoide más cercano.
El paso SWAP intenta mejorar la calidad de la agrupación mediante el intercambio de objetos seleccionados (medoides) y objetos no seleccionados. Si la función objetivo se puede reducir intercambiando un objeto seleccionado con un objeto no seleccionado, entonces se lleva a cabo el intercambio. Esto se continúa hasta que la función objetivo ya no se puede reducir. El objetivo es encontrar k objetos representativos que minimicen la suma de las diferencias de las observaciones con su objeto representativo más cercano.
Estimación del número óptimo de conglomerados
library(factoextra)
library(cluster)
fviz_nbclust(df, pam, method = "silhouette") +
theme_classic()
Visualización de clústeres PAM
Para visualizar los resultados de la partición, usaremos la función fviz_cluster () [paquete factoextra]. Dibuja un diagrama de dispersión de puntos de datos coloreados por números de grupo. Si los datos contiene más de 2 variables, el algoritmo de análisis de componentes principales (PCA), se utiliza para reducir la dimensionalidad de los datos. En este caso, los dos primeros principales las dimensiones se utilizan para graficar los datos.
<- pam(df, 2)# El siguiente código R calcula el algoritmo PAM con k = 2:
pam.res fviz_cluster(
pam.res,palette = c("#00AFBB", "#FC4E07"),
# color palette
ellipse.type = "t",
# Concentration ellipse
repel = TRUE,
# Avoid label overplotting (slow)
ggtheme = theme_classic()
)
Capítulo 9
Visualización de dendrogramas
Como se describió en capítulos anteriores, un dendrograma es una representación basada en árbol de un datos creados usando métodos de agrupamiento jerárquico (Capítulo 7). En este artículo, proporcionar código R para visualizar y personalizar dendrogramas. Además, mostramos cómo guardar y hacer zoom en un dendrograma grande.
# Cargar datos
data(USArrests)
# Calcular distancias y agrupamiento jerárquico
<- dist(scale(USArrests), method = "euclidean")
dd <- hclust(dd, method = "ward.D2") hc
Para visualizar el dendrograma, usaremos las siguientes funciones y paquetes de R:
fviz_dend()
[en el paquete factoextra R] para crear fácilmente un hermoso basado en ggplot2 dendrograma.paquete dendextend para manipular dendrogramas Antes de continuar, instale el paquete requerido de la siguiente manera:
Antes de continuar, instale el paquete requerido de la siguiente manera:
install.packages(c( “factoextra” ,“dendextend”))
Visualización de dendrogramas
Usaremos la función fviz_dend()
[en el paquete
factoextra R] para crear fácilmente una hermosa dendrograma utilizando
el gráfico base R o ggplot2. También proporciona una opción para
dibujando dendrogramas circulares y árboles parecidos a filogenia.
Para crear dendrogramas básicos, escriba esto:
library(factoextra)
library(dendextend)
## Warning: package 'dendextend' was built under R version 4.3.2
##
## ---------------------
## Welcome to dendextend version 1.17.1
## Type citation('dendextend') for how to cite the package.
##
## Type browseVignettes(package = 'dendextend') for the package vignette.
## The github page is: https://github.com/talgalili/dendextend/
##
## Suggestions and bug-reports can be submitted at: https://github.com/talgalili/dendextend/issues
## You may ask questions at stackoverflow, use the r and dendextend tags:
## https://stackoverflow.com/questions/tagged/dendextend
##
## To suppress this message use: suppressPackageStartupMessages(library(dendextend))
## ---------------------
##
## Attaching package: 'dendextend'
## The following object is masked from 'package:stats':
##
## cutree
fviz_dend(hc, cex = 0.5)
## 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.
Puede usar los argumentos main
, sub
,
xlab
, ylab
para cambiar los títulos de la
trama de la siguiente manera:
fviz_dend(
hc,cex = 0.5,
main = "Dendrogram - ward.D2",
xlab = "Objects",
ylab = "Distance",
sub = ""
)
Para dibujar un dendrograma horizontal, escriba esto:
fviz_dend(hc, cex = 0.5, horiz = TRUE)
También es posible cortar el árbol a una altura determinada para dividir los datos en múltiples grupos como se describe en el capítulo anterior: Agrupación jerárquica (Capítulo 7). En este caso, es posible colorear las ramas por grupos y agregar un rectángulo alrededor de cada grupo.
Por ejemplo:
Para cambiar el tema de la trama, use el argumento ggtheme, cuyos
valores permitidos incluyen ggplot2 temas oficiales
[theme_gray ()
, theme_bw ()
,
theme_minimal ()
, theme_classic ()
,
theme_void ()
] o cualquier otro tema de
ggplot2
definido por el usuario.
fviz_dend(
hc,k = 4,
# Cortar en cuatro grupos
cex = 0.5,
# # Tamaño de la etiqueta
k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07"),
color_labels_by_k = TRUE,
# Etiquetas de Color por grupos
ggtheme = theme_gray() # Cambiar de tema
)
Si desea dibujar un dendrograma horizontal con un rectángulo alrededor de los grupos, use esto
fviz_dend(
hc,k = 4,
cex = 0.4,
horiz = TRUE,
k_colors = "jco",
rect = TRUE,
rect_border = "jco",
rect_fill = TRUE
)
Además, puede trazar un dendrograma circular usando la opción
type = “circular”
.
fviz_dend(
hc,cex = 0.5,
k = 4,
k_colors = "jco",
type = "circular"
)
Para trazar un árbol filogénico, use
type = “phylogenic”
y repel = TRUE
(para
evitar superposición de etiquetas). Esta funcionalidad requiere el
paquete R igraph. Asegúrate de eso está instalado antes de escribir el
siguiente código R.
require("igraph")
## Carregando pacotes exigidos: igraph
## Warning: package 'igraph' was built under R version 4.3.2
##
## Attaching package: 'igraph'
## The following objects are masked from 'package:stats':
##
## decompose, spectrum
## The following object is masked from 'package:base':
##
## union
fviz_dend(
hc,k = 4,
k_colors = "jco",
type = "phylogenic",
repel = TRUE
)
Bibliografía:
Kassambara, Alboukadel, and Fabian Mundt. 2020. Factoextra: Extract and Visualize the Results of Multivariate Data Analyses. http://www.sthda.com/english/rpkgs/factoextra.