Instalar paquetes y llamar librerias
#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áfic optimización de numero de clusters
library(factoextra)
#install.packages("tidyverse")
# install.packages("dplyr")
library(dplyr)
# install.packages("tibble")
library(tibble)
# install.packages("forcats")
library(forcats)
#install.packages("tidyverse")
library(tidyverse)
library(tibble)
library(dplyr)
library(ggplot2)
library(forcats)
#install.packages("tibble")
#install.packages("dplyr")
#install.packages("ggplot2")
#install.packages("forcats")
Paso1. Datos de obesidad por estado
## ==Datos (aproximados ENSANUT adultos ≥20 años) ==
datos <- tribble(
~estado, ~obesidad,
"Aguascalientes", 35,
"Baja California", 37,
"Baja California Sur", 35,
"Campeche", 41,
"Coahuila", 38,
"Colima", 36,
"Chiapas", 31,
"Chihuahua", 38,
"Ciudad de México", 36,
"Durango", 36,
"Guanajuato", 35,
"Guerrero", 32,
"Hidalgo", 34,
"Jalisco", 36,
"México", 37,
"Michoacán", 34,
"Morelos", 35,
"Nayarit", 36,
"Nuevo León", 40,
"Oaxaca", 32,
"Puebla", 35,
"Querétaro", 36,
"Quintana Roo", 37,
"San Luis Potosí", 35,
"Sinaloa", 36,
"Sonora", 38,
"Tabasco", 42,
"Tamaulipas", 40,
"Tlaxcala", 34,
"Veracruz", 37,
"Yucatán", 41,
"Zacatecas", 35
) |>
arrange(desc(obesidad))
## Vista rápida
head(datos, 5)
## # A tibble: 5 × 2
## estado obesidad
## <chr> <dbl>
## 1 Tabasco 42
## 2 Campeche 41
## 3 Yucatán 41
## 4 Nuevo León 40
## 5 Tamaulipas 40
Paso2. Definir número de clusters y
kmeans
set.seed(123)
k <- 3
x <- scale(datos$obesidad)
km <- kmeans(x, centers = k, nstart = 25)
res <- datos %>%
mutate(cluster = factor(km$cluster))
Paso3. Resumen por cluster
resumen <- res %>%
group_by(cluster) %>%
summarise(
estados = paste(estado, collapse = ", "),
cantidad = n(),
promedio_obesidad = round(mean(obesidad), 1),
min = round(min(obesidad), 1),
max = round(max(obesidad), 1),
.groups = "drop"
)
Paso4. Gráfica de barrasr
res %>%
mutate(estado = fct_reorder(estado, obesidad)) %>%
ggplot(aes(x = estado, y = obesidad, fill = cluster)) +
geom_col() +
coord_flip() +
labs(title = paste0("Obesidad por estado (%) y clusters (k = ", k, ")"),
x = NULL, y = "% obesidad", fill = "Cluster")
# Paso5. Tabla final ordenada
knitr::kable(
res %>% arrange(cluster, desc(obesidad)),
col.names = c("Estado", "% Obesidad", "Cluster")
)
| Coahuila |
38 |
1 |
| Chihuahua |
38 |
1 |
| Sonora |
38 |
1 |
| Baja California |
37 |
1 |
| México |
37 |
1 |
| Quintana Roo |
37 |
1 |
| Veracruz |
37 |
1 |
| Colima |
36 |
1 |
| Ciudad de México |
36 |
1 |
| Durango |
36 |
1 |
| Jalisco |
36 |
1 |
| Nayarit |
36 |
1 |
| Querétaro |
36 |
1 |
| Sinaloa |
36 |
1 |
| Aguascalientes |
35 |
1 |
| Baja California Sur |
35 |
1 |
| Guanajuato |
35 |
1 |
| Morelos |
35 |
1 |
| Puebla |
35 |
1 |
| San Luis Potosí |
35 |
1 |
| Zacatecas |
35 |
1 |
| Tabasco |
42 |
2 |
| Campeche |
41 |
2 |
| Yucatán |
41 |
2 |
| Nuevo León |
40 |
2 |
| Tamaulipas |
40 |
2 |
| Hidalgo |
34 |
3 |
| Michoacán |
34 |
3 |
| Tlaxcala |
34 |
3 |
| Guerrero |
32 |
3 |
| Oaxaca |
32 |
3 |
| Chiapas |
31 |
3 |
Paso6. Conclusiones
Dentro de estos codigos mostramos 3 cluster que se diferencía por
alto medio y bajo y separa a los estados depende de como esten sus
porcentajes, mostrando así claras diferencias entre ellos.
LS0tCnRpdGxlOiAiTcOpeGljbyIKYXV0aG9yOiAiWGltZW5hIEJvbGHDsW9zIgpkYXRlOiAiMjAyNS0wOC0xOSIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6IAogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRSVUUKICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUgCiAgICB0aGVtZTogeWV0aQotLS0KCiMgPHNwYW4gc3R5bGU9ImNvbG9yOmJsdWU7Ij4gSW5zdGFsYXIgcGFxdWV0ZXMgeSBsbGFtYXIgbGlicmVyaWFzIDwvc3Bhbj4KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KI2luc3RhbGwucGFja2FnZXMoImNsdXN0ZXIiKSAjIEFuw6FsaXNpcyBkZSBBZ3J1cGFtaWVudG8KbGlicmFyeShjbHVzdGVyKQojaW5zdGFsbC5wYWNrYWdlcygiZ2dwbG90MiIpICMgR3JhZmljYXIKbGlicmFyeShnZ3Bsb3QyKQojaW5zdGFsbC5wYWNrYWdlcygiZGF0YS50YWJsZSIpICMgTWFuZWpvIGRlIG11Y2hvcyBkYXRvcwpsaWJyYXJ5KGRhdGEudGFibGUpIAojaW5zdGFsbC5wYWNrYWdlcygiZmFjdG9leHRyYSIpICMgR3LDoWZpYyBvcHRpbWl6YWNpw7NuIGRlIG51bWVybyBkZSBjbHVzdGVycwpsaWJyYXJ5KGZhY3RvZXh0cmEpCiNpbnN0YWxsLnBhY2thZ2VzKCJ0aWR5dmVyc2UiKQojIGluc3RhbGwucGFja2FnZXMoImRwbHlyIikKbGlicmFyeShkcGx5cikKIyBpbnN0YWxsLnBhY2thZ2VzKCJ0aWJibGUiKQpsaWJyYXJ5KHRpYmJsZSkKIyBpbnN0YWxsLnBhY2thZ2VzKCJmb3JjYXRzIikKbGlicmFyeShmb3JjYXRzKQojaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkodGliYmxlKSAgCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShmb3JjYXRzKQojaW5zdGFsbC5wYWNrYWdlcygidGliYmxlIikKI2luc3RhbGwucGFja2FnZXMoImRwbHlyIikKI2luc3RhbGwucGFja2FnZXMoImdncGxvdDIiKQojaW5zdGFsbC5wYWNrYWdlcygiZm9yY2F0cyIpCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZTsiPiBQYXNvMS4gRGF0b3MgZGUgb2Jlc2lkYWQgcG9yIGVzdGFkbyA8L3NwYW4+CgpgYGB7cn0KIyMgPT1EYXRvcyAoYXByb3hpbWFkb3MgRU5TQU5VVCBhZHVsdG9zIOKJpTIwIGHDsW9zKSA9PQpkYXRvcyA8LSB0cmliYmxlKAogIH5lc3RhZG8sICAgICAgICAgICAgICB+b2Jlc2lkYWQsCiAgIkFndWFzY2FsaWVudGVzIiwgICAgICAzNSwKICAiQmFqYSBDYWxpZm9ybmlhIiwgICAgIDM3LAogICJCYWphIENhbGlmb3JuaWEgU3VyIiwgMzUsCiAgIkNhbXBlY2hlIiwgICAgICAgICAgICA0MSwKICAiQ29haHVpbGEiLCAgICAgICAgICAgIDM4LAogICJDb2xpbWEiLCAgICAgICAgICAgICAgMzYsCiAgIkNoaWFwYXMiLCAgICAgICAgICAgICAzMSwKICAiQ2hpaHVhaHVhIiwgICAgICAgICAgIDM4LAogICJDaXVkYWQgZGUgTcOpeGljbyIsICAgIDM2LAogICJEdXJhbmdvIiwgICAgICAgICAgICAgMzYsCiAgIkd1YW5hanVhdG8iLCAgICAgICAgICAzNSwKICAiR3VlcnJlcm8iLCAgICAgICAgICAgIDMyLAogICJIaWRhbGdvIiwgICAgICAgICAgICAgMzQsCiAgIkphbGlzY28iLCAgICAgICAgICAgICAzNiwKICAiTcOpeGljbyIsICAgICAgICAgICAgICAzNywgICAKICAiTWljaG9hY8OhbiIsICAgICAgICAgICAzNCwKICAiTW9yZWxvcyIsICAgICAgICAgICAgIDM1LAogICJOYXlhcml0IiwgICAgICAgICAgICAgMzYsCiAgIk51ZXZvIExlw7NuIiwgICAgICAgICAgNDAsCiAgIk9heGFjYSIsICAgICAgICAgICAgICAzMiwKICAiUHVlYmxhIiwgICAgICAgICAgICAgIDM1LAogICJRdWVyw6l0YXJvIiwgICAgICAgICAgIDM2LAogICJRdWludGFuYSBSb28iLCAgICAgICAgMzcsCiAgIlNhbiBMdWlzIFBvdG9zw60iLCAgICAgMzUsCiAgIlNpbmFsb2EiLCAgICAgICAgICAgICAzNiwKICAiU29ub3JhIiwgICAgICAgICAgICAgIDM4LAogICJUYWJhc2NvIiwgICAgICAgICAgICAgNDIsCiAgIlRhbWF1bGlwYXMiLCAgICAgICAgICA0MCwKICAiVGxheGNhbGEiLCAgICAgICAgICAgIDM0LAogICJWZXJhY3J1eiIsICAgICAgICAgICAgMzcsCiAgIll1Y2F0w6FuIiwgICAgICAgICAgICAgNDEsCiAgIlphY2F0ZWNhcyIsICAgICAgICAgICAzNQopIHw+CiAgYXJyYW5nZShkZXNjKG9iZXNpZGFkKSkKCiMjIFZpc3RhIHLDoXBpZGEKaGVhZChkYXRvcywgNSkKYGBgCgojIDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlOyI+IFBhc28yLiBEZWZpbmlyIG7Dum1lcm8gZGUgY2x1c3RlcnMgeSBrbWVhbnMgPC9zcGFuPgoKYGBge3J9CnNldC5zZWVkKDEyMykKayA8LSAzCnggPC0gc2NhbGUoZGF0b3Mkb2Jlc2lkYWQpCgprbSA8LSBrbWVhbnMoeCwgY2VudGVycyA9IGssIG5zdGFydCA9IDI1KQoKcmVzIDwtIGRhdG9zICU+JQogIG11dGF0ZShjbHVzdGVyID0gZmFjdG9yKGttJGNsdXN0ZXIpKQoKYGBgCgojIDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlOyI+IFBhc28zLiBSZXN1bWVuIHBvciBjbHVzdGVyIDwvc3Bhbj4KCmBgYHtyfQpyZXN1bWVuIDwtIHJlcyAlPiUKICBncm91cF9ieShjbHVzdGVyKSAlPiUKICBzdW1tYXJpc2UoCiAgICBlc3RhZG9zID0gcGFzdGUoZXN0YWRvLCBjb2xsYXBzZSA9ICIsICIpLAogICAgY2FudGlkYWQgPSBuKCksCiAgICBwcm9tZWRpb19vYmVzaWRhZCA9IHJvdW5kKG1lYW4ob2Jlc2lkYWQpLCAxKSwKICAgIG1pbiA9IHJvdW5kKG1pbihvYmVzaWRhZCksIDEpLAogICAgbWF4ID0gcm91bmQobWF4KG9iZXNpZGFkKSwgMSksCiAgICAuZ3JvdXBzID0gImRyb3AiCiAgKQoKYGBgCgojIDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlOyI+IFBhc280LiBHcsOhZmljYSBkZSBiYXJyYXNyIDwvc3Bhbj4KCmBgYHtyfQpyZXMgJT4lCiAgbXV0YXRlKGVzdGFkbyA9IGZjdF9yZW9yZGVyKGVzdGFkbywgb2Jlc2lkYWQpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBlc3RhZG8sIHkgPSBvYmVzaWRhZCwgZmlsbCA9IGNsdXN0ZXIpKSArCiAgZ2VvbV9jb2woKSArCiAgY29vcmRfZmxpcCgpICsKICBsYWJzKHRpdGxlID0gcGFzdGUwKCJPYmVzaWRhZCBwb3IgZXN0YWRvICglKSB5IGNsdXN0ZXJzIChrID0gIiwgaywgIikiKSwKICAgICAgIHggPSBOVUxMLCB5ID0gIiUgb2Jlc2lkYWQiLCBmaWxsID0gIkNsdXN0ZXIiKQpgYGAKIyA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZTsiPiBQYXNvNS4gVGFibGEgZmluYWwgb3JkZW5hZGEgPC9zcGFuPgoKYGBge3J9CmtuaXRyOjprYWJsZSgKICByZXMgJT4lIGFycmFuZ2UoY2x1c3RlciwgZGVzYyhvYmVzaWRhZCkpLAogIGNvbC5uYW1lcyA9IGMoIkVzdGFkbyIsICIlIE9iZXNpZGFkIiwgIkNsdXN0ZXIiKQopCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZTsiPiBQYXNvNi4gQ29uY2x1c2lvbmVzIDwvc3Bhbj4KCkRlbnRybyBkZSBlc3RvcyBjb2RpZ29zIG1vc3RyYW1vcyAzIGNsdXN0ZXIgcXVlIHNlIGRpZmVyZW5jw61hIHBvciBhbHRvIG1lZGlvIHkgYmFqbyB5IHNlcGFyYSBhIGxvcyBlc3RhZG9zIGRlcGVuZGUgZGUgY29tbyBlc3RlbiBzdXMgcG9yY2VudGFqZXMsIG1vc3RyYW5kbyBhc8OtIGNsYXJhcyBkaWZlcmVuY2lhcyBlbnRyZSBlbGxvcy4=