bd <- read.csv("/Users/Karen/Downloads/USArrests.csv")
summary (bd)
## X Murder Assault UrbanPop
## Length:50 Min. : 0.800 Min. : 45.0 Min. :32.00
## Class :character 1st Qu.: 4.075 1st Qu.:109.0 1st Qu.:54.50
## Mode :character Median : 7.250 Median :159.0 Median :66.00
## Mean : 7.788 Mean :170.8 Mean :65.54
## 3rd Qu.:11.250 3rd Qu.:249.0 3rd Qu.:77.75
## Max. :17.400 Max. :337.0 Max. :91.00
## Rape
## Min. : 7.30
## 1st Qu.:15.07
## Median :20.10
## Mean :21.23
## 3rd Qu.:26.18
## Max. :46.00
## Agregar el X como nombre de los renglones
bd2 <- bd
rownames(bd2)<- bd2$X
summary(bd2)
## X Murder Assault UrbanPop
## Length:50 Min. : 0.800 Min. : 45.0 Min. :32.00
## Class :character 1st Qu.: 4.075 1st Qu.:109.0 1st Qu.:54.50
## Mode :character Median : 7.250 Median :159.0 Median :66.00
## Mean : 7.788 Mean :170.8 Mean :65.54
## 3rd Qu.:11.250 3rd Qu.:249.0 3rd Qu.:77.75
## Max. :17.400 Max. :337.0 Max. :91.00
## Rape
## Min. : 7.30
## 1st Qu.:15.07
## Median :20.10
## Mean :21.23
## 3rd Qu.:26.18
## Max. :46.00
## Eliminar la columna de X
bd3 <- bd2
bd3 <- subset (bd3, select = -c (X))
summary(bd3)
## Murder Assault UrbanPop Rape
## Min. : 0.800 Min. : 45.0 Min. :32.00 Min. : 7.30
## 1st Qu.: 4.075 1st Qu.:109.0 1st Qu.:54.50 1st Qu.:15.07
## Median : 7.250 Median :159.0 Median :66.00 Median :20.10
## Mean : 7.788 Mean :170.8 Mean :65.54 Mean :21.23
## 3rd Qu.:11.250 3rd Qu.:249.0 3rd Qu.:77.75 3rd Qu.:26.18
## Max. :17.400 Max. :337.0 Max. :91.00 Max. :46.00
#Dispersión
require(graphics)
pairs(bd3, panel = panel.smooth, main = "USArrests")
#Correlación
#library(shiny)
#ui <- fluidPage(
#selectInput("Arrest","Arrest",choices = names(bd3)),
#plotOutput("myplot"))
#server <- function(input, output, session) {
#output$myplot <- renderPlot({
#plot(Murder ~ get(input$Arrest) , data=bd3)
#})
#}
#shinyApp(ui, server)
#Boxplot por categoría de arresto
boxplot(bd3)
#Se determinó que hay datos anormales en Rape (Fuera del límite superior), pero no se eliminaran al ser muy cercanos a los demás datos.
Paso 1. Definir el area del negocio que buscamos impactar o mejorar y su KPI
El departamento de seguridad ciudadana en el indicador de crimen por estado en USA
Paso 2. Seleccionar plantilla (-s) para crear valor a partir de los datos de los clientes
Visión / Segmentación / Personalización / Contextualización
Paso 3. Generar ideas o conceptos especificos
Elaborar una segmentacion de clusters de la base de datos (USArrests)
Paso 4. Reunir los datos requeridos
Desarrollar segmentos con la funcion de k means clustering para agrupar los datos de arrestos y crimenes en los estados de USA
Paso 5. Plan de ejecucion
Seguridad ciudadana elaborará un plan de disminución de crimenes por estado
Sistemas asegurará la captura del markdown en las bases de datos
bd4 <- bd3
bd4 <- as.data.frame(scale(bd4))
segmentos <- kmeans(bd4, 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(bd3, 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,"clientes_segmentados.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 = bd4,
palette=c("#8B3A3A", "#CD5555", "#EEA2AD", "red"),
ellipse.type = "euclid",
star.plot = T,
repel = T,
ggtheme = theme())
library(cluster)
library(data.table)
set.seed(123)
optimizacion <- clusGap(bd4, FUN = kmeans, nstart = 25, K.max = 10, B = 50)
plot(optimizacion, xlab = "Numero de clusters k")
library(factoextra)
library(ggplot2)
set.seed(123)
crime <- sample(1:50,10)
wss <- sapply(1:crime,
function(k){kmeans(bd3, k, nstart=20,iter.max = 15 )$tot.withinss})
## Warning in 1:crime: numerical expression has 10 elements: only the first used
plot(1:crime, wss,
type="b", pch = 19, frame = FALSE,
xlab= "Número de clusters",
ylab= "Suma de cuadrados dentro del total de clusters")
## Warning in 1:crime: numerical expression has 10 elements: only the first used
fviz_nbclust(bd3, kmeans, method = 'wss') +
geom_vline(xintercept = 4, linetype=5, col= "red")
A través de esta herramienta, cargamos una base de datos en la nube, con la finalidad de crear una segmentación de mercado a partir de clusters, de los arrestos en Estados Unidos. Primero normalizamos las variables, y despues visualizamos los segmentos con ayuda de la libreria factoextra, agrupando por estado y categoría de arresto en Estados Unidos.
De esta forma, encontramos que el conjunto de datos muestra los arrestos por cada 100,000 residentes clasificados por asalto, asesinato y violación en cada uno de los 50 estados de Estados Unidos; esto con el objetivo de observar si existía alguna dependencia entre el estado adquirido y el historial de arrestos. Demostrando de esta manera que, existen estados más inseguros que otros para la población en general.
Se pudo identificar gracias a la segmentación por clusters, que los estados mas seguros son los que se encuentran al norte de Estados Unidos, siendo estos: Vermont, West Virginia, Minnesota, entre otros. Mientras que los estados con mayor cantidad de arrestos, delitos e inseguridad de forma consecuente, son algunos en el sur de Estados Unidos, como: California, Florida, Mississippi, entre otros. Todos estos pueden ser visualizados en el mapa que se presenta a continuación:
Por lo que, el departamento de seguridad ciudadana, ahora podrá comenzar a ejecutar el nuevo plan de disminución de crimenes, principalmente en el sur del país, para garantizar la vivencia sana de toda la población.