El conjunto de datos representa los indicadores relacionados con la pobreza respecto a cada estado de México con información proveniente del INEGI.
Los datos a utilizar para el análisis de clusters son los
siguientes:
* Porcentaje de la población de 12 a 29 años de edad con ingreso
inferior a la línea de bienestar.
* Porcentaje de la población en pobreza.
* Porcentaje de la población en pobreza extrema.
* Mediana del ingreso nominal de la población ocupada de 15 a 29
años.
* Satisfacción con la vida.
# 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") # Gráfica optimización de número de clusters
library(factoextra)
library(dplyr)
df1 <- read.csv("C:\\Users\\Adrián\\Downloads\\Pobreza_Mexico.csv")
summary(df1)
## Entidad Inferior_LineaBienestar Pobreza Pobreza_Extrema
## Length:32 Min. :29.60 Min. :13.30 Min. : 0.800
## Class :character 1st Qu.:37.85 1st Qu.:21.70 1st Qu.: 1.800
## Mode :character Median :50.00 Median :33.65 Median : 5.350
## Mean :51.08 Mean :34.53 Mean : 6.531
## 3rd Qu.:60.48 3rd Qu.:44.42 3rd Qu.: 7.425
## Max. :80.70 Max. :67.40 Max. :28.200
## Mediana_Ingreso Satisfacción Cluster
## Min. :3870 Min. :8.200 Min. :1.000
## 1st Qu.:4450 1st Qu.:8.300 1st Qu.:2.000
## Median :5353 Median :8.500 Median :4.000
## Mean :5347 Mean :8.481 Mean :3.781
## 3rd Qu.:6000 3rd Qu.:8.600 3rd Qu.:6.000
## Max. :7740 Max. :8.800 Max. :7.000
str(df1)
## 'data.frame': 32 obs. of 7 variables:
## $ Entidad : chr "Aguascalientes" "Baja California" "Baja California Sur" "Campeche" ...
## $ Inferior_LineaBienestar: num 36.9 29.6 35.8 60.3 39.6 34.2 80.7 37.4 48.2 50.4 ...
## $ Pobreza : num 23.7 13.4 13.3 45.1 18.2 20.5 67.4 17.6 24 34.3 ...
## $ Pobreza_Extrema : num 1.8 1.3 0.8 9.6 1.8 1.2 28.2 2.1 1.7 6.3 ...
## $ Mediana_Ingreso : int 5800 7740 7180 4500 6450 6000 3870 6020 5546 5160 ...
## $ Satisfacción : num 8.6 8.7 8.6 8.3 8.8 8.8 8.5 8.7 8.2 8.5 ...
## $ Cluster : int 4 5 5 1 3 3 2 3 6 6 ...
# Excluir columna "Entidad" de ser escalamiento
df_escalado <- scale(df1[, !(names(df1) %in% "Entidad")])
# Reinsertar "Entidad" en datos escalados
df_escalado <- as.data.frame(df_escalado)
df_escalado <- cbind(Entidad = df1$Entidad, df_escalado)
grupos1 <- 4
set.seed(123)
clusters1 <- kmeans(df_escalado[ , !(names(df_escalado) %in% "Entidad")], grupos1)
clusters1
## K-means clustering with 4 clusters of sizes 10, 10, 3, 9
##
## Cluster means:
## Inferior_LineaBienestar Pobreza Pobreza_Extrema Mediana_Ingreso
## 1 0.06069275 0.03586558 -0.1818763 -0.1100141
## 2 1.13110906 1.15678008 1.0685471 -1.1146047
## 3 -1.30080167 -1.35936272 -0.8343154 1.9975124
## 4 -0.89062368 -0.87204094 -0.7070847 0.6948500
## Satisfacción Cluster
## 1 -0.2264383 1.1525691
## 2 -0.9400620 -1.2333422
## 3 1.2008091 0.6057978
## 4 0.8958417 -0.1121848
##
## Clustering vector:
## [1] 4 3 3 2 4 4 2 4 1 1 1 2 2 4 1 1 2 1 3 2 2 4 1 1 4 4 2 4 2 2 1 1
##
## Within cluster sum of squares by cluster:
## [1] 9.934210 21.167187 1.064731 5.200920
## (between_SS / total_SS = 79.9 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
optimizacion1 <- clusGap(df_escalado[, !(names(df_escalado) %in% "Entidad")], FUN=kmeans, nstart =1, K.max=10)
plot(optimizacion1, xlab="Número de clusters k" ,main="Optimización de clusters")
grupos1 <- 7
set.seed(123)
clusters1 <- kmeans(df_escalado[ , !(names(df_escalado) %in% "Entidad")], grupos1)
clusters1
## K-means clustering with 7 clusters of sizes 7, 3, 4, 5, 3, 9, 1
##
## Cluster means:
## Inferior_LineaBienestar Pobreza Pobreza_Extrema Mediana_Ingreso
## 1 0.9396456 0.86244197 0.41399964 -1.0094531
## 2 1.5778571 1.84356899 2.59582453 -1.3599583
## 3 -1.0549420 -1.00837944 -0.73380311 0.7851868
## 4 -0.7591690 -0.76297014 -0.68570990 0.6225806
## 5 -1.3008017 -1.35936272 -0.83431537 1.9975124
## 6 0.1760038 0.07879454 -0.19985824 -0.1010201
## 7 -0.9771070 -0.35049503 -0.02003884 -0.1909604
## Satisfacción Cluster
## 1 -0.9165360 -1.3824616
## 2 -0.9949561 -0.8853968
## 3 1.4752798 -0.3883319
## 4 0.4322913 0.1087329
## 5 1.2008091 0.6057978
## 6 -0.3240279 1.1028627
## 7 0.6518678 1.5999275
##
## Clustering vector:
## [1] 4 5 5 1 3 3 2 3 6 6 6 2 1 4 6 6 1 7 5 2 1 4 6 6 3 4 1 4 1 1 6 6
##
## Within cluster sum of squares by cluster:
## [1] 3.8364820 3.6673470 0.5969227 1.2454201 1.0647315 7.4557686 0.0000000
## (between_SS / total_SS = 90.4 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
fviz_cluster(clusters1, df_escalado[, !(names(df_escalado) %in% "Entidad")])
df1_clusters <- cbind(df1,cluster = clusters1$cluster)
df1_clusters <- df1_clusters %>% arrange(cluster)
df1_clusters
## Entidad Inferior_LineaBienestar Pobreza Pobreza_Extrema
## 1 Campeche 60.3 45.1 9.6
## 2 Hidalgo 56.6 41.0 6.8
## 3 Morelos 60.7 41.1 5.8
## 4 Puebla 71.1 54.0 11.4
## 5 Tabasco 60.4 46.5 11.2
## 6 Tlaxcala 69.8 52.5 6.8
## 7 Veracruz 67.4 51.7 13.1
## 8 Chiapas 80.7 67.4 28.2
## 9 Guerrero 71.9 60.4 22.2
## 10 Oaxaca 64.5 58.4 20.2
## 11 Coahuila 39.6 18.2 1.8
## 12 Colima 34.2 20.5 1.2
## 13 Chihuahua 37.4 17.6 2.1
## 14 Sinaloa 36.2 21.6 1.8
## 15 Aguascalientes 36.9 23.7 1.8
## 16 Jalisco 42.2 21.8 2.1
## 17 Querétaro 37.7 21.7 1.7
## 18 Sonora 39.9 21.7 1.7
## 19 Tamaulipas 47.5 26.8 2.9
## 20 Baja California 29.6 13.4 1.3
## 21 Baja California Sur 35.8 13.3 0.8
## 22 Nuevo León 35.2 16.0 1.1
## 23 Ciudad de México 48.2 24.0 1.7
## 24 Durango 50.4 34.3 6.3
## 25 Guanajuato 50.6 33.0 3.2
## 26 México 63.8 42.9 6.0
## 27 Michoacán 47.8 41.7 7.5
## 28 Quintana Roo 56.5 27.0 4.2
## 29 San Luis Potosí 49.6 35.5 7.4
## 30 Yucatán 59.3 38.8 5.6
## 31 Zacatecas 54.9 44.2 5.1
## 32 Nayarit 37.9 29.3 6.4
## Mediana_Ingreso Satisfacción Cluster cluster
## 1 4500 8.3 1 1
## 2 4300 8.4 1 1
## 3 4300 8.4 1 1
## 4 4300 8.2 1 1
## 5 4300 8.3 1 1
## 6 4300 8.3 1 1
## 7 4500 8.3 1 1
## 8 3870 8.5 2 2
## 9 4300 8.2 2 2
## 10 3870 8.2 2 2
## 11 6450 8.8 3 3
## 12 6000 8.8 3 3
## 13 6020 8.7 3 3
## 14 6000 8.7 3 3
## 15 5800 8.6 4 4
## 16 6400 8.6 4 4
## 17 6000 8.5 4 4
## 18 5590 8.5 4 4
## 19 6000 8.6 4 4
## 20 7740 8.7 5 5
## 21 7180 8.6 5 5
## 22 7000 8.8 5 5
## 23 5546 8.2 6 6
## 24 5160 8.5 6 6
## 25 5546 8.5 6 6
## 26 5546 8.5 6 6
## 27 5160 8.4 6 6
## 28 5546 8.4 6 6
## 29 5000 8.3 6 6
## 30 5000 8.5 6 6
## 31 4730 8.5 6 6
## 32 5160 8.6 7 7
Mediante la creación de clusters es posible identificar grupos con características comunes y como resultado tener una mayor comprensión de como los problemas dentro de un país, afectan de forma distinta a los diferentes estados.