ANALISIS EXPLORATORIO DE DATOS DE DELITOS EN ECUADOR
library(readxl)
library(knitr)
library(tidyverse)
library(lubridate) #transformación de los datos a fecha
library(corrplot)
library(extrafont)
library(viridis)
library(ggplot2)
library(dplyr)Introducción
El siguiente análisis de datos trata sobre las incidencias de delitos presentadas en diferentes regiones de Ecuador durante el año 2013. Analizaremos a fondo cada una de las variables que consideremos de importancia para obtener información consistente y precisa, como por ejemplo el tipo de robo que se comete, en que lugares es más frecuente, los dias en que más se presentan los robos y quienes son los que más han sido afectados por estos. Para ello vamos a llevar a cabo un análisis exploratorio de datos siguiendo una metodologia cronológica, donde podamos manipular y representar cada varible que nos pueda arrojar información relevante.
Objetivos
Lo que se pretende con este analisis es buscar alternativas que puedan ayudar a disminuir la delincuencia en este pais. Por eso es importante llevar acabo un analisis exploratorio de los datos obtenidos y poder sacar nuestras conclusiones. Nos apoyaremos de representaciones gráficas visuales y tablas que nos permitan comprender mejor nuestro análisis.
library(readr)
Analisis_Delincuencia_Base_datos <- read_csv("Analisis_Delincuencia_Base_datos.csv")
View(Analisis_Delincuencia_Base_datos)
str(Analisis_Delincuencia_Base_datos)## spec_tbl_df [21,004 × 45] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ cod_delito : chr [1:21004] "2013.1m" "2013.3m" "2013.4m" "2013.5m" ...
## $ zona_senplades : chr [1:21004] "ZONA 8" "ZONA 8" "ZONA 8" "ZONA 8" ...
## $ provincia : chr [1:21004] "DMG" "DMG" "DMG" "DMG" ...
## $ canton : chr [1:21004] "GUAYAQUIL" "GUAYAQUIL" "GUAYAQUIL" "GUAYAQUIL" ...
## $ cod_subcircuito : chr [1:21004] "09D07C07S02" "09D09C02S02" "09D02C04S02" "09D07C07S04" ...
## $ distrito : chr [1:21004] "PASCUALES" "CEIBOS" "ESTEROS" "PASCUALES" ...
## $ circuito : chr [1:21004] "SAN FRANCISCO" "PUERTO HONDO" "ISLA TRINITARIA NORTE" "SAN FRANCISCO" ...
## $ subcircuito : chr [1:21004] "SAN FRANCISCO 2" "PUERTO HONDO 2" "TRINITARIA NORTE 2" "SAN FRANCISCO 4" ...
## $ sector : num [1:21004] 1 1 1 1 1 1 1 1 1 1 ...
## $ zona : chr [1:21004] "ZONA URBANA" "ZONA URBANA" "ZONA URBANA" "ZONA RURAL" ...
## $ f_registro : chr [1:21004] "2/1/2013" "6/1/2013" "6/1/2013" "12/1/2013" ...
## $ hora_registro : 'hms' num [1:21004] 01:20:00 09:45:00 23:30:00 16:50:00 ...
## ..- attr(*, "units")= chr "secs"
## $ f_infraccion : chr [1:21004] "1/1/2013" "6/1/2013" "6/1/2013" "12/1/2013" ...
## $ semana : num [1:21004] 1 1 1 2 2 2 3 3 3 3 ...
## $ semanas 2 : chr [1:21004] "01 ene 06 ene" "01 ene 06 ene" "01 ene 06 ene" "07 ene 13 ene" ...
## $ año_infraccion : num [1:21004] 2013 2013 2013 2013 2013 ...
## $ mes_infraccion : chr [1:21004] "enero" "enero" "enero" "enero" ...
## $ hora_infraccion : chr [1:21004] "A DETERMINARSE" "A DETERMINARSE" "22:00:00" "A DETERMINARSE" ...
## $ dia_infraccion : chr [1:21004] "martes" "domingo" "domingo" "sAbado" ...
## $ rango_ : chr [1:21004] "DESCONOCIDA" "DESCONOCIDA" "22:00 a 22:59" "DESCONOCIDA" ...
## $ dia_mes : num [1:21004] 1 6 6 12 13 12 16 17 17 18 ...
## $ fuente : chr [1:21004] "DINASED" "DINASED" "DINASED" "DINASED" ...
## $ t_delito_pj : logi [1:21004] NA NA NA NA NA NA ...
## $ delito_pj : chr [1:21004] "ASESINATO" "ASESINATO" "ASESINATO" "ASESINATO" ...
## $ cmi : chr [1:21004] "HOMICIDIOS/ASESINATOS" "HOMICIDIOS/ASESINATOS" "HOMICIDIOS/ASESINATOS" "HOMICIDIOS/ASESINATOS" ...
## $ modus_operandi : chr [1:21004] NA NA NA NA ...
## $ arma_utilizada : chr [1:21004] "ARMA BLANCA" "ARMA BLANCA" "ARMA DE FUEGO" "ARMA DE FUEGO" ...
## $ t_agresion : logi [1:21004] NA NA NA NA NA NA ...
## $ lugar_infraccion : logi [1:21004] NA NA NA NA NA NA ...
## $ condicion_lugar : logi [1:21004] NA NA NA NA NA NA ...
## $ quien_comete_delito : logi [1:21004] NA NA NA NA NA NA ...
## $ veh_utilizado : logi [1:21004] NA NA NA NA NA NA ...
## $ veh_color : logi [1:21004] NA NA NA NA NA NA ...
## $ veh_marca : logi [1:21004] NA NA NA NA NA NA ...
## $ modelo : logi [1:21004] NA NA NA NA NA NA ...
## $ victima_denunciante : logi [1:21004] NA NA NA NA NA NA ...
## $ vd_apellidos_nombres : chr [1:21004] "ZANABRIA CASTRO JACINTO MANUEL" "CRUZ QUINDE ALFONSO MOISES" "ARROYO GARCIA RUBEN DAVID" "RIVAS JIMENEZ ROMULO GERMAN" ...
## $ vd_sexo : chr [1:21004] "MASCULINO" "MASCULINO" "MASCULINO" "MASCULINO" ...
## $ vd_edad : num [1:21004] 36 24 20 72 23 36 41 38 28 46 ...
## $ vd_estado_civil : chr [1:21004] "SOLTERO" "SOLTERO" "UNION DE HECHO" "UNION DE HECHO" ...
## $ vd_nacionalidad : chr [1:21004] "ECUATORIANA" "ECUATORIANA" "ECUATORIANA" "ECUATORIANA" ...
## $ vd_etnia : chr [1:21004] "MESTIZA" "MESTIZA" "AFRO_ECUATORIANA" "MESTIZA" ...
## $ vd_profesion_ocupacion: chr [1:21004] "COCINERO" "EMPLEADO" "SE DESCONOCE" "COMERCIANTE" ...
## $ vd_actividad : chr [1:21004] "TIENE_TRABAJO_O_NEGOCIO" "TIENE_TRABAJO_O_NEGOCIO" "SIN_DATO" "TIENE_TRABAJO_O_NEGOCIO" ...
## $ vd_instrucciOn : chr [1:21004] "PRIMARIA" "PRIMARIA" "PRIMARIA" "PRIMARIA" ...
## - attr(*, "spec")=
## .. cols(
## .. cod_delito = col_character(),
## .. zona_senplades = col_character(),
## .. provincia = col_character(),
## .. canton = col_character(),
## .. cod_subcircuito = col_character(),
## .. distrito = col_character(),
## .. circuito = col_character(),
## .. subcircuito = col_character(),
## .. sector = col_double(),
## .. zona = col_character(),
## .. f_registro = col_character(),
## .. hora_registro = col_time(format = ""),
## .. f_infraccion = col_character(),
## .. semana = col_double(),
## .. `semanas 2` = col_character(),
## .. año_infraccion = col_double(),
## .. mes_infraccion = col_character(),
## .. hora_infraccion = col_character(),
## .. dia_infraccion = col_character(),
## .. rango_ = col_character(),
## .. dia_mes = col_double(),
## .. fuente = col_character(),
## .. t_delito_pj = col_logical(),
## .. delito_pj = col_character(),
## .. cmi = col_character(),
## .. modus_operandi = col_character(),
## .. arma_utilizada = col_character(),
## .. t_agresion = col_logical(),
## .. lugar_infraccion = col_logical(),
## .. condicion_lugar = col_logical(),
## .. quien_comete_delito = col_logical(),
## .. veh_utilizado = col_logical(),
## .. veh_color = col_logical(),
## .. veh_marca = col_logical(),
## .. modelo = col_logical(),
## .. victima_denunciante = col_logical(),
## .. vd_apellidos_nombres = col_character(),
## .. vd_sexo = col_character(),
## .. vd_edad = col_double(),
## .. vd_estado_civil = col_character(),
## .. vd_nacionalidad = col_character(),
## .. vd_etnia = col_character(),
## .. vd_profesion_ocupacion = col_character(),
## .. vd_actividad = col_character(),
## .. vd_instrucciOn = col_character()
## .. )
## - attr(*, "problems")=<externalptr>
#summary(Analisis_Delincuencia_Base_datos)Segun los resultados obtenidos, las principales caracteristicas que presenta la tabla son los siguientes: El total de observaciones del conjunto de datos es 21004, el numero total de variables es 45.
Seleccionamos las variables con las que vamos a trabajar
#Dim (Analisis_Delincuencia_Base_datos)
colnames(Analisis_Delincuencia_Base_datos)## [1] "cod_delito" "zona_senplades" "provincia"
## [4] "canton" "cod_subcircuito" "distrito"
## [7] "circuito" "subcircuito" "sector"
## [10] "zona" "f_registro" "hora_registro"
## [13] "f_infraccion" "semana" "semanas 2"
## [16] "año_infraccion" "mes_infraccion" "hora_infraccion"
## [19] "dia_infraccion" "rango_" "dia_mes"
## [22] "fuente" "t_delito_pj" "delito_pj"
## [25] "cmi" "modus_operandi" "arma_utilizada"
## [28] "t_agresion" "lugar_infraccion" "condicion_lugar"
## [31] "quien_comete_delito" "veh_utilizado" "veh_color"
## [34] "veh_marca" "modelo" "victima_denunciante"
## [37] "vd_apellidos_nombres" "vd_sexo" "vd_edad"
## [40] "vd_estado_civil" "vd_nacionalidad" "vd_etnia"
## [43] "vd_profesion_ocupacion" "vd_actividad" "vd_instrucciOn"
Delincuencia<-select(Analisis_Delincuencia_Base_datos, canton,distrito,
circuito, subcircuito, zona, f_registro, hora_registro,
f_infraccion, semana, año_infraccion, mes_infraccion, hora_infraccion,
dia_infraccion, rango_, dia_mes, delito_pj, cmi, modus_operandi,
arma_utilizada, vd_sexo, vd_edad, vd_estado_civil,
vd_nacionalidad, vd_etnia, vd_profesion_ocupacion
)se seleccionaron un total de 25 variables que son de mayor importancia para llevar acabo nuestro analisis de datos y poder obtener resultados que nos permitan cumplir nuestro objetivo.
View(Delincuencia)Las variables que hemos seleccionado se muestran en la siguiente tabla
kable(names(Delincuencia),col.names = c('Variable'), caption = "TABLA 1 :Variables seleccionadas para el análisis.")| Variable |
|---|
| canton |
| distrito |
| circuito |
| subcircuito |
| zona |
| f_registro |
| hora_registro |
| f_infraccion |
| semana |
| año_infraccion |
| mes_infraccion |
| hora_infraccion |
| dia_infraccion |
| rango_ |
| dia_mes |
| delito_pj |
| cmi |
| modus_operandi |
| arma_utilizada |
| vd_sexo |
| vd_edad |
| vd_estado_civil |
| vd_nacionalidad |
| vd_etnia |
| vd_profesion_ocupacion |
Se muestra a continuacion un resumen general de las variables de nuestra nueva la base de datos, mostrando valores como: máximo, minimo media, mediana, primer y tercer cuantil
summary(Delincuencia)## canton distrito circuito subcircuito
## Length:21004 Length:21004 Length:21004 Length:21004
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## zona f_registro hora_registro f_infraccion
## Length:21004 Length:21004 Length:21004 Length:21004
## Class :character Class :character Class1:hms Class :character
## Mode :character Mode :character Class2:difftime Mode :character
## Mode :numeric
##
##
##
## semana año_infraccion mes_infraccion hora_infraccion
## Min. : 1.00 Min. :2013 Length:21004 Length:21004
## 1st Qu.:15.00 1st Qu.:2013 Class :character Class :character
## Median :26.00 Median :2013 Mode :character Mode :character
## Mean :26.78 Mean :2013
## 3rd Qu.:39.00 3rd Qu.:2013
## Max. :52.00 Max. :2013
## NA's :20626
## dia_infraccion rango_ dia_mes delito_pj
## Length:21004 Length:21004 Min. : 1.00 Length:21004
## Class :character Class :character 1st Qu.: 8.00 Class :character
## Mode :character Mode :character Median :16.00 Mode :character
## Mean :15.73
## 3rd Qu.:23.00
## Max. :31.00
##
## cmi modus_operandi arma_utilizada vd_sexo
## Length:21004 Length:21004 Length:21004 Length:21004
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## vd_edad vd_estado_civil vd_nacionalidad vd_etnia
## Min. : 3.00 Length:21004 Length:21004 Length:21004
## 1st Qu.: 28.00 Class :character Class :character Class :character
## Median : 35.00 Mode :character Mode :character Mode :character
## Mean : 49.04
## 3rd Qu.: 46.00
## Max. :2014.00
## NA's :1
## vd_profesion_ocupacion
## Length:21004
## Class :character
## Mode :character
##
##
##
##
Ajustamos el tipo de variable
Para facilitar nuestro análisis exploratorio de datos, vamos a cambiar los tipos de variables para manipular mejor los datos y poder hacer representaciones gráficas.
Delincuencia$canton<-factor(Delincuencia$canton,levels=c("BALAO","DURAN",
"EL TRIUNFO","GUAYAQUIL",
"NARANJAL","NOBOL","PLAYAS",
"SALITRE", "SAMBORONDON"))
Delincuencia$canton<-factor(Delincuencia$canton)
Delincuencia$distrito<-factor(Delincuencia$distrito)
Delincuencia$circuito<-factor(Delincuencia$circuito)
Delincuencia$vd_edad<-as.numeric(Delincuencia$vd_edad)
Delincuencia$vd_estado_civil<-factor(Delincuencia$vd_estado_civil)
Delincuencia$vd_nacionalidad<-factor(Delincuencia$vd_nacionalidad)
Delincuencia$vd_etnia<-factor(Delincuencia$vd_etnia)
Delincuencia$vd_profesion_ocupacion<-factor(Delincuencia$vd_profesion_ocupacion)
Delincuencia$modus_operandi<-factor(Delincuencia$modus_operandi)
Delincuencia$arma_utilizada<-factor(Delincuencia$arma_utilizada)
Delincuencia$vd_sexo<-factor(Delincuencia$vd_sexo)
Delincuencia$f_infraccion<-as.Date(Delincuencia$f_infraccion)
Delincuencia$f_registro<-as.Date(Delincuencia$f_registro)
Delincuencia$mes_infraccion<-factor(Delincuencia$mes_infraccion)
Delincuencia$dia_infraccion<-factor(Delincuencia$dia_infraccion)
Delincuencia$hora_infraccion<-hms(Delincuencia$hora_infraccion)## Warning in .parse_hms(..., order = "HMS", quiet = quiet): Some strings failed to
## parse, or all strings are NAs
Ahora vemos de forma compacta la estructura interna de nuestra nueva base de datos, donde nos indica el tipo de variable, rango de valores y una muestra de dichos valores
str(Delincuencia)## tibble [21,004 × 25] (S3: tbl_df/tbl/data.frame)
## $ canton : Factor w/ 9 levels "BALAO","DURAN",..: 4 4 4 4 4 4 4 4 4 4 ...
## $ distrito : Factor w/ 12 levels "09 DE OCTUBRE",..: 8 2 4 8 12 1 9 12 12 9 ...
## $ circuito : Factor w/ 69 levels "9 DE OCTUBRE",..: 60 53 29 60 66 26 17 62 27 57 ...
## $ subcircuito : chr [1:21004] "SAN FRANCISCO 2" "PUERTO HONDO 2" "TRINITARIA NORTE 2" "SAN FRANCISCO 4" ...
## $ zona : chr [1:21004] "ZONA URBANA" "ZONA URBANA" "ZONA URBANA" "ZONA RURAL" ...
## $ f_registro : Date[1:21004], format: "0002-01-20" "0006-01-20" ...
## $ hora_registro : 'hms' num [1:21004] 01:20:00 09:45:00 23:30:00 16:50:00 ...
## ..- attr(*, "units")= chr "secs"
## $ f_infraccion : Date[1:21004], format: "0001-01-20" "0006-01-20" ...
## $ semana : num [1:21004] 1 1 1 2 2 2 3 3 3 3 ...
## $ año_infraccion : num [1:21004] 2013 2013 2013 2013 2013 ...
## $ mes_infraccion : Factor w/ 12 levels "abril","agosto",..: 4 4 4 4 4 4 4 4 4 4 ...
## $ hora_infraccion :Formal class 'Period' [package "lubridate"] with 6 slots
## .. ..@ .Data : num [1:21004] NA NA 0 NA 0 0 NA 0 NA 0 ...
## .. ..@ year : num [1:21004] NA NA 0 NA 0 0 NA 0 NA 0 ...
## .. ..@ month : num [1:21004] NA NA 0 NA 0 0 NA 0 NA 0 ...
## .. ..@ day : num [1:21004] NA NA 0 NA 0 0 NA 0 NA 0 ...
## .. ..@ hour : num [1:21004] NA NA 22 NA 7 14 NA 5 NA 17 ...
## .. ..@ minute: num [1:21004] NA NA 0 NA 0 0 NA 30 NA 30 ...
## $ dia_infraccion : Factor w/ 7 levels "domingo","jueves",..: 4 1 1 6 1 6 5 2 2 7 ...
## $ rango_ : chr [1:21004] "DESCONOCIDA" "DESCONOCIDA" "22:00 a 22:59" "DESCONOCIDA" ...
## $ dia_mes : num [1:21004] 1 6 6 12 13 12 16 17 17 18 ...
## $ delito_pj : chr [1:21004] "ASESINATO" "ASESINATO" "ASESINATO" "ASESINATO" ...
## $ cmi : chr [1:21004] "HOMICIDIOS/ASESINATOS" "HOMICIDIOS/ASESINATOS" "HOMICIDIOS/ASESINATOS" "HOMICIDIOS/ASESINATOS" ...
## $ modus_operandi : Factor w/ 23 levels "AGRESION_FISICA",..: NA NA NA NA NA NA NA NA NA NA ...
## $ arma_utilizada : Factor w/ 3 levels "ARMA BLANCA",..: 1 1 2 2 1 2 2 1 2 2 ...
## $ vd_sexo : Factor w/ 3 levels "#NULL!","FEMENINO",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ vd_edad : num [1:21004] 36 24 20 72 23 36 41 38 28 46 ...
## $ vd_estado_civil : Factor w/ 10 levels "CASADO","DIVORCIADO",..: 7 7 8 8 8 8 7 7 1 2 ...
## $ vd_nacionalidad : Factor w/ 6 levels "COLOMBIANA","COREANA",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ vd_etnia : Factor w/ 7 levels "AFRO ECUATORIANO",..: 5 5 2 5 2 5 5 5 5 5 ...
## $ vd_profesion_ocupacion: Factor w/ 92 levels "ADMINISTRADOR DE CANCHA DEPORTIVA",..: 14 34 80 17 83 17 17 36 35 87 ...
Detección y tratamiento de datos ausentes
Las bases de datos a menudo presentan datos ausentes que pueden generar problemas a la hora de hacer analisis estadisticos o hacer una representacion grafica de los datos. La siguiente tabla (Tabla 1) nos dice la cantidad de valores perdidos, ausenten o celdas vacias en cada una de las variables de la tabla
kable(colSums(is.na(Delincuencia)), col.names = c('Cantidad'), caption = "TABLA 1 :Total de valores perdidos")| Cantidad | |
|---|---|
| canton | 0 |
| distrito | 0 |
| circuito | 0 |
| subcircuito | 0 |
| zona | 16409 |
| f_registro | 0 |
| hora_registro | 1 |
| f_infraccion | 0 |
| semana | 20626 |
| año_infraccion | 0 |
| mes_infraccion | 0 |
| hora_infraccion | 261 |
| dia_infraccion | 0 |
| rango_ | 0 |
| dia_mes | 0 |
| delito_pj | 20626 |
| cmi | 0 |
| modus_operandi | 386 |
| arma_utilizada | 20626 |
| vd_sexo | 0 |
| vd_edad | 1 |
| vd_estado_civil | 20630 |
| vd_nacionalidad | 20626 |
| vd_etnia | 20627 |
| vd_profesion_ocupacion | 20641 |
Limpiamos la base de datos respecto al porcentaje de valores perdidos de las variables seleccionadas,eliminaremos las variables que tengan mas del 75% de valores perdidos.
Los valores perdidos en el resto de las variables los eliminaremos para que los análisis posteriores no se vean alterados y podamos tener mejores resultados. La mayoría de las veces se debe a fallos en la transcripción de los datos o problemas durante la recogida de datos, por ejemplo, debido a la imposibilidad para obtener cierta medida u observación.
Delincuencia <- Delincuencia[,-which(colMeans(is.na(Delincuencia))>= 0.75)]
Delincuencia1<-na.omit(Delincuencia)Aqui presentamos el total de variables que utilizaremos tras hacer la limpieza de datos ausentes
kable(names(Delincuencia),col.names = c('Variables'), caption = "TABLA 2. . Variables a utilizar para el análisis")| Variables |
|---|
| canton |
| distrito |
| circuito |
| subcircuito |
| f_registro |
| hora_registro |
| f_infraccion |
| año_infraccion |
| mes_infraccion |
| hora_infraccion |
| dia_infraccion |
| rango_ |
| dia_mes |
| cmi |
| modus_operandi |
| vd_sexo |
| vd_edad |
Detección y tratamiento de valores atípicos
Un valor atípico u outlier, es una observación significativamente distinta del resto de datos que presenta una variable, de tal magnitud que se puede considerar un valor anómalo. En nuestra base de datos la única variable que presente este tipo de datos es en el sexo y los vamos a eliminiar ya que no influye en nuestro análisis de datos.
eliminarNull<- Delincuencia$vd_sexo %in% c("#NULL!")
Delincuencia<-Delincuencia[!eliminarNull,]
Delincuencia$vd_sexo<-droplevels(Delincuencia$vd_sexo)Representaciones gráficas
Con estas representaciones gráficas nos daremos cuenta de forma visual que es lo que hay en nuestra base de datos y comprender mejor lo que queremos lograr. Empezaremos por el tipo de robo. Pero primero conoceremos el total de observaciones por tipo de robo en la sigueinte tabla (tabla 3).
Tabla3<- table(Delincuencia$cmi)
Tabla3##
## HOMICIDIOS/ASESINATOS ROBO DE ACCESORIOS DE VEHICULOS
## 378 2126
## ROBO_A_LOCAL_COMERCIAL ROBO_DE_CARROS
## 751 2091
## ROBO_DE_MOTOS ROBO_DOMICILIOS
## 1204 2796
## ROBO_EN_CARRETERAS ROBO_PERSONAS
## 49 11600
Así que el robo a personas es el tipo de robo que más abunda en el país de ecuador, con un total de 11600 observaciones, luego robo a domicilios con 2796 y en tercero robo de accesorios de vehículos con 2126 observaciones. Lo podemos visualizar mejor en la siguiente gráfica (Gráfica 1)
ggplot(Delincuencia, aes(x=cmi,fill=cmi)) +
geom_bar() + ggtitle("Gráfica 1. Tipos de robo")+
scale_fill_brewer(palette = "Accent")+
theme(legend.position = "top",legend.text = element_text("blue",size = 6), axis.text=element_text(size=5),axis.title=element_text(size=10,face="italic"))Ahora veamos por proporción el impacto de cada tipo de delito y su porcentaje (Gráfico 2), donde el robo a personas tiene un 55.3% de incidencias y es una cantidad considerable ya que abarca más de la mitad del total de los datos.
porcentaje2 <- Delincuencia%>%
group_by(cmi) %>%
count() %>%
ungroup() %>%
mutate(percentage=`n`/sum(`n`) * 100)
ggplot(porcentaje2, aes(x=1, y=percentage, fill=cmi)) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(round(percentage,1),"%")),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y") +
theme_void()+ scale_fill_brewer(palette = "Dark2")A continuación se muestra la cantidad exacta de incidencias por sexo, donde el hombre se lleva el mayor número de incidencias con un total de 15465 incidencias mientras que la mujer 5530 (Tabla 4)
Tabla4<-table(Delincuencia$vd_sexo)
Tabla4##
## FEMENINO MASCULINO
## 5530 15465
El siguiente gráfico (Gráfico 3) de pastel nos muestra el porcentaje de las incidencias por sexo de las víctimas
porcentaje <- Delincuencia%>%
group_by(vd_sexo) %>%
count() %>%
ungroup() %>%
mutate(percentage=`n`/sum(`n`) * 100)
ggplot(porcentaje, aes(x=1, y=percentage, fill=vd_sexo)) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(round(percentage,1),"%")),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y") +
theme_void()Vamos a analizar el total de datos sobre la variable edad para ver cuál es la edad en la que más son afectadas las personas por los diferentes tipos de delito o robo
Delincuencia%>%count(vd_edad, sort=TRUE)## # A tibble: 91 × 2
## vd_edad n
## <dbl> <int>
## 1 13 1405
## 2 32 751
## 3 31 724
## 4 34 707
## 5 30 699
## 6 33 697
## 7 36 686
## 8 28 670
## 9 27 654
## 10 29 653
## # … with 81 more rows
Así que la edad con más frecuencia de delitos son a los 13 años con un total de 1405 observaciones. Las víctimas entre el rango de 13 a 50 años son las que más sufren de delitos, como se observa en la gráfica 4. Tambien podemos ver que hay una baja drástica dentro de la gráfica porque en la edad de 15 años solo presenta un total de 3 observaciones.
histEdad<- hist(Delincuencia$vd_edad,
main=" Grafica 4. Edad de las victimas",
xlab = "edad",
ylab = "Frecuencia",
xlim = c(0, 150),
breaks = 1000)Con lo que respecta a Canton de las victimas, vamos ver Cuál de los 9 presenta un mayor número de delitos
Delincuencia%>%count(canton, sort=TRUE)## # A tibble: 9 × 2
## canton n
## <fct> <int>
## 1 GUAYAQUIL 19162
## 2 DURAN 1467
## 3 SAMBORONDON 250
## 4 PLAYAS 98
## 5 BALAO 9
## 6 SALITRE 5
## 7 NARANJAL 2
## 8 EL TRIUNFO 1
## 9 NOBOL 1
Con un total de 19171 delitos Guayaquil se lleva el primer lugar, en seguida Duran con 1467 delitos y en tercero Samborondon con 250 delitos.(Gráfica 5)
ggplot(Delincuencia, aes(x=canton,fill=canton)) +
geom_bar() +ggtitle("Gráfica 5. Distribución de las incidencias por canton")+
labs(x = "canton",y = "Frecuencia")+
scale_fill_brewer(palette = "Accent")+
theme(legend.text = element_text("blue",size = 6), axis.text=element_text(size=5),axis.title=element_text(size=10,face="italic"))## Warning in RColorBrewer::brewer.pal(n, pal): n too large, allowed maximum for palette Accent is 8
## Returning the palette you asked for with that many colors
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database
Vamos a analizar los meses para observar cuales son los 3 meses con mayor incidencia de delitos.
Delincuencia%>%count(mes_infraccion, sort=TRUE)## # A tibble: 12 × 2
## mes_infraccion n
## <fct> <int>
## 1 abril 1944
## 2 julio 1886
## 3 mayo 1853
## 4 agosto 1817
## 5 marzo 1790
## 6 junio 1743
## 7 febrero 1722
## 8 enero 1695
## 9 octubre 1685
## 10 diciembre 1651
## 11 noviembre 1643
## 12 septiembre 1566
Los 3 meses con mayor número de delitos son abril con un total de 1944 observaciones, julio con 1886 observaciones y mayo con 1853 observaciones así como se puede observar en la gráfica 6
ggplot(Delincuencia, aes(x=mes_infraccion,fill=mes_infraccion)) +
geom_bar() +ggtitle("Gráfica 6")+
scale_fill_brewer(palette = "Paired")+
theme(legend.position = "top",legend.text = element_text("blue",size = 6), axis.text=element_text(size=5),axis.title=element_text(size=10,face="italic"))## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database
Delincuencia%>%count(dia_infraccion, sort=TRUE)## # A tibble: 7 × 2
## dia_infraccion n
## <fct> <int>
## 1 viernes 3347
## 2 sAbado 3154
## 3 miErcoles 3116
## 4 lunes 3072
## 5 jueves 3015
## 6 martes 2853
## 7 domingo 2438
El día en el que más se presentan los delitos es el día viernes con 3347 observaciones, le sigue sábado con 3154 observaciones y miércoles con 3116 observaciones (Gráfica 7)
ggplot(Delincuencia, aes(x=dia_infraccion,fill=dia_infraccion)) +
geom_bar() + ggtitle("Gráfica 7")+
scale_fill_brewer(palette = "Accent")+
theme(legend.position = "top",legend.text = element_text("blue",size = 6), axis.text=element_text(size=5),axis.title=element_text(size=10,face="italic"))## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database
Correlación de variables
La correlación determina la relación lineal entre dos o más variables, es decir, la fuerza y la dirección de una posible relación entre variables. Dicho de otra forma, si los valores de una variable tienden a subir, los de otra u otras variables, harán lo mismo si están correladas positivamente o a la inversa, si lo están negativamente. Esto no quiere decir, que una correlación entre variables indique una relación causa-efecto.
Tablas de contingencia
Tabla de contingencia (tabla 5) de las variables sexo y tipo de delito(cmi).
tabla5<-table(Delincuencia$vd_sexo, Delincuencia$cmi)
tabla5##
## HOMICIDIOS/ASESINATOS ROBO DE ACCESORIOS DE VEHICULOS
## FEMENINO 35 515
## MASCULINO 343 1611
##
## ROBO_A_LOCAL_COMERCIAL ROBO_DE_CARROS ROBO_DE_MOTOS ROBO_DOMICILIOS
## FEMENINO 215 407 115 1062
## MASCULINO 536 1684 1089 1734
##
## ROBO_EN_CARRETERAS ROBO_PERSONAS
## FEMENINO 7 3174
## MASCULINO 42 8426
La gráfica 8 muestra una representación de la tabla de sexo y tipo de delito. Podemos observar que en todos los diferentes tipos de delito, el sexo masculino es el que presenta mayor número incidencias. Del delito de robo a personas 3174 son del sexo femenino y 8426 son del sexo masculino, que es el que tiene mayor frecuencia.
plot(tabla5, col=c("blue","red"), main="Gráfica 8.Tipo de delito vs Sexo del denunciante", las=1, cex.lab=0.8)## Warning: In mosaicplot.default(x, xlab = xlab, ylab = ylab, ...) :
## extra argument 'cex.lab' will be disregarded
Tabla de contingencia de las variables distrito y tipo de delito (Tabla 6).
tabla6<-table(Delincuencia$distrito,Delincuencia$cmi)
tabla6##
## HOMICIDIOS/ASESINATOS ROBO DE ACCESORIOS DE VEHICULOS
## 09 DE OCTUBRE 28 375
## CEIBOS 9 58
## DURAN 26 98
## ESTEROS 44 97
## FLORIDA 17 203
## MODELO 24 797
## NUEVA PROSPERINA 27 29
## PASCUALES 51 113
## PORTETE 52 80
## PROGRESO 8 1
## SAMBORONDON 5 46
## SUR 87 229
##
## ROBO_A_LOCAL_COMERCIAL ROBO_DE_CARROS ROBO_DE_MOTOS
## 09 DE OCTUBRE 170 369 228
## CEIBOS 10 43 16
## DURAN 74 113 64
## ESTEROS 38 195 108
## FLORIDA 70 233 129
## MODELO 153 487 125
## NUEVA PROSPERINA 26 52 57
## PASCUALES 43 177 186
## PORTETE 63 105 137
## PROGRESO 2 26 5
## SAMBORONDON 18 20 23
## SUR 84 271 126
##
## ROBO_DOMICILIOS ROBO_EN_CARRETERAS ROBO_PERSONAS
## 09 DE OCTUBRE 237 0 2572
## CEIBOS 75 3 112
## DURAN 454 20 675
## ESTEROS 180 0 741
## FLORIDA 264 0 1093
## MODELO 434 1 2685
## NUEVA PROSPERINA 419 0 444
## PASCUALES 231 17 899
## PORTETE 186 0 1040
## PROGRESO 45 4 44
## SAMBORONDON 60 4 145
## SUR 211 0 1150
Como ya lo habíamos dicho anteriormente, el robo a personas es el delito que más incidencia tiene. En la gráfica 9 vemos que los tres distritos que presentan más este delito son Modelo con 2685 incidencias,09 de Octubre con 2572 y Sur con 1150.
plot(tabla6, col=palette("Paired"), main="Gráfica 9. Tipo de delito vs Distrito ", las=2)Conclusiones
Tras el análisis exploratorio de los datos de delitos en Ecuador durante el año 2013 nos dimos cuenta que las personas de sexo Masculino son las que sufren más robos a pesar de que las mujeres se consideran más vulnerables ante este tipo de problemas que abunda por todas partes y aun más en los jóvenes de 13 años porque hubo una gran cantidad de robos en esa edad.También que el robo a personas es el que con mayor frecuencia se presenta y con una cantidad considerable de los otros tipos de robo, con un total de 11600 observaciones que representa un 55.3% de los datos. En Canton se observa un mayor número de incidencias en Guayaquil con un total de 19171 delitos, Duran con 1467 y Samborondon con 250, asi que se debe tomar medidas preventivas en estos lugares para disminuir los robos, puede ser realizar rondines todos los dias por estos lugares y más específicamente en los fines de semana ya que es cuando se presenta un mayor número de incidencias y así le gente pueda estar mas tranquila sin miedo a ser asaltada. Otra opción seria poner cámaras de seguridad en distritos como Modelo, 9 de octubre y sur, distritos en los cuáles son más comunes los robos.