Estos datos son el resultado de un análisis de la industria de — en México.
#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 de optimización de número de clusters
library(factoextra)
df1_restaurantes <- read.csv("/Users/humbertocs/Desktop/Tec/Concentración IA/M2_Programacion R IA/Mexico/denue_00_72_1_csv/conjunto_de_datos/denue_inegi_72_1.csv")
df2_restaurantes <- read.csv("/Users/humbertocs/Desktop/Tec/Concentración IA/M2_Programacion R IA/Mexico/denue_00_72_2_csv/conjunto_de_datos/denue_inegi_72_2.csv")
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:data.table':
##
## between, first, last
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
df_restaurantes <- bind_rows(df1_restaurantes, df2_restaurantes)
unique(df_restaurantes$entidad)
## [1] "Aguascalientes" "Baja California"
## [3] "Baja California Sur" "Campeche"
## [5] "Coahuila de Zaragoza" "Colima"
## [7] "Chiapas" "Chihuahua"
## [9] "Ciudad de M\xe9xico" "Durango"
## [11] "Guanajuato" "Guerrero"
## [13] "Hidalgo" "Jalisco"
## [15] "M\xe9xico" "Michoac\xe1n de Ocampo"
## [17] "Morelos" "Nayarit"
## [19] "Nuevo Le\xf3n" "Oaxaca"
## [21] "Puebla" "Quer\xe9taro"
## [23] "Quintana Roo" "San Luis Potos\xed"
## [25] "Sinaloa" "Sonora"
## [27] "Tabasco" "Tamaulipas"
## [29] "Tlaxcala" "Veracruz de Ignacio de la Llave"
## [31] "Yucat\xe1n" "Zacatecas"
library(stringi)
library(stringr)
df_restaurantes <- df_restaurantes %>%
mutate(entidad = stri_trans_general(entidad, "Latin-ASCII"),
entidad = str_to_title(entidad))
unique(df_restaurantes$entidad)
## [1] "Aguascalientes" "Baja California"
## [3] "Baja California Sur" "Campeche"
## [5] "Coahuila De Zaragoza" "Colima"
## [7] "Chiapas" "Chihuahua"
## [9] "Ciudad De M�Xico" "Durango"
## [11] "Guanajuato" "Guerrero"
## [13] "Hidalgo" "Jalisco"
## [15] "M�Xico" "Michoac�N De Ocampo"
## [17] "Morelos" "Nayarit"
## [19] "Nuevo Le�N" "Oaxaca"
## [21] "Puebla" "Quer�Taro"
## [23] "Quintana Roo" "San Luis Potos�"
## [25] "Sinaloa" "Sonora"
## [27] "Tabasco" "Tamaulipas"
## [29] "Tlaxcala" "Veracruz De Ignacio De La Llave"
## [31] "Yucat�N" "Zacatecas"
library(dplyr)
df_restaurantes <- df_restaurantes %>%
mutate(entidad = recode(entidad,
"Coahuila De Zaragoza" = "Coahuila",
"Ciudad De M�Xico" = "Ciudad de México",
"M�Xico" = "México",
"Michoac�N De Ocampo" = "Michoacán",
"Nuevo Le�N" = "Nuevo León",
"Quer�Taro" = "Querétaro",
"San Luis Potos�" = "San Luis Potosí",
"Veracruz De Ignacio De La Llave" = "Veracruz",
"Yucat�N" = "Yucatán"
))
unique(df_restaurantes$nombre_act)
## [1] "Cafeter\xedas, fuentes de sodas, never\xedas, refresquer\xedas y similares"
## [2] "Restaurantes de autoservicio"
## [3] "Hoteles con otros servicios integrados"
## [4] "Restaurantes con servicio de preparaci\xf3n de alimentos a la carta o de comida corrida"
## [5] "Bares, cantinas y similares"
## [6] "Restaurantes con servicio de preparaci\xf3n de antojitos"
## [7] "Restaurantes con servicio de preparaci\xf3n de tacos y tortas"
## [8] "Centros nocturnos, discotecas y similares"
## [9] "Restaurantes que preparan otro tipo de alimentos para llevar"
## [10] "Restaurantes con servicio de preparaci\xf3n de pizzas, hamburguesas, hot dogs y pollos rostizados para llevar"
## [11] "Servicios de preparaci\xf3n de alimentos para ocasiones especiales"
## [12] "Restaurantes con servicio de preparaci\xf3n de pescados y mariscos"
## [13] "Servicios de preparaci\xf3n de otros alimentos para consumo inmediato"
## [14] "Servicios de comedor para empresas e instituciones"
## [15] "Hoteles sin otros servicios integrados"
## [16] "Departamentos y casas amueblados con servicios de hoteler\xeda"
## [17] "Moteles"
## [18] "Servicios de preparaci\xf3n de alimentos en unidades m\xf3viles"
## [19] "Caba\xf1as, villas y similares"
## [20] "Pensiones y casas de hu\xe9spedes"
## [21] "Campamentos y albergues recreativos"
cafeterias <- df_restaurantes %>%
filter(nombre_act == "Cafeter\xedas, fuentes de sodas, never\xedas, refresquer\xedas y similares")
cafeterias_NL <- cafeterias %>%
filter(entidad == "Nuevo Le�N")
cafeterias_por_estado <- cafeterias %>%
group_by(entidad) %>%
summarise(total_cafeterias = n(), .groups = "drop")
summary(cafeterias_por_estado)
## entidad total_cafeterias
## Length:32 Min. : 549
## Class :character 1st Qu.: 1346
## Mode :character Median : 2109
## Mean : 2917
## 3rd Qu.: 3557
## Max. :13156
str(cafeterias_por_estado)
## tibble [32 × 2] (S3: tbl_df/tbl/data.frame)
## $ entidad : chr [1:32] "Aguascalientes" "Baja California" "Baja California Sur" "Campeche" ...
## $ total_cafeterias: int [1:32] 1349 3097 1310 549 2406 1889 9797 1488 885 1119 ...
# Sólo si no estan en la misma escala
datos_escalados <- scale(cafeterias_por_estado$total_cafeterias)
# Siempre es un valor inicial "cualquiera", luego se optimiza.
grupos1 <- 3
set.seed(123)
clusters1 <- kmeans(datos_escalados, grupos1)
clusters1
## K-means clustering with 3 clusters of sizes 22, 2, 8
##
## Cluster means:
## [,1]
## 1 -0.4927850
## 2 3.1708624
## 3 0.5624431
##
## Clustering vector:
## [1] 1 3 1 1 1 1 2 1 1 1 3 1 1 3 3 1 2 1 3 3 3 1 1 1 1 1 1 1 1 3 1 1
##
## Within cluster sum of squares by cluster:
## [1] 0.7638714 0.7742134 1.4800248
## (between_SS / total_SS = 90.3 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
set.seed(123)
optimizacion1 <- clusGap(datos_escalados, FUN=kmeans, nstart = 1, K.max=10)
# EL K means normalmente es 10, en este ejercicio al ser 8 datos, se dejó en 7.
plot(optimizacion1, xlab="Número de clústers k")
# Selecciona como óptimo el primer punto más alto
# Similar a la técnica del codo pero esta es más notable
#fviz_cluster(datos_escalados, data=coords_rest)
df1_cluster <- cbind(cafeterias_por_estado, cluster = clusters1$cluster)
head(df1_cluster)
## entidad total_cafeterias cluster
## 1 Aguascalientes 1349 1
## 2 Baja California 3097 3
## 3 Baja California Sur 1310 1
## 4 Campeche 549 1
## 5 Chiapas 2406 1
## 6 Chihuahua 1889 1