data("USArrests")
# summary(USArrests)
# Revisar presencia de datos anormales
boxplot(USArrests)
# Se determinó que hay datos anormales en Rape (Fuera del límite superior), pero
# no se eliminarán al ser muy cercanos a los demás datos.
# Paso 1. Normalizar variables
bd1 <- USArrests
bd1 <- as.data.frame(scale(USArrests))
# Paso 2. k-means Clustering
segmentos <- kmeans(bd1, 4)
segmentos
## K-means clustering with 4 clusters of sizes 13, 13, 16, 8
##
## Cluster means:
## Murder Assault UrbanPop Rape
## 1 -0.9615407 -1.1066010 -0.9301069 -0.96676331
## 2 0.6950701 1.0394414 0.7226370 1.27693964
## 3 -0.4894375 -0.3826001 0.5758298 -0.26165379
## 4 1.4118898 0.8743346 -0.8145211 0.01927104
##
## Clustering vector:
## Alabama Alaska Arizona Arkansas California
## 4 2 2 4 2
## Colorado Connecticut Delaware Florida Georgia
## 2 3 3 2 4
## Hawaii Idaho Illinois Indiana Iowa
## 3 1 2 3 1
## Kansas Kentucky Louisiana Maine Maryland
## 3 1 4 1 2
## Massachusetts Michigan Minnesota Mississippi Missouri
## 3 2 1 4 2
## Montana Nebraska Nevada New Hampshire New Jersey
## 1 1 2 1 3
## New Mexico New York North Carolina North Dakota Ohio
## 2 2 4 1 3
## Oklahoma Oregon Pennsylvania Rhode Island South Carolina
## 3 3 3 3 4
## South Dakota Tennessee Texas Utah Vermont
## 1 4 2 3 1
## Virginia Washington West Virginia Wisconsin Wyoming
## 3 3 1 1 3
##
## Within cluster sum of squares by cluster:
## [1] 11.952463 19.922437 16.212213 8.316061
## (between_SS / total_SS = 71.2 %)
##
## Available components:
##
## [1] "cluster" "centers" "totss" "withinss" "tot.withinss"
## [6] "betweenss" "size" "iter" "ifault"
asignacion <- cbind(USArrests, cluster = segmentos$cluster)
head(asignacion, 10)
## Murder Assault UrbanPop Rape cluster
## Alabama 13.2 236 58 21.2 4
## Alaska 10.0 263 48 44.5 2
## Arizona 8.1 294 80 31.0 2
## Arkansas 8.8 190 50 19.5 4
## California 9.0 276 91 40.6 2
## Colorado 7.9 204 78 38.7 2
## Connecticut 3.3 110 77 11.1 3
## Delaware 5.9 238 72 15.8 3
## Florida 15.4 335 80 31.9 2
## Georgia 17.4 211 60 25.8 4
write.csv(asignacion, "datos_con_cluster.csv")
# install.packages("factoextra")
library(factoextra)
## Loading required package: ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
fviz_cluster(segmentos, data = bd1,
palette=c("red", "blue", "black", "darkgreen"),
ellipse.type = "euclid",
star.plot = T,
repel = T,
ggtheme = theme())
# install.packages("cluster")
library(cluster)
library(data.table)
set.seed(123)
optimizacion <- clusGap (bd1, FUN = kmeans, nstart =25, K.max = 10, B = 50)
plot(optimizacion, xlab = "Numero de clusters k")
Después de realizar el análisis y haber separado por Clusters, podemos ver que losl lugar más inseguros en USA son el cuadrante 2 y de ahi destaca California y el cuadrante 1 es donde podemos encontrar los lugares más seguros destacando a Missisipi con mayor seguridad. Lo que es necesario buscar estrategias como más vigilancia, centros de prevención, control de migrantes para poder diminuir la inseguridad.