Se realizó un análisis sobre la movilidad y transporte de las ciudades con mayor demanda de este servicio en México.
La base de datos contiene información sobre la cantidad de pasajeros
#install.packages("cluster") # Analisis 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 <- read.csv("/Users/marielgarza/Downloads/movilidad2020-2025.csv") # conseguir path con file.choose() en Console
df <- as.data.frame(df)
df1 <- df[, -c(1, 6:10)]
summary(df1)
## autobuses_op_entre_semana autobuses_op_fin_semana km
## Min. : 1474 Min. : 1147 Min. :8.249e+06
## 1st Qu.: 8299 1st Qu.: 6321 1st Qu.:2.087e+07
## Median :18336 Median :14622 Median :1.384e+08
## Mean :29008 Mean :20797 Mean :2.374e+08
## 3rd Qu.:37470 3rd Qu.:28148 3rd Qu.:2.282e+08
## Max. :89940 Max. :55410 Max. :1.306e+09
## pasajeros
## Min. :3.782e+07
## 1st Qu.:1.140e+08
## Median :6.757e+08
## Mean :1.690e+09
## 3rd Qu.:1.389e+09
## Max. :1.092e+10
str(df1)
## 'data.frame': 10 obs. of 4 variables:
## $ autobuses_op_entre_semana: int 89940 1771 12819 73049 1474 6817 23853 26474 12746 41135
## $ autobuses_op_fin_semana : int 55410 1393 8260 54458 1147 5675 19008 22273 10235 30107
## $ km : num 1.31e+09 1.13e+07 2.63e+08 2.31e+08 8.25e+06 ...
## $ pasajeros : num 1.09e+10 8.01e+07 1.20e+09 1.45e+09 5.18e+07 ...
# Sí los datos no están en la misma escala
df1 <- scale(df1)
# Siempre es una valor inicial "cualquiera", luego se optimiza
# plot(df1$x,df1$y)
grupos1 <- 3
set.seed(222)
clusters1 <- kmeans(df1,grupos1)
clusters1
## K-means clustering with 3 clusters of sizes 7, 2, 1
##
## Cluster means:
## autobuses_op_entre_semana autobuses_op_fin_semana km pasajeros
## 1 -0.5491671 -0.5478834 -0.3066588 -0.3182651
## 2 0.9219460 1.0620888 -0.3019302 -0.2865815
## 3 2.0002777 1.7110060 2.7504719 2.8010183
##
## Clustering vector:
## [1] 3 1 1 2 1 1 1 1 1 2
##
## Within cluster sum of squares by cluster:
## [1] 2.248940 1.529342 0.000000
## (between_SS / total_SS = 89.5 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
optimizacion1 <- clusGap(df1, FUN=kmeans, nstart=1, K.max=8)
plot(optimizacion1, xlab="Número de clusters k", main="Optimización de Clusters")
fviz_cluster(clusters1, data=df1)
df1_clusters <- cbind(df1, cluster = clusters1$cluster)
head(df1_clusters)
## autobuses_op_entre_semana autobuses_op_fin_semana km pasajeros
## [1,] 2.0002777 1.7110060 2.75047193 2.8010183
## [2,] -0.8941276 -0.9591567 -0.58192281 -0.4883417
## [3,] -0.5314447 -0.6197079 0.06516701 -0.1492182
## [4,] 1.4457812 1.6639468 -0.01558973 -0.0720029
## [5,] -0.9038775 -0.9713170 -0.58973275 -0.4969155
## [6,] -0.7284779 -0.7474894 -0.48323912 -0.4472275
## cluster
## [1,] 3
## [2,] 1
## [3,] 1
## [4,] 2
## [5,] 1
## [6,] 1
df_final <- cbind(df1_clusters, entidad = df$entidad)
La técnica de clustering permite identificar patrones o grupos naturales en los datos sin necesidad de etiquetas previas. De esta manera se identificaron patrones entre las distintas entidades en cuanto al uso y desempeño del transporte público. Se encontró que la Ciudad de México tiene un usoo mucho mayor a las otras entidades. Por otro lado, Guanajuato y Querétaro tienen una demanda menor. Finalmente Chihuahua, Edo. de México, Guerrero, Hidalgo, Jalisco, Nuevo León y Puebla tienen un uso del transporte público similar.