La base de datos para este análisis contiene datos reales sobre delitos registrados en diferentes regiones de Ecuador. Se desea encontrar información útil que sirva para realizar recomendaciones pertinentes, con el fin de disminuir la incidencia de delitos. Para ello, se realiza una exploración preliminar para conocer los datos y comprender con mayor claridad lo que se quiere investigar sobre ellos. Se utilizan gráficas y técnicas de estadistica exploratoria empleando la librería tidyverse.
Las librerías necesaria para este análisis son:
library(tidyverse)
library(readxl)
library(magrittr)
library(knitr)
library(lubridate)
Se lee el archivo que contiene el conjunto de datos de delitos registrados, que es un archivo simple con encabezados, para su posterior lectura e inspección.
bd <- read_excel("Analisis_Delincuencia_Base_datos.xlsx")
bd
## # A tibble: 21,004 × 45
## cod_delito zona_senplades provincia canton cod_subcircuito distrito circuito
## <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 2013.1m ZONA 8 DMG GUAYAQ… 09D07C07S02 PASCUAL… SAN FRA…
## 2 2013.3m ZONA 8 DMG GUAYAQ… 09D09C02S02 CEIBOS PUERTO …
## 3 2013.4m ZONA 8 DMG GUAYAQ… 09D02C04S02 ESTEROS ISLA TR…
## 4 2013.5m ZONA 8 DMG GUAYAQ… 09D07C07S04 PASCUAL… SAN FRA…
## 5 2013.6m ZONA 8 DMG GUAYAQ… 09D01C02S02 SUR UNION D…
## 6 2013.7m ZONA 8 DMG GUAYAQ… 09D03C04S02 09 DE O… GARAY
## 7 2013.8m ZONA 8 DMG GUAYAQ… 09D04C01S05 PORTETE CISNE
## 8 2013.9m ZONA 8 DMG GUAYAQ… 09D01C04S03 SUR SIETE L…
## 9 2013.10m ZONA 8 DMG GUAYAQ… 09D01C01S03 SUR GUASMO
## 10 2013.11m ZONA 8 DMG GUAYAQ… 09D04C03S04 PORTETE SALINAS
## # … with 20,994 more rows, and 38 more variables: subcircuito <chr>,
## # sector <chr>, zona <chr>, f_registro <dttm>, hora_registro <chr>,
## # f_infraccion <dttm>, semana <dbl>, semanas 2 <chr>, año_infraccion <dbl>,
## # mes_infraccion <chr>, hora_infraccion <chr>, dia_infraccion <chr>,
## # rango_ <chr>, dia_mes <dbl>, fuente <chr>, t_delito_pj <lgl>,
## # delito_pj <chr>, cmi <chr>, modus_operandi <chr>, arma_utilizada <chr>,
## # t_agresion <lgl>, lugar_infraccion <lgl>, condicion_lugar <lgl>,
## # quien_comete_delito <lgl>, veh_utilizado <lgl>, veh_color <lgl>,
## # veh_marca <lgl>, modelo <lgl>, victima_denunciante <lgl>,
## # vd_apellidos_nombres <chr>, vd_sexo <chr>, vd_edad <chr>,
## # vd_estado_civil <chr>, vd_nacionalidad <chr>, vd_etnia <chr>,
## # vd_profesion_ocupacion <chr>, vd_actividad <chr>, vd_instrucciOn <chr>
La base de datos se guarda en un objeto de tipo tibble pues es un formato más eficiente para trabajar con la limpieza de datos.
Con este formato se obtiene una vista previa del conjunto de datos.
glimpse(bd)
## Rows: 21,004
## Columns: 45
## $ cod_delito <chr> "2013.1m", "2013.3m", "2013.4m", "2013.5m", "20…
## $ zona_senplades <chr> "ZONA 8", "ZONA 8", "ZONA 8", "ZONA 8", "ZONA 8…
## $ provincia <chr> "DMG", "DMG", "DMG", "DMG", "DMG", "DMG", "DMG"…
## $ canton <chr> "GUAYAQUIL", "GUAYAQUIL", "GUAYAQUIL", "GUAYAQU…
## $ cod_subcircuito <chr> "09D07C07S02", "09D09C02S02", "09D02C04S02", "0…
## $ distrito <chr> "PASCUALES", "CEIBOS", "ESTEROS", "PASCUALES", …
## $ circuito <chr> "SAN FRANCISCO", "PUERTO HONDO", "ISLA TRINITAR…
## $ subcircuito <chr> "SAN FRANCISCO 2", "PUERTO HONDO 2", "TRINITARI…
## $ sector <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1…
## $ zona <chr> "ZONA URBANA", "ZONA URBANA", "ZONA URBANA", "Z…
## $ f_registro <dttm> 2013-01-02, 2013-01-06, 2013-01-06, 2013-01-12…
## $ hora_registro <chr> "0.0555555555555556", "0.40625", "0.97916666666…
## $ f_infraccion <dttm> 2013-01-01, 2013-01-06, 2013-01-06, 2013-01-12…
## $ semana <dbl> 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,…
## $ `semanas 2` <chr> "01 ene 06 ene", "01 ene 06 ene", "01 ene 06 en…
## $ año_infraccion <dbl> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013,…
## $ mes_infraccion <chr> "enero", "enero", "enero", "enero", "enero", "e…
## $ hora_infraccion <chr> "A DETERMINARSE", "A DETERMINARSE", "0.91666666…
## $ dia_infraccion <chr> "martes", "domingo", "domingo", "sAbado", "domi…
## $ rango_ <chr> "DESCONOCIDA", "DESCONOCIDA", "22:00 a 22:59", …
## $ dia_mes <dbl> 1, 6, 6, 12, 13, 12, 16, 17, 17, 18, 18, 18, 18…
## $ fuente <chr> "DINASED", "DINASED", "DINASED", "DINASED", "DI…
## $ t_delito_pj <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ delito_pj <chr> "ASESINATO", "ASESINATO", "ASESINATO", "ASESINA…
## $ cmi <chr> "HOMICIDIOS/ASESINATOS", "HOMICIDIOS/ASESINATOS…
## $ modus_operandi <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ arma_utilizada <chr> "ARMA BLANCA", "ARMA BLANCA", "ARMA DE FUEGO", …
## $ t_agresion <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ lugar_infraccion <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ condicion_lugar <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ quien_comete_delito <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ veh_utilizado <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ veh_color <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ veh_marca <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ modelo <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ victima_denunciante <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ vd_apellidos_nombres <chr> "ZANABRIA CASTRO JACINTO MANUEL", "CRUZ QUINDE …
## $ vd_sexo <chr> "MASCULINO", "MASCULINO", "MASCULINO", "MASCULI…
## $ vd_edad <chr> "36", "24", "20", "72", "23", "36", "41", "38",…
## $ vd_estado_civil <chr> "SOLTERO", "SOLTERO", "UNION DE HECHO", "UNION …
## $ vd_nacionalidad <chr> "ECUATORIANA", "ECUATORIANA", "ECUATORIANA", "E…
## $ vd_etnia <chr> "MESTIZA", "MESTIZA", "AFRO_ECUATORIANA", "MEST…
## $ vd_profesion_ocupacion <chr> "COCINERO", "EMPLEADO", "SE DESCONOCE", "COMERC…
## $ vd_actividad <chr> "TIENE_TRABAJO_O_NEGOCIO", "TIENE_TRABAJO_O_NEG…
## $ vd_instrucciOn <chr> "PRIMARIA", "PRIMARIA", "PRIMARIA", "PRIMARIA",…
De este resumen se obtiene que la base se conforma de \(45\) variables con \(21004\) observaciones. Esta base se conforma en su mayoría de variables de caracteres y varibales tipo fecha en varios formatos. Además se vislumbran valores ausentes presentes en los datos.
A continuación se cuentan los valores ausentes para evaluar las variables de interés.
is.na(bd) %>% colSums()
## cod_delito zona_senplades provincia
## 0 0 0
## canton cod_subcircuito distrito
## 0 20626 0
## circuito subcircuito sector
## 0 0 20626
## zona f_registro hora_registro
## 16409 0 0
## f_infraccion semana semanas 2
## 0 20626 20626
## año_infraccion mes_infraccion hora_infraccion
## 0 0 1
## dia_infraccion rango_ dia_mes
## 0 28 0
## fuente t_delito_pj delito_pj
## 20626 21004 20626
## cmi modus_operandi arma_utilizada
## 0 386 20626
## t_agresion lugar_infraccion condicion_lugar
## 21004 21004 21004
## quien_comete_delito veh_utilizado veh_color
## 21004 21004 21004
## veh_marca modelo victima_denunciante
## 21004 21004 21004
## vd_apellidos_nombres vd_sexo vd_edad
## 0 0 0
## vd_estado_civil vd_nacionalidad vd_etnia
## 20630 20626 20627
## vd_profesion_ocupacion vd_actividad vd_instrucciOn
## 20641 20639 20642
A partir de esta cuenta se puede ver que las variables con \(\texttt{NA}\)’s tienen una gran cantidad de valores en la mayoría de estas variables (\(> 98\%\)) o se cuenta con toda una columna de \(\texttt{NA}\)’s. Además se cuenta con la variable \(\texttt{zona}\) que consta de un \(78\%\) de valores ausentes por lo que se procede a sacarlas del análisis para hacer una exploración preliminar y después se contrastará la porción de estas variable que no es ausente (el \(2\%\) y el \(28\%\)) para evaluar si hay un cambio significativo respecto al análisis preliminar y checar si resulta conveniente realizar una imputación de datos. Sin embargo se conservan tres columnas con \(\texttt{NA}\)’s pues su proporción de valores asuentes es mínima: \(\texttt{hora_infraccion}\) (1 dato ausente), \(\texttt{rango_}\) (0.13 \(\%\)) y \(\texttt{modus_operandi}\) (1.8 \(\%\)).
bd %<>% select_if(colSums(is.na(.)) <= 386)
glimpse(bd)
## Rows: 21,004
## Columns: 21
## $ cod_delito <chr> "2013.1m", "2013.3m", "2013.4m", "2013.5m", "2013…
## $ zona_senplades <chr> "ZONA 8", "ZONA 8", "ZONA 8", "ZONA 8", "ZONA 8",…
## $ provincia <chr> "DMG", "DMG", "DMG", "DMG", "DMG", "DMG", "DMG", …
## $ canton <chr> "GUAYAQUIL", "GUAYAQUIL", "GUAYAQUIL", "GUAYAQUIL…
## $ distrito <chr> "PASCUALES", "CEIBOS", "ESTEROS", "PASCUALES", "S…
## $ circuito <chr> "SAN FRANCISCO", "PUERTO HONDO", "ISLA TRINITARIA…
## $ subcircuito <chr> "SAN FRANCISCO 2", "PUERTO HONDO 2", "TRINITARIA …
## $ f_registro <dttm> 2013-01-02, 2013-01-06, 2013-01-06, 2013-01-12, …
## $ hora_registro <chr> "0.0555555555555556", "0.40625", "0.9791666666666…
## $ f_infraccion <dttm> 2013-01-01, 2013-01-06, 2013-01-06, 2013-01-12, …
## $ año_infraccion <dbl> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2…
## $ mes_infraccion <chr> "enero", "enero", "enero", "enero", "enero", "ene…
## $ hora_infraccion <chr> "A DETERMINARSE", "A DETERMINARSE", "0.9166666666…
## $ dia_infraccion <chr> "martes", "domingo", "domingo", "sAbado", "doming…
## $ rango_ <chr> "DESCONOCIDA", "DESCONOCIDA", "22:00 a 22:59", "D…
## $ dia_mes <dbl> 1, 6, 6, 12, 13, 12, 16, 17, 17, 18, 18, 18, 18, …
## $ cmi <chr> "HOMICIDIOS/ASESINATOS", "HOMICIDIOS/ASESINATOS",…
## $ modus_operandi <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ vd_apellidos_nombres <chr> "ZANABRIA CASTRO JACINTO MANUEL", "CRUZ QUINDE AL…
## $ vd_sexo <chr> "MASCULINO", "MASCULINO", "MASCULINO", "MASCULINO…
## $ vd_edad <chr> "36", "24", "20", "72", "23", "36", "41", "38", "…
is.na(bd) %>% colSums()
## cod_delito zona_senplades provincia
## 0 0 0
## canton distrito circuito
## 0 0 0
## subcircuito f_registro hora_registro
## 0 0 0
## f_infraccion año_infraccion mes_infraccion
## 0 0 0
## hora_infraccion dia_infraccion rango_
## 1 0 28
## dia_mes cmi modus_operandi
## 0 0 386
## vd_apellidos_nombres vd_sexo vd_edad
## 0 0 0
Así, se reduce la base a 21 variables. Ahora, se eliminan los registros que contienen información incompleta de esta nueva base de datos filtrada.
bd %<>% drop_na()
glimpse(bd)
## Rows: 20,618
## Columns: 21
## $ cod_delito <chr> "2013_1d", "2013_2d", "2013_3d", "2013_4d", "2013…
## $ zona_senplades <chr> "ZONA 8", "ZONA 8", "ZONA 8", "ZONA 8", "ZONA 8",…
## $ provincia <chr> "DMG", "DMG", "DMG", "DMG", "DMG", "DMG", "DMG", …
## $ canton <chr> "GUAYAQUIL", "GUAYAQUIL", "GUAYAQUIL", "GUAYAQUIL…
## $ distrito <chr> "09 DE OCTUBRE", "09 DE OCTUBRE", "09 DE OCTUBRE"…
## $ circuito <chr> "9 DE OCTUBRE", "9 DE OCTUBRE", "9 DE OCTUBRE", "…
## $ subcircuito <chr> "9 DE OCTUBRE 3", "9 DE OCTUBRE 2", "9 DE OCTUBRE…
## $ f_registro <dttm> 2013-01-07, 2013-01-10, 2013-01-12, 2013-01-15, …
## $ hora_registro <chr> "0.577245370370371", "0.460497685185185", "0.5555…
## $ f_infraccion <dttm> 2013-01-06, 2013-01-08, 2013-01-10, 2013-01-10, …
## $ año_infraccion <dbl> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2…
## $ mes_infraccion <chr> "enero", "enero", "enero", "enero", "enero", "ene…
## $ hora_infraccion <chr> "0.0694444444444444", "0.958333333333333", "0", "…
## $ dia_infraccion <chr> "domingo", "martes", "jueves", "jueves", "jueves"…
## $ rango_ <chr> "1:00 a 1:59", "23:00 a 23:59", "0:00 a 0:59", "7…
## $ dia_mes <dbl> 6, 8, 10, 10, 17, 21, 23, 24, 24, 25, 8, 6, 8, 8,…
## $ cmi <chr> "ROBO_PERSONAS", "ROBO_A_LOCAL_COMERCIAL", "ROBO_…
## $ modus_operandi <chr> "ASALTO", "ESCALAMIENTO", "ASALTO", "ASALTO", "VI…
## $ vd_apellidos_nombres <chr> "ASUNCION MERA LISBETH HERMINIA", "TEJENA AN…
## $ vd_sexo <chr> "FEMENINO", "MASCULINO", "MASCULINO", "MASCULINO"…
## $ vd_edad <chr> "21", "58", "13", "13", "29", "31", "2014", "23",…
is.na(bd) %>% colSums()
## cod_delito zona_senplades provincia
## 0 0 0
## canton distrito circuito
## 0 0 0
## subcircuito f_registro hora_registro
## 0 0 0
## f_infraccion año_infraccion mes_infraccion
## 0 0 0
## hora_infraccion dia_infraccion rango_
## 0 0 0
## dia_mes cmi modus_operandi
## 0 0 0
## vd_apellidos_nombres vd_sexo vd_edad
## 0 0 0
Por lo tanto se cuenta con una base \(20618\) observaciones en \(21\) variables para realizar la exploración. El encabezado de estos datos se muestra en la Tabla 1.
kable(head(bd))
| cod_delito | zona_senplades | provincia | 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_apellidos_nombres | vd_sexo | vd_edad |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2013_1d | ZONA 8 | DMG | GUAYAQUIL | 09 DE OCTUBRE | 9 DE OCTUBRE | 9 DE OCTUBRE 3 | 2013-01-07 | 0.577245370370371 | 2013-01-06 | 2013 | enero | 0.0694444444444444 | domingo | 1:00 a 1:59 | 6 | ROBO_PERSONAS | ASALTO | ASUNCION MERA LISBETH HERMINIA | FEMENINO | 21 |
| 2013_2d | ZONA 8 | DMG | GUAYAQUIL | 09 DE OCTUBRE | 9 DE OCTUBRE | 9 DE OCTUBRE 2 | 2013-01-10 | 0.460497685185185 | 2013-01-08 | 2013 | enero | 0.958333333333333 | martes | 23:00 a 23:59 | 8 | ROBO_A_LOCAL_COMERCIAL | ESCALAMIENTO | TEJENA ANGELA ASUNCION | MASCULINO | 58 |
| 2013_3d | ZONA 8 | DMG | GUAYAQUIL | 09 DE OCTUBRE | 9 DE OCTUBRE | 9 DE OCTUBRE 6 | 2013-01-12 | 0.555532407407407 | 2013-01-10 | 2013 | enero | 0 | jueves | 0:00 a 0:59 | 10 | ROBO_PERSONAS | ASALTO | FISCALIA GENERAL DEL ESTADO | MASCULINO | 13 |
| 2013_4d | ZONA 8 | DMG | GUAYAQUIL | 09 DE OCTUBRE | 9 DE OCTUBRE | 9 DE OCTUBRE 1 | 2013-01-15 | 0.332615740740741 | 2013-01-10 | 2013 | enero | 0.332615740740741 | jueves | 7:00 a 7:59 | 10 | ROBO_PERSONAS | ASALTO | FISCALIA GENERAL DEL ESTADO | MASCULINO | 13 |
| 2013_5d | ZONA 8 | DMG | GUAYAQUIL | 09 DE OCTUBRE | 9 DE OCTUBRE | 9 DE OCTUBRE 5 | 2013-01-17 | 0.64994212962963 | 2013-01-17 | 2013 | enero | 0.64994212962963 | jueves | 15:00 a 15:59 | 17 | ROBO_DE_MOTOS | VIA_PUBLICA | GARCIA DEFILIPPY LIVINGTON WILFRIDO | MASCULINO | 29 |
| 2013_6d | ZONA 8 | DMG | GUAYAQUIL | 09 DE OCTUBRE | 9 DE OCTUBRE | 9 DE OCTUBRE 2 | 2013-01-22 | 0.467800925925926 | 2013-01-21 | 2013 | enero | 0.927083333333333 | lunes | 22:00 a 22:59 | 21 | ROBO_PERSONAS | SUSTANCIAS_PSICOTROPICAS | FLORES CHAVEZ ELSIE PAMELA | FEMENINO | 31 |
Para iniciar la exploración se considera la cuenta de valores únicos de la variable \(\texttt{dia_mes}\), que es numérica, para visualizar la distribución de días con delitos registrados.
bd %>% count(dia_mes) %>% ggplot(aes(x=dia_mes, y=n)) + geom_col() + ylab('Cuenta') + xlab('Día del mes')
Figure 1: Delitos por día del mes
De la Figura 1 se observan picos a mitad de mes y en días cercanos a fin de mes, por lo que se podrían contemplar mejorar las medidas de seguridad en las fechas de pago de nóminas (a mitad y fin de mes). Sin embargo, también se observa un pico a mediados de la quincena, por lo que se debe consultar con la experiencia de área para conocer adecuadamente el patrón de fechas de pago en Ecuador.
Para estudiar la distribución de la variable \(\texttt{hora_infraccion}\) se hace una cuenta de la variable caracter y luego se cambia a numérica para visualizar su distribución.
bd %>% count(hora_infraccion,sort=TRUE) %>% ggplot(aes(x=hora_infraccion, y=n)) + geom_col()+
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank())
Figure 2: Delitos por hora del día
Se puede ver en la Figura 2 que las horas con mayor incidencia de delitos están cercanas a las \(20:00\) a las \(21:00\) y a las \(19:00\) hrs. Por la tarde las horas más incidentes son a las \(14:00\) y \(16:00\) hrs. y por la mañana a las \(10:00\) hrs. En la madrugada la hora más incidente es a las \(3:00\) hrs. En la Tabla 2 se encuentra un resumen con el encabezado de las horas más incidentes.
bd %>% count(hora_infraccion,sort=TRUE) %>% select(hora_infraccion) %>% unlist() %>% as.numeric() -> tiempo_infraccion
kable(head(paste(floor(tiempo_infraccion*24),round((tiempo_infraccion*24-floor(tiempo_infraccion*24))*60), sep=":"),20),col.names="Hora")
| Hora |
|---|
| 19:60 |
| 21:0 |
| 19:0 |
| 22:0 |
| 20:30 |
| 19:30 |
| 13:60 |
| 10:0 |
| 16:0 |
| 21:30 |
| 15:0 |
| 12:0 |
| 16:60 |
| 22:60 |
| 10:60 |
| 18:0 |
| 22:30 |
| 13:0 |
| 3:0 |
| 9:0 |
Con la información por día del mes, se puede identificar como se distribuye la incidencia diaria entre distintos cantones.
bd %>% count(canton, dia_mes) %>% ggplot(aes(x=dia_mes, y=n, fill=canton)) + geom_col() + ylab('Cuenta') + xlab('Día del mes')
Figure 3: Delitos por día del mes y cantón
La Figura 3 muestra que Guayaquil es el cantón con mayor incidencia, representando la mayoría de los reportes. Seguido se encuentra Duran y el tercer cantón representativo es Samborondon. Las frecuencias por cantón se muestran en la Tabla 3.
bd %>% count(canton,sort=TRUE) %>% kable()
| canton | n |
|---|---|
| GUAYAQUIL | 18822 |
| DURAN | 1437 |
| SAMBORONDON | 243 |
| PLAYAS | 98 |
| BALAO | 9 |
| SALITRE | 5 |
| NARANJAL | 2 |
| EL TRIUNFO | 1 |
| NOBOL | 1 |
Así mismo, con la incidencia distribuida mensualmente, se puede visualizar el tipo de modus operandi de cada crimen.
options(repr.plot.width=14, repr.plot.height=6)
bd %>% count(modus_operandi, dia_mes) %>% ggplot(aes(x=dia_mes, y=n, fill=modus_operandi)) + geom_col() + ylab('Cuenta') + xlab('Día del mes') + theme(legend.position="none")
Figure 4: Modus operandi de delitos por día del mes
options(repr.plot.width=14, repr.plot.height=6)
bd %>% count(modus_operandi, dia_mes) %>% ggplot(aes(x=dia_mes, y=n, fill=modus_operandi)) + geom_col() + ylab('Cuenta') + xlab('Día del mes')
De la Figura 4 se observa que el modus operandi más frecuente es el asalto, seguido del estruche y en tercer lugar el modus operandi en vía pública. El robo express y los arranchadores también siguen en el orden de incidencia representaitva. Se puede observar que esta distribución de crímenes se mantiene muy similar durante cada día el mes.
Este comportamiento es correspondiente a un año de estudio, como lo muestra la variable \(\texttt{f_infraccion}\).
summary(bd$f_infraccion)
## Min. 1st Qu.
## "2013-01-01 00:00:00.0000" "2013-04-01 00:00:00.0000"
## Median Mean
## "2013-06-27 00:00:00.0000" "2013-06-28 11:08:06.4487"
## 3rd Qu. Max.
## "2013-09-26 00:00:00.0000" "2013-12-31 00:00:00.0000"
Para evaluar la distribución mensual a lo largo del año, se agrega la información de la variable \(\texttt{mes_infraccion}\).
bd$frecuencia <- 1
bd %>% group_by(mes_infraccion) %>% summarize(frecuencia = sum(frecuencia)) %>% arrange(desc(frecuencia)) %>% kable()
| mes_infraccion | frecuencia |
|---|---|
| abril | 1907 |
| julio | 1866 |
| mayo | 1824 |
| agosto | 1787 |
| marzo | 1755 |
| junio | 1704 |
| febrero | 1691 |
| enero | 1664 |
| octubre | 1658 |
| diciembre | 1617 |
| noviembre | 1616 |
| septiembre | 1529 |
La Tabla 4 muestra como en abril sube la incidencia de delitos y en septiembre baja el número de crímenes.
Para estudiar las características de las víctimas, se comienza analizando la variable \(\texttt{vd_edad}\), pero se filtra una observación mal registrada de edad \(2014\).
bd %>% filter(vd_edad != "2014") %>% select(vd_edad) %>% unlist() %>% as.numeric() %>% summary()
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10.0 28.0 35.0 37.1 46.0 103.0
Entonces, las edades de las víctimas que denunciaron tienen un rango de \(10\) a \(103\) años con un promedio de \(37\) años.
bd %>% filter(vd_edad != "2014") %>% select(vd_edad) %>% unlist() %>% as.numeric() %>% hist(breaks=40,xlab="edad",ylab="frecuencia", main="Víctimas en Ecuador")
Figure 5: Distribución de las víctimas por edad
Del histograma en la Figura 5 también se puede observar que a pesar del promedio, la edad de \(13\) años es la más frecuente. La Tabla 5 resume esta información. Como a esta edad se muestra alta incidencia y es más vulnerable que la media, se deben tomar acciones para proteger a esta población.
bd %>% count(vd_edad,sort=TRUE) %>% head(10) %>% kable()
| vd_edad | n |
|---|---|
| 13 | 1405 |
| 32 | 735 |
| 31 | 712 |
| 34 | 697 |
| 30 | 684 |
| 33 | 679 |
| 36 | 674 |
| 28 | 660 |
| 29 | 642 |
| 27 | 639 |
Para comprender mejor la exposición de la población a edad \(13\), se puede comparar la distribución de la edad con respecto al cantón.
bd %>% filter(vd_edad != "2014") %>% count(canton, vd_edad) %>% ggplot(aes(x=vd_edad, y=n, fill=canton)) + geom_col() + ylab('Cuenta') + xlab('Edad víctimas') + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) + theme(legend.position = "bottom")
Figure 6: Distribución de delitos por edades y cantón
La Figura 6 muestra nuevamente que los cuatro cantones más siniestrados vuelven a presentarse en la edad \(13\), por lo que la ubicación del cantón es independiente de la edad. Así, las víctimas de edad \(13\) en Guayaquil son la población que registra frecuencias más altas.
En cuanto al modus operandi que se presenta a la edad \(13\), también se pueden agrupar ambas distribuciones y visulizar su comportamiento.
options(repr.plot.width=14, repr.plot.height=6)
bd %>% filter(vd_edad != "2014") %>% count(modus_operandi, vd_edad) %>% ggplot(aes(x=vd_edad, y=n, fill=modus_operandi)) + geom_col() + ylab('Cuenta') + xlab('Edad víctimas') + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) + theme(legend.position="none")
Figure 7: Distribución de delitos por edades y modus operandi
options(repr.plot.width=14, repr.plot.height=6)
bd %>% filter(vd_edad != "2014") %>% count(modus_operandi, vd_edad) %>% ggplot(aes(x=vd_edad, y=n, fill=modus_operandi)) + geom_col() + ylab('Cuenta') + xlab('Edad víctimas')
Una vez más, en la Figura 7 se tiene una distribución similar a la de toda la población durante todos los días del mes, sin embargo se aprecia que para el modus operandi de estruche, el porcentaje se intensifica dentro de la población a edad \(13\), por lo que tomar acciones para controlar el asalto entre toda la población seguido de controlar el estruche para la población de \(13\) años puede ayudar a mejorar la situación delictiva en Ecuador.
Para estudiar la distribución por género, se filtran \(9\) observaciones registradas como \(\texttt{#NULL!}\) y se observan los siguientes porcentajes.
bd %>% filter(vd_sexo != "#NULL!") %>% select(vd_sexo) %>% table() %>% `/`(nrow(bd)) %>% `*`(100) %>% kable()
| vd_sexo | Freq |
|---|---|
| FEMENINO | 26.64662 |
| MASCULINO | 73.30973 |
En la Tabla 5 se tiene que se registró un \(73\%\) del género masculino y un \(27\%\) del género femenino.
Ahora se considera la base de datos completa para comparar con las distribuciones obtenidas anteriormente y evaluar su comportamiento.
bd <- read_excel("Analisis_Delincuencia_Base_datos.xlsx")
bd
## # A tibble: 21,004 × 45
## cod_delito zona_senplades provincia canton cod_subcircuito distrito circuito
## <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 2013.1m ZONA 8 DMG GUAYAQ… 09D07C07S02 PASCUAL… SAN FRA…
## 2 2013.3m ZONA 8 DMG GUAYAQ… 09D09C02S02 CEIBOS PUERTO …
## 3 2013.4m ZONA 8 DMG GUAYAQ… 09D02C04S02 ESTEROS ISLA TR…
## 4 2013.5m ZONA 8 DMG GUAYAQ… 09D07C07S04 PASCUAL… SAN FRA…
## 5 2013.6m ZONA 8 DMG GUAYAQ… 09D01C02S02 SUR UNION D…
## 6 2013.7m ZONA 8 DMG GUAYAQ… 09D03C04S02 09 DE O… GARAY
## 7 2013.8m ZONA 8 DMG GUAYAQ… 09D04C01S05 PORTETE CISNE
## 8 2013.9m ZONA 8 DMG GUAYAQ… 09D01C04S03 SUR SIETE L…
## 9 2013.10m ZONA 8 DMG GUAYAQ… 09D01C01S03 SUR GUASMO
## 10 2013.11m ZONA 8 DMG GUAYAQ… 09D04C03S04 PORTETE SALINAS
## # … with 20,994 more rows, and 38 more variables: subcircuito <chr>,
## # sector <chr>, zona <chr>, f_registro <dttm>, hora_registro <chr>,
## # f_infraccion <dttm>, semana <dbl>, semanas 2 <chr>, año_infraccion <dbl>,
## # mes_infraccion <chr>, hora_infraccion <chr>, dia_infraccion <chr>,
## # rango_ <chr>, dia_mes <dbl>, fuente <chr>, t_delito_pj <lgl>,
## # delito_pj <chr>, cmi <chr>, modus_operandi <chr>, arma_utilizada <chr>,
## # t_agresion <lgl>, lugar_infraccion <lgl>, condicion_lugar <lgl>,
## # quien_comete_delito <lgl>, veh_utilizado <lgl>, veh_color <lgl>,
## # veh_marca <lgl>, modelo <lgl>, victima_denunciante <lgl>,
## # vd_apellidos_nombres <chr>, vd_sexo <chr>, vd_edad <chr>,
## # vd_estado_civil <chr>, vd_nacionalidad <chr>, vd_etnia <chr>,
## # vd_profesion_ocupacion <chr>, vd_actividad <chr>, vd_instrucciOn <chr>
Se vuelve a considerar la cuenta de la variable \(\texttt{dia_mes}\) en la Figura 8.
bd %>% count(dia_mes) %>% ggplot(aes(x=dia_mes, y=n)) + geom_col() + ylab('Cuenta') + xlab('Día del mes')
Figure 8: Delitos por día del mes
Base de datos completa.
La Figura 9 vuelve a mostrar la cuenta de la hora de infracción.
bd %>% count(hora_infraccion,sort=TRUE) %>% ggplot(aes(x=hora_infraccion, y=n)) + geom_col()+
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank())
Figure 9: Delitos por hora del día
Base de datos completa.
Y se vuelven a observar los mismos picos temporales.
Ahora se compara la distribución del cantón por día del mes en la Figura 10 y el resumen de frecuencias en la Tabla 6.
bd %>% count(canton, dia_mes) %>% ggplot(aes(x=dia_mes, y=n, fill=canton)) + geom_col() + ylab('Cuenta') + xlab('Día del mes')
Figure 10: Delitos por día del mes y cantón
Base de datos completa.
bd %>% count(canton,sort=TRUE) %>% kable()
| canton | n |
|---|---|
| GUAYAQUIL | 19171 |
| DURAN | 1467 |
| SAMBORONDON | 250 |
| PLAYAS | 98 |
| BALAO | 9 |
| SALITRE | 5 |
| NARANJAL | 2 |
| EL TRIUNFO | 1 |
| NOBOL | 1 |
La distribución es la misma, y de aquí se aprecia que la proporción de \(\texttt{NA}\)’s se concentra en los cantones más frecuentes, por lo que se puede entender que la eliminación de estos registros no afectarán en la exploración pues se mantiene la forma original de la base de datos.
Se continúa la comparación con el modus operandi en la Figura 11.
options(repr.plot.width=14, repr.plot.height=6)
bd %>% count(modus_operandi, dia_mes) %>% ggplot(aes(x=dia_mes, y=n, fill=modus_operandi)) + geom_col() + ylab('Cuenta') + xlab('Día del mes') + theme(legend.position="none")
Figure 11: Modus operandi de delitos por día del mes
Base de datos completa.
options(repr.plot.width=14, repr.plot.height=6)
bd %>% count(modus_operandi, dia_mes) %>% ggplot(aes(x=dia_mes, y=n, fill=modus_operandi)) + geom_col() + ylab('Cuenta') + xlab('Día del mes')
También se preserva la distribución del modus operandi y de estas gráficas se puede concluir que la base de datos modificada es más eficiente pues retira el porcentaje de valores ausente que no permite representar los modus operandi menos frecuentes. Así mismo, en cuanto al control del registro de la información, se observa que en los registros con mayores denuncias se cometen más errores al registrar mayor cantidad de \(\texttt{NA}\)’s, por lo que la base de datos modificada puede brindar mayor confiabilidad ya que esta puede ser la razón principal en la falta de valores y no un comportamiento inrínseco de la problemática de la delincuencia.
Para evaluar el comportamiento de las víctimas con la base completa se toman las distribuciones de edades en las Figuras 12, 13 y 14.
bd %>% filter(vd_edad != "2014") %>% select(vd_edad) %>% unlist() %>% as.numeric() %>% hist(breaks=40,xlab="edad",ylab="frecuencia", main="Víctimas en Ecuador")
## Warning in hist(., breaks = 40, xlab = "edad", ylab = "frecuencia", main =
## "Víctimas en Ecuador"): NAs introducidos por coerción
Figure 12: Distribución de las víctimas por edad
Base de datos completa.
bd %>% filter(vd_edad != "2014") %>% count(canton, vd_edad) %>% ggplot(aes(x=vd_edad, y=n, fill=canton)) + geom_col() + ylab('Cuenta') + xlab('Edad víctimas') + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) + theme(legend.position = "bottom")
Figure 13: Distribución de delitos por edades y cantón
Base de datos completa.
options(repr.plot.width=14, repr.plot.height=6)
bd %>% filter(vd_edad != "2014") %>% count(modus_operandi, vd_edad) %>% ggplot(aes(x=vd_edad, y=n, fill=modus_operandi)) + geom_col() + ylab('Cuenta') + xlab('Edad víctimas') + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) + theme(legend.position="none")
Figure 14: Distribución de delitos por edades y modus operandi
Base de datos completa.
options(repr.plot.width=14, repr.plot.height=6)
bd %>% filter(vd_edad != "2014") %>% count(modus_operandi, vd_edad) %>% ggplot(aes(x=vd_edad, y=n, fill=modus_operandi)) + geom_col() + ylab('Cuenta') + xlab('Edad víctimas')
Al comparar las distribuciones de la base completa de las Figuras 12, 13 y 14 se puede notar, que aunque las proporciones se preservan respecto a la base modificada, existe un rango mucho mayor de edades siniestradas en la base de datos original, pues se muestran registros para edades \(3\) y \(6\) años que se eliminan con la limpieza de valores ausentes pues muy probablemente no se registran íntegramente estos casos al no estar en capacidad de denunciar independientemente. En estos casos se debe tener un mejor control para registrar estas observaciones lo más completas posibles.
La distribución por género para datos completos se muestra en la Tabla 7 y se observa que también se vuelven a preservar los porcentajes.
bd %>% filter(vd_sexo != "#NULL!") %>% select(vd_sexo) %>% table() %>% `/`(nrow(bd)) %>% `*`(100) %>% kable()
| vd_sexo | Freq |
|---|---|
| FEMENINO | 26.32832 |
| MASCULINO | 73.62883 |
Del conteo de valores ausentes se encontraron \(10\) columnas vacías, por lo que no se consideran en absoluto dentro del estudio, pues no proveen ninguna información adicional sobre la actividad delictiva, salvo que son variables que podrían registrarse en una base de datos posterior.
bd %<>% select_if(colSums(is.na(.)) < 21004) %>% glimpse()
## Rows: 21,004
## Columns: 35
## $ cod_delito <chr> "2013.1m", "2013.3m", "2013.4m", "2013.5m", "20…
## $ zona_senplades <chr> "ZONA 8", "ZONA 8", "ZONA 8", "ZONA 8", "ZONA 8…
## $ provincia <chr> "DMG", "DMG", "DMG", "DMG", "DMG", "DMG", "DMG"…
## $ canton <chr> "GUAYAQUIL", "GUAYAQUIL", "GUAYAQUIL", "GUAYAQU…
## $ cod_subcircuito <chr> "09D07C07S02", "09D09C02S02", "09D02C04S02", "0…
## $ distrito <chr> "PASCUALES", "CEIBOS", "ESTEROS", "PASCUALES", …
## $ circuito <chr> "SAN FRANCISCO", "PUERTO HONDO", "ISLA TRINITAR…
## $ subcircuito <chr> "SAN FRANCISCO 2", "PUERTO HONDO 2", "TRINITARI…
## $ sector <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1…
## $ zona <chr> "ZONA URBANA", "ZONA URBANA", "ZONA URBANA", "Z…
## $ f_registro <dttm> 2013-01-02, 2013-01-06, 2013-01-06, 2013-01-12…
## $ hora_registro <chr> "0.0555555555555556", "0.40625", "0.97916666666…
## $ f_infraccion <dttm> 2013-01-01, 2013-01-06, 2013-01-06, 2013-01-12…
## $ semana <dbl> 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,…
## $ `semanas 2` <chr> "01 ene 06 ene", "01 ene 06 ene", "01 ene 06 en…
## $ año_infraccion <dbl> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013,…
## $ mes_infraccion <chr> "enero", "enero", "enero", "enero", "enero", "e…
## $ hora_infraccion <chr> "A DETERMINARSE", "A DETERMINARSE", "0.91666666…
## $ dia_infraccion <chr> "martes", "domingo", "domingo", "sAbado", "domi…
## $ rango_ <chr> "DESCONOCIDA", "DESCONOCIDA", "22:00 a 22:59", …
## $ dia_mes <dbl> 1, 6, 6, 12, 13, 12, 16, 17, 17, 18, 18, 18, 18…
## $ fuente <chr> "DINASED", "DINASED", "DINASED", "DINASED", "DI…
## $ delito_pj <chr> "ASESINATO", "ASESINATO", "ASESINATO", "ASESINA…
## $ cmi <chr> "HOMICIDIOS/ASESINATOS", "HOMICIDIOS/ASESINATOS…
## $ modus_operandi <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ arma_utilizada <chr> "ARMA BLANCA", "ARMA BLANCA", "ARMA DE FUEGO", …
## $ vd_apellidos_nombres <chr> "ZANABRIA CASTRO JACINTO MANUEL", "CRUZ QUINDE …
## $ vd_sexo <chr> "MASCULINO", "MASCULINO", "MASCULINO", "MASCULI…
## $ vd_edad <chr> "36", "24", "20", "72", "23", "36", "41", "38",…
## $ vd_estado_civil <chr> "SOLTERO", "SOLTERO", "UNION DE HECHO", "UNION …
## $ vd_nacionalidad <chr> "ECUATORIANA", "ECUATORIANA", "ECUATORIANA", "E…
## $ vd_etnia <chr> "MESTIZA", "MESTIZA", "AFRO_ECUATORIANA", "MEST…
## $ vd_profesion_ocupacion <chr> "COCINERO", "EMPLEADO", "SE DESCONOCE", "COMERC…
## $ vd_actividad <chr> "TIENE_TRABAJO_O_NEGOCIO", "TIENE_TRABAJO_O_NEG…
## $ vd_instrucciOn <chr> "PRIMARIA", "PRIMARIA", "PRIMARIA", "PRIMARIA",…
Así, la base con información real consta solamente de \(35\) variables. Ahora, se tienen \(8\) columna con \(20626\) valores ausentes cada una. Esto coincide con la diferencia \(21004-378\), por lo que al filtrar estas columnas con la variable \(\texttt{cmi}\) se encuentra que estos \(20626\) registros por cada columna no son verdaderos valores ausentes, si no que son variables que prosiblemente sólo se registran al presentarse la categoría \(\texttt{HOMICIDIOS/ASESINATOS}\) de la columna \(\texttt{cmi}\).
bd %>% select(cmi,vd_nacionalidad,arma_utilizada,delito_pj,fuente,`semanas 2`,semana,sector,cod_subcircuito) %>% select_if(colSums(is.na(.)) <= 20626) %>% drop_na() %>% select(cmi) %>% table()
## cmi
## HOMICIDIOS/ASESINATOS
## 378
De manera similar esta relación se presenta con la variable \(\texttt{vd_etnia}\), sólo que en este caso se contabilizan \(20627\) \(\texttt{NA}\)’s, así que se cuenta solamente con un valor ausente verdadero.
bd %>% select(cmi,vd_etnia) %>% select_if(colSums(is.na(.)) <= 20627) %>% drop_na() %>% select(cmi) %>% table()
## cmi
## HOMICIDIOS/ASESINATOS
## 377
Y se repite nuevamente este comportamiento con las siguientes variables.
Para \(\texttt{vd_estado_civil}\), con \(4\) verdaderos valores ausentes.
bd %>% select(cmi,vd_estado_civil) %>% select_if(colSums(is.na(.)) <= 20630) %>% drop_na() %>% select(cmi) %>% table()
## cmi
## HOMICIDIOS/ASESINATOS
## 374
Para \(\texttt{vd_actividad}\), con \(13\) verdaderos valores ausentes y un resumen en la Tabla 8.
bd %>% select(cmi,vd_actividad) %>% select_if(colSums(is.na(.)) <= 20639) %>% drop_na() %>% select(cmi) %>% table()
## cmi
## HOMICIDIOS/ASESINATOS
## 365
bd %>% select(vd_actividad) %>% table() %>% sort(decreasing = TRUE) %>% head() %>% kable()
| vd_actividad | Freq |
|---|---|
| TIENE TRABAJO O NEGOCIO | 158 |
| NO TIENE TRABAJO | 61 |
| TIENE TRABAJO | 57 |
| ESTUDIANTE | 23 |
| TIENE_TRABAJO_O_NEGOCIO | 17 |
| SIN DATO | 12 |
Para \(\texttt{vd_profesion_ocupacion}\), con \(15\) verdaderos valores ausentes y un resumen en la Tabla 9.
bd %>% select(cmi,vd_profesion_ocupacion) %>% select_if(colSums(is.na(.)) <= 20641) %>% drop_na() %>% select(cmi) %>% table()
## cmi
## HOMICIDIOS/ASESINATOS
## 363
bd %>% select(vd_profesion_ocupacion) %>% table() %>% sort(decreasing = TRUE) %>% head() %>% kable()
| vd_profesion_ocupacion | Freq |
|---|---|
| COMERCIANTE | 64 |
| ALBAÑIL | 36 |
| ESTUDIANTE | 28 |
| DESEMPLEADO | 24 |
| SE DESCONOCE | 19 |
| NINGUNA | 12 |
Y para \(\texttt{vd_instrucciOn}\), con \(16\) verdaderos valores ausentes y un resumen en la Tabla 10.
bd %>% select(cmi,vd_instrucciOn) %>% select_if(colSums(is.na(.)) <= 20642) %>% drop_na() %>% select(cmi) %>% table()
## cmi
## HOMICIDIOS/ASESINATOS
## 362
bd %>% select(vd_instrucciOn) %>% table() %>% sort(decreasing = TRUE) %>% head() %>% kable()
| vd_instrucciOn | Freq |
|---|---|
| SECUNDARIA | 166 |
| PRIMARIA | 143 |
| SUPERIOR | 21 |
| SIN DATO | 14 |
| NINGUNA | 10 |
| SE DESCONOCE | 7 |
Se deben tomar medidas preventivas respecto en función de las frecuencias más altas registradas correspondiente a la población en Guayaquil, con énfasis en las víctimas a edad \(13\) que reportan delitos de asalto y estruche alrededor de las \(20:00\) hrs.
El registro de homicidios/asesinatos involucra un análisis posterior para la denuncia de delitos en cuanto a características más específicas de estas víctimas. Se tiene que las actividades que desembocan en homiciodios y asesinatos están principalmenmte relacioanadas con víctimas que tienen trabajo o negocio, seguidas de aquellas víctimas que no contaban con trabajo y con una frecuiencia también representativa en las víctimas con actividad estudiantil. Las profesiones u ocupaciones más frecuentes en lso delitos de homicidios y asesinatos son la de comerciante en primer lugar, seguida de la albañilería, la estudiantil y personas desempleadas respectivamente. La distribución de escolaridad de los homicidios y asesinatos se centra principalmente en población con secundaria, seguida de población con primaria y en tercer lugar se encuentra la población con escolaridad superior.
De la comparación de variables con datos ausentes se concluye que la única columna con \(\texttt{NA}\)’s significativos es la variable \(\texttt{zona}\), con un \(78\%\) de información faltante, sin embargo, para la imputación de esta información se recomienda cruzar la información de las demás variables espaciales dentro del estudio así como trabajar con la experiencia de área y la información existente geográfica y socioeconómica en Ecuador para integrar la clasificación de zonas rurales y urbanas en la actividad delictiva de forma más exacta en vez de llevar a cabo alguna metodología artificial de imputación. En cuanto a las demás variables, este estudio presenta un análisis comparativo para poder detectar la naturaleza de la falta de registros y que no equivale a la presencia de falta de información o información mal registrada.
## R version 4.2.1 (2022-06-23)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.3 LTS
##
## Matrix products: default
## BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/liblapack.so.3
##
## locale:
## [1] LC_CTYPE=es_MX.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=es_MX.UTF-8 LC_COLLATE=es_MX.UTF-8
## [5] LC_MONETARY=es_MX.UTF-8 LC_MESSAGES=es_MX.UTF-8
## [7] LC_PAPER=es_MX.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=es_MX.UTF-8 LC_IDENTIFICATION=C
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] lubridate_1.7.10 knitr_1.40 magrittr_2.0.3 readxl_1.4.1
## [5] forcats_0.5.1 stringr_1.4.0 dplyr_1.0.7 purrr_0.3.4
## [9] readr_2.0.0 tidyr_1.1.3 tibble_3.1.3 ggplot2_3.3.6
## [13] tidyverse_1.3.1 BiocStyle_2.24.0
##
## loaded via a namespace (and not attached):
## [1] Rcpp_1.0.9 assertthat_0.2.1 digest_0.6.29
## [4] utf8_1.2.2 R6_2.5.1 cellranger_1.1.0
## [7] backports_1.4.1 reprex_2.0.0 evaluate_0.16
## [10] httr_1.4.4 highr_0.9 pillar_1.6.1
## [13] rlang_1.0.5 rstudioapi_0.14 jquerylib_0.1.4
## [16] magick_2.7.3 rmarkdown_2.16 labeling_0.4.2
## [19] munsell_0.5.0 broom_0.7.8 compiler_4.2.1
## [22] modelr_0.1.8 xfun_0.33 pkgconfig_2.0.3
## [25] htmltools_0.5.3 tidyselect_1.1.1 bookdown_0.29
## [28] fansi_1.0.3 crayon_1.5.1 tzdb_0.1.2
## [31] dbplyr_2.1.1 withr_2.5.0 grid_4.2.1
## [34] jsonlite_1.8.0 gtable_0.3.1 lifecycle_1.0.2
## [37] DBI_1.1.3 scales_1.2.1 cli_3.4.0
## [40] stringi_1.7.8 cachem_1.0.6 farver_2.1.1
## [43] fs_1.5.2 xml2_1.3.3 bslib_0.4.0
## [46] ellipsis_0.3.2 generics_0.1.3 vctrs_0.3.8
## [49] tools_4.2.1 glue_1.6.2 hms_1.1.0
## [52] fastmap_1.1.0 yaml_2.3.5 colorspace_2.0-3
## [55] BiocManager_1.30.18 rvest_1.0.0 haven_2.4.1
## [58] sass_0.4.2