Durante 2022, en 31 entidades federativas, la sequía fue el principal factor de pérdida para las unidades de producción agropecuaria activas del país.
Los datos presentados a continuacón son un recopilación de data sets públicos ofrecidos por el Inegi en su portal de Información de Gobierno, Seguridad Pública e Impartición de Justicia.
#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)
df_sequias <- read.csv("C:\\Users\\Salvador\\Desktop\\concentración IA\\Agua\\sequias.csv")
df_sequias_num <- df_sequias[,c("poblacion","perdidas_sequias", "perdidas_inundaciones", "temp_prom")]
summary(df_sequias) #pata ver datos raros, na's,
## estado poblacion perdidas_sequias perdidas_inundaciones
## Length:32 Min. : 731391 Min. :22.89 Min. : 1.480
## Class :character 1st Qu.: 1851651 1st Qu.:65.33 1st Qu.: 4.697
## Mode :character Median : 3054892 Median :81.47 Median :10.485
## Mean : 3937938 Mean :75.67 Mean :13.869
## 3rd Qu.: 4947592 3rd Qu.:91.50 3rd Qu.:18.163
## Max. :16992418 Max. :97.24 Max. :78.670
## temp_prom
## Min. :14.50
## 1st Qu.:18.00
## Median :21.50
## Mean :21.48
## 3rd Qu.:25.25
## Max. :27.50
str(df_sequias) #ver que sean numericos los datos del df
## 'data.frame': 32 obs. of 5 variables:
## $ estado : chr "Aguascalientes" "Baja California" "Baja California Sur" "Campeche" ...
## $ poblacion : int 1425607 3769020 798447 928363 3146771 731391 5543828 3741869 9209944 1832650 ...
## $ perdidas_sequias : num 94.1 74.4 83.6 81.3 92.7 ...
## $ perdidas_inundaciones: num 2.34 7.06 8.92 28.87 3.72 ...
## $ temp_prom : num 18 19.5 24 26.5 25 18 16 19.5 27 17 ...
datos_escalados <- scale(df_sequias_num)
# Siempre es un valor inicial "cualquiera", luego se optimiza.
# plot(df1$x, df1$y) #$ sirve para separarlo, especificar columnas
grupos1 <- 5
set.seed(123)
clusters1 <- kmeans(datos_escalados,grupos1)
clusters1
## K-means clustering with 5 clusters of sizes 1, 3, 9, 7, 12
##
## Cluster means:
## poblacion perdidas_sequias perdidas_inundaciones temp_prom
## 1 -0.46837584 -0.7401937 4.4249515 1.4990149
## 2 2.28300427 -0.1718144 -0.2409606 0.6268608
## 3 -0.12054493 0.7819926 -0.6573472 -0.8682606
## 4 0.04017474 -1.2225127 0.5536814 -0.8504615
## 5 -0.46474632 0.2312743 -0.1384762 0.8656649
##
## Clustering vector:
## [1] 3 3 5 5 5 4 4 4 2 4 3 4 5 4 2 4 5 5 3 5 3 3 5 3 5 5 1 5 3 2 5 3
##
## Within cluster sum of squares by cluster:
## [1] 0.000000 6.488079 7.209087 12.189991 11.993841
## (between_SS / total_SS = 69.5 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
set.seed(123)
optimización <- clusGap(datos_escalados,FUN=kmeans,nstart=1,K.max=10)
#El K.max normalmente es 10, en este ejercicio al ser 8 datos se dejó en 7.
plot(optimización,xlab="Número de clusters k")
# Se selecciona como óptimo el primer número de cluster más alto.
fviz_cluster(clusters1, data=datos_escalados)
df1clusters <- cbind(df_sequias,cluster = clusters1$cluster)
head(df1clusters)
## estado poblacion perdidas_sequias perdidas_inundaciones
## 1 Aguascalientes 1425607 94.13 2.34
## 2 Baja California 3769020 74.41 7.06
## 3 Baja California Sur 798447 83.58 8.92
## 4 Campeche 928363 81.28 28.87
## 5 Coahuila 3146771 92.65 3.72
## 6 Colima 731391 37.78 22.97
## temp_prom cluster
## 1 18.0 3
## 2 19.5 3
## 3 24.0 5
## 4 26.5 5
## 5 25.0 5
## 6 18.0 4
Los clusters permiten identificar segmentos claros en la población y sus condiciones de vulnerabilidad frente a la sequía, especialmente en los estados más afectados y que presentan mayores pérdidas por estos fenómenos naturales, lo cual puede ser utilizado para el diseño y mejora de políticas públicas de gestión hídrica, prevención de riesgos y mitigación de impactos