Estos datos son el resultado de un análisis químico de vinos cultivados en la misma región de Italia, pero derivados de tres cultivares diferentes.
El análisis determinó las cantidades de 13 componentes que se encuentran en cada uno de los tres culti
#install.packages("cluster") # Análisis de Agrupamiento
library(cluster)
#install.packages("ggplot2") # Graficar
library(ggplot2)
#install.packages("data.table") # Manejo de muchos datos
library(data.table)
#install.packages("factoextra") # Grafica optimización de número de clusters
library(factoextra)
#install.packages("dplyr")
library(dplyr)
df3 <- data.frame(
Entidad = c("Aguascalientes", "Baja California", "Baja California Sur", "Campeche", "Chiapas",
"Chihuahua", "Distrito Federal", "Coahuila de Zaragoza", "Colima", "Durango",
"Guanajuato", "Guerrero", "Hidalgo", "Jalisco", "Michoacán de Ocampo", "Morelos",
"México", "Nayarit", "Nuevo León", "Oaxaca", "Puebla", "Querétaro", "Quintana Roo",
"San Luis Potosí", "Sinaloa", "Sonora", "Tabasco", "Tamaulipas",
"Tlaxcala", "Veracruz de Ignacio de la Llave", "Yucatán", "Zacatecas"),
Suel_Prom_Empleados = c(9432.454645, 14044.353582, 8123.243189, 17940.328515, 5633.688618,
16804.911982, 18725.967825, 9880.586704, 6691.318058, 8559.506877,
8659.015872, 6127.738942, 7136.083255, 9566.576551, 6564.490245,
6761.228389, 12980.218774, 7679.770338, 13964.116103, 6054.543362,
10170.617462, 11790.052681, 11033.895805, 8390.806228, 10935.056047,
12690.473421, 17766.800911, 12204.903685, 5254.007124, 10137.518401,
7200.283540, 6556.083345)
)
df4 <- data.frame(
Suel_Prom_Empleados = c(
9432.454645, 14044.353582, 8123.243189, 17940.328515,
5633.688618, 16804.911982, 18725.967825, 9880.586704,
6691.318058, 8559.506877, 8659.015872, 6127.738942,
7136.083255, 9566.576551, 6564.490245, 6761.228389,
12980.218774, 7679.770338, 13964.116103, 6054.543362,
10170.617462, 11790.052681, 11033.895805, 8390.806228,
10935.056047, 12690.473421, 17766.800911, 12204.903685,
5254.007124, 10137.518401, 7200.283540, 6556.083345
)
)
summary(df3) # min, promedio, max, NAs
## Entidad Suel_Prom_Empleados
## Length:32 Min. : 5254
## Class :character 1st Qu.: 7042
## Mode :character Median : 9500
## Mean :10171
## 3rd Qu.:12326
## Max. :18726
str(df3) # estructura: tipo de objeto, número de objetos
## 'data.frame': 32 obs. of 2 variables:
## $ Entidad : chr "Aguascalientes" "Baja California" "Baja California Sur" "Campeche" ...
## $ Suel_Prom_Empleados: num 9432 14044 8123 17940 5634 ...
set.seed(123)
optimizacion3 <- clusGap(df4, FUN=kmeans, nstart=1, K.max=10)
plot(optimizacion3, xlab="Número de clusters k", main="Optimización de Clusters") #el primer punto más alto se selecciona como óptimo
# Siempre es un valor inicial "cualquiera", luego se optimiza.
grupos3 <- 4 # óptimos
set.seed(123)
clusters3 <- kmeans(df4, grupos3)
clusters3
## K-means clustering with 4 clusters of sizes 9, 11, 4, 8
##
## Cluster means:
## Suel_Prom_Empleados
## 1 9213.370
## 2 6514.476
## 3 17809.502
## 4 12455.384
##
## Clustering vector:
## [1] 1 4 1 3 2 3 3 1 2 1 1 2 2 1 2 2 4 2 4 2 1 4 4 1 4 4 3 4 2 1 2 2
##
## Within cluster sum of squares by cluster:
## [1] 4988137 5036703 1868050 9969247
## (between_SS / total_SS = 95.2 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
# Añadir clusters al df original con Entidad
df3$cluster <- clusters3$cluster
# Ordenar por sueldo y graficar
ggplot(df3, aes(x = reorder(Entidad, Suel_Prom_Empleados),
y = Suel_Prom_Empleados,
fill = factor(cluster))) +
geom_col() +
coord_flip() +
labs(x = "Entidad", y = "Sueldo promedio empleados",
fill = "Cluster",
title = "Clusters por sueldo promedio de empleados (1 variable)") +
theme_minimal()
df3
## Entidad Suel_Prom_Empleados cluster
## 1 Aguascalientes 9432.455 1
## 2 Baja California 14044.354 4
## 3 Baja California Sur 8123.243 1
## 4 Campeche 17940.329 3
## 5 Chiapas 5633.689 2
## 6 Chihuahua 16804.912 3
## 7 Distrito Federal 18725.968 3
## 8 Coahuila de Zaragoza 9880.587 1
## 9 Colima 6691.318 2
## 10 Durango 8559.507 1
## 11 Guanajuato 8659.016 1
## 12 Guerrero 6127.739 2
## 13 Hidalgo 7136.083 2
## 14 Jalisco 9566.577 1
## 15 Michoacán de Ocampo 6564.490 2
## 16 Morelos 6761.228 2
## 17 México 12980.219 4
## 18 Nayarit 7679.770 2
## 19 Nuevo León 13964.116 4
## 20 Oaxaca 6054.543 2
## 21 Puebla 10170.617 1
## 22 Querétaro 11790.053 4
## 23 Quintana Roo 11033.896 4
## 24 San Luis Potosí 8390.806 1
## 25 Sinaloa 10935.056 4
## 26 Sonora 12690.473 4
## 27 Tabasco 17766.801 3
## 28 Tamaulipas 12204.904 4
## 29 Tlaxcala 5254.007 2
## 30 Veracruz de Ignacio de la Llave 10137.518 1
## 31 Yucatán 7200.284 2
## 32 Zacatecas 6556.083 2