La base de datos empleada en este análisis ha sido proporcionada por INEGI. En este estudio se examinan los diferentes tipos de parto registrados a lo largo de los Estados de la República Mexicana durante el año 2023.
#install.packages("readxl")
#install.packages("cluster")
#install.packages("ggplot2")
#install.packages("factoextra")
library(readxl)
library(cluster)
library(ggplot2)
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
df1 <- read_excel("Nacimiento.xlsx")
summary(df1)
## Entidad Federativa Nacimientos Parto Simple Parto Doble
## Length:32 Min. : 9111 Min. : 8946 Min. : 165.0
## Class :character 1st Qu.: 26109 1st Qu.: 25625 1st Qu.: 440.8
## Mode :character Median : 44593 Median : 43674 Median : 841.0
## Mean : 113019 Mean : 111054 Mean : 1912.2
## 3rd Qu.: 81332 3rd Qu.: 79501 3rd Qu.: 1453.8
## Max. :1820888 Max. :1789067 Max. :30789.0
## Triple o Más
## Min. : 0.00
## 1st Qu.: 3.00
## Median : 13.00
## Mean : 41.72
## 3rd Qu.: 29.50
## Max. :729.00
str(df1)
## tibble [32 × 5] (S3: tbl_df/tbl/data.frame)
## $ Entidad Federativa: chr [1:32] "Estados Unidos Mexicanos" "Aguascalientes" "Baja California" "Baja California Sur" ...
## $ Nacimientos : num [1:32] 1820888 19890 62658 10458 13429 ...
## $ Parto Simple : num [1:32] 1789067 19481 61427 10241 13231 ...
## $ Parto Doble : num [1:32] 30789 404 1196 212 192 ...
## $ Triple o Más : num [1:32] 729 5 31 3 0 18 0 15 15 69 ...
names(df1)
## [1] "Entidad Federativa" "Nacimientos" "Parto Simple"
## [4] "Parto Doble" "Triple o Más"
df_num <- df1[sapply(df1, is.numeric)]
df_num <- na.omit(df_num)
#Siempre es un valor inicial "cualquiera", luego se optimiza
set.seed(123)
grupos1 <- 3
str(df_num)
## tibble [32 × 4] (S3: tbl_df/tbl/data.frame)
## $ Nacimientos : num [1:32] 1820888 19890 62658 10458 13429 ...
## $ Parto Simple: num [1:32] 1789067 19481 61427 10241 13231 ...
## $ Parto Doble : num [1:32] 30789 404 1196 212 192 ...
## $ Triple o Más: num [1:32] 729 5 31 3 0 18 0 15 15 69 ...
set.seed(123)
clusters1 <- kmeans(df_num,grupos1)
clusters1
## K-means clustering with 3 clusters of sizes 9, 1, 22
##
## Cluster means:
## Nacimientos Parto Simple Parto Doble Triple o Más
## 1 114753.78 112802.89 1896.3333 38.22222
## 2 1820888.00 1789067.00 30789.0000 729.00000
## 3 34678.73 34065.55 606.0455 11.90909
##
## Clustering vector:
## [1] 2 3 3 3 3 3 3 1 3 1 3 1 3 3 1 1 1 3 3 1 3 1 3 3 3 3 3 3 3 3 1 3
##
## Within cluster sum of squares by cluster:
## [1] 28445218872 0 12096093027
## (between_SS / total_SS = 99.3 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
set.seed(123)
optimizacion <- clusGap(df_num, FUN = kmeans, nstart = 25, K.max = 10)
plot(optimizacion, xlab="Número de clusters k", main="Optimización de clusters")
# Paso 8. Graficar los grupos
fviz_cluster(clusters1, data=df_num)
# Paso 9. Agregar clusters a la base de datos
df1_clusters <- cbind(df1, cluster = clusters1$cluster)
head(df1_clusters)
## Entidad Federativa Nacimientos Parto Simple Parto Doble Triple o Más
## 1 Estados Unidos Mexicanos 1820888 1789067 30789 729
## 2 Aguascalientes 19890 19481 404 5
## 3 Baja California 62658 61427 1196 31
## 4 Baja California Sur 10458 10241 212 3
## 5 Campeche 13429 13231 192 0
## 6 Coahuila 44173 43379 812 18
## cluster
## 1 2
## 2 3
## 3 3
## 4 3
## 5 3
## 6 3
Los clusters permiten identificar segmentos claros en la población de nacimientos y su tipo de parto,las cuales pueden ser utilizadas para la mejora de políticas públicas.