1 Introducción

En este documento se realiza una breve exploración de la base de datos Comparendos, que contiene información relacionada con infracciones de tránsito en la ciudad de Barranquilla, en el periodo Abril-Mayo del año 2010. Con el fin de obtener una visión general de la situación presentada, se realizarón gráficos que muestran la cantidad de comparendos reportados con respecto al tipo de infracción, el tipo de vehiculo, los meses registrados, el sexo del infractor, etc.Se utilizarán herramientas básicas de R para importar, visualizar y analizar los datos. A continuación se muestra la información brindada por la base de datos elegida.

names(Comparendos)
##  [1] "No. MANDAMIENTO DE PAGO"   "FECHA MANDAMIENTO DE PAGO"
##  [3] "EJECUTADO"                 "TIPO DE IDENTIFICACION"   
##  [5] "No. IDENTIFICACION"        "SEXO"                     
##  [7] "COD. INFRACCION"           "COMPARENDO"               
##  [9] "FECHA DE COMPARENDO"       "FECHA"                    
## [11] "AÑO"                       "DIA"                      
## [13] "MES"                       "NOMBRE DEL MES"           
## [15] "PACA DE VEHICULO"          "TIPO DE VEHICULO"         
## [17] "VALOR_A_PAGAR"

1.1 Diccionario de variables

Este resumen ofrece una descripción general de las variables numéricas y categóricas del conjunto de datos.

Comparendos %>%
  summarise(across(everything(), ~ paste(class(.), collapse = ", "))) %>%
  pivot_longer(
    everything(),
    names_to = "Variable",
    values_to = "Clase"
  ) %>%
  mutate(
    Descripcion = case_when(
     Variable == "No. MANDAMIENTO DE PAGO"    ~ "Numero del mandamiento de pago",
    Variable == "FECHA MANDAMIENTO DE PAGO"  ~ "Fecha del mandamiento de pago",
    Variable == "EJECUTADO"                  ~ "Estado del comparendo",
    Variable == "TIPO DE IDENTIFICACION"     ~ "Tipo de identificacion del infractor",
    Variable == "No. IDENTIFICACION"         ~ "Numero de identificacion del infractor",
    Variable == "SEXO"                       ~ "Sexo del infractor",
    Variable == "COD. INFRACCION"            ~ "Codigo de la infraccion",
    Variable == "COMPARENDO"                 ~ "Numero del comparendo",
    Variable == "FECHA DE COMPARENDO"        ~ "Fecha en que se hizo el comparendo",
    Variable == "FECHA"                      ~ "Fecha en formato caracter",
    Variable == "AÑO"                        ~ "Ano de la infraccion",
    Variable == "DIA"                        ~ "Dia de la infraccion",
    Variable == "MES"                        ~ "Mes de la infraccion",
    Variable == "NOMBRE DEL MES"             ~ "Nombre del mes de la infraccion",
    Variable == "PACA DE VEHICULO"           ~ "Placa del vehiculo",
    Variable == "TIPO DE VEHICULO"           ~ "Tipo de vehiculo",
    Variable == "VALOR_A_PAGAR"              ~ "Valor monetario a pagar",
    TRUE ~ ""
  )) %>%
  knitr::kable(
    caption = "Clases y descripcion de cada variable en el dataset"
  )
Clases y descripcion de cada variable en el dataset
Variable Clase Descripcion
No. MANDAMIENTO DE PAGO character Numero del mandamiento de pago
FECHA MANDAMIENTO DE PAGO character Fecha del mandamiento de pago
EJECUTADO character Estado del comparendo
TIPO DE IDENTIFICACION character Tipo de identificacion del infractor
No. IDENTIFICACION numeric Numero de identificacion del infractor
SEXO character Sexo del infractor
COD. INFRACCION numeric Codigo de la infraccion
COMPARENDO character Numero del comparendo
FECHA DE COMPARENDO numeric Fecha en que se hizo el comparendo
FECHA POSIXct, POSIXt Fecha en formato caracter
AÑO numeric Ano de la infraccion
DIA numeric Dia de la infraccion
MES numeric Mes de la infraccion
NOMBRE DEL MES character Nombre del mes de la infraccion
PACA DE VEHICULO character Placa del vehiculo
TIPO DE VEHICULO character Tipo de vehiculo
VALOR_A_PAGAR numeric Valor monetario a pagar

1.2 Control de calidad de los datos

Antes de realizar el análisis, se verifico la integridad de los datos teniendo en cuenta las siguientes caracteristicas:

Valores faltantes: Ninguna variable critica tiene NA significativos.

Variables categoricas incosistentes: Se identifico que la columna SEXO incluye categorias incorrectas como “EMPRESA” y “CEDULA NUEVA”.

Formatos de variables: Se convirtieron fechas a formato Date y el valor_a_pagar a formato numerico.

1.3 Librerías utilizadas

Para realizar este informe se hizo uso de las siguientes librerias:

knitr: Es una libreria que convierte los resultados de R en formatos bonitos dentro de los documentos Markdown, HTML, word o PDF.

readr: Forma parde del tidyverse y ayuda a importar datos desde archivos de texto (CSV, TSV, etc)

dplyr: Una de las librerias más importantes del tidyverse, sirve para manipular y transformar datos de manera eficiente.

ggplot2: Libreria para visualización de datos basada en la gramatica de los gráficos.

tidyverse: Conjunto de paquetes diseñados para trabajar juntos de manera coherente en el flujo de analisis de datos (lectura, manipulación, visualización).

2 Consultas a la base de datos

2.1 Comparendos por Genero

A continuación, se muestra la proporción de comparendos por sexo, en la que se aprecia que las mujeres tienen una proporción de comparendos más alta, seguidas por los hombres y empresas. Sin embargo se debe resaltar la definicion de esta categoria debido a la inclusión de “empresa” y “cedula nueva”, y estas no deberian corresponder como tal al apartado de sexo.

Comparendos %>%
  count(SEXO) %>%
  mutate(porcentaje = round(100 * n / sum(n), 1)) %>%
  ggplot(aes(x = reorder(SEXO, -n), y = n, fill = SEXO)) +
  geom_col(show.legend = FALSE) +
  geom_text(aes(label = paste0(porcentaje, "%")), 
            vjust = -0.5, color = "black", size = 4, fontface = "bold") +
  scale_fill_manual(values = c("yellow", "blue", "green", "purple")) +
  labs(title = "Distribucion de comparendos por Genero",
       x = "Genero",
       y = "Cantidad de comparendos") +
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(face = "bold", color = "black", size = 15, hjust = 0.5),
    axis.title = element_text(color = "black"),
    axis.text = element_text(color = "black")
  )

sexo <- Comparendos %>%
  count(`SEXO`) %>%
  arrange(desc(n)) %>%
  mutate(
    porcentaje = round(n / sum(n) * 100, 1),
    etiqueta = paste0(porcentaje, "%")
  )

sexo
## # A tibble: 4 × 4
##   SEXO             n porcentaje etiqueta
##   <chr>        <int>      <dbl> <chr>   
## 1 MUJER          945       44.6 44.6%   
## 2 HOMBRE         615       29   29%     
## 3 EMPRESA        472       22.3 22.3%   
## 4 CÉDULA NUEVA    88        4.2 4.2%

2.2 Conteo por tipo de infracción

El gráfico evidencia una distribución desigual de las infracciones, destacándose el código 64 como el de mayor frecuencia. Esta infracción corresponde al exceso de velocidad, concentrando la mayor proporción de casos registrados durante el período analizado.

Comparendos %>%
  count(`COD. INFRACCION`) %>%                    # Cuenta las infracciones
  arrange(desc(n)) %>%                           # Ordena de mayor a menor
  head(10) %>%                                  # Toma las 10 primeras filas
  ggplot(aes(x = reorder(`COD. INFRACCION`, n), y = n)) +  # Gráfico con eje x reordenado
  geom_col(fill = "purple", width = 0.6) +    # Barras verdes y un poco más delgadas
  coord_flip() +                                # Barras horizontales
  labs(title = "Cantidad de infracciones por tipos",
       x = "Tipo de infraccion",
       y = "Cantidad") +
  theme_minimal(base_size = 13) +               # Tema minimal con tamaño base 13
  theme(
    plot.title = element_text(face = "bold", color = "black", hjust = 0.5),  # Título verde oscuro, centrado y en negrita
    axis.title = element_text(color = "black"),    # Títulos ejes en verde
    axis.text = element_text(color = "black")      # Texto de ejes en verde oscuro
  ) +
  geom_text(aes(label = n), 
            vjust = 0.5, hjust = 1,               # Texto dentro de la barra, centrado verticalmente y a la izquierda
            color = "black",                     # Color verde oscuro para el texto
            size = 5)

infracciones <- Comparendos %>%
  count(`COD. INFRACCION`) %>%
  arrange(desc(n)) %>%
  mutate(
    porcentaje = round(n / sum(n) * 100, 1),
    etiqueta = paste0(porcentaje, "%")
  )

2.3 Cantidad de comparendos por tipo de vehiculo

En el grafico vemos que la mayoría de los comparendos fueron impuestos a conductores de carro (1.938 casos; 91,4%), mientras que las motocicletas registraron 182 comparendos (8,6%). Esto evidencia un claro predominio de las infracciones asociadas a vehículos tipo carro.

vehiculos <- Comparendos %>%
  count(`TIPO DE VEHICULO`) %>%
  arrange(desc(n)) %>%
  mutate(
    porcentaje = round(n / sum(n) * 100, 1),
    etiqueta = paste0(porcentaje, "%")
  )
vehiculos
## # A tibble: 2 × 4
##   `TIPO DE VEHICULO`     n porcentaje etiqueta
##   <chr>              <int>      <dbl> <chr>   
## 1 CARRO               1938       91.4 91.4%   
## 2 MOTO                 182        8.6 8.6%
Comparendos %>%
  count(`TIPO DE VEHICULO`) %>%
  mutate(porcentaje = round(100 * n / sum(n), 1),
         etiqueta = paste0(`TIPO DE VEHICULO`, " (", porcentaje, "%)")) %>%
  ggplot(aes(x = "", y = porcentaje, fill = `TIPO DE VEHICULO`)) +
  geom_col(width = 1, color = "white") +
  coord_polar(theta = "y") +
  scale_fill_manual(values = c("#2E8B57", "#66BB6A", "#A5D6A7", "#B9F6CA", "#81C784")) +
  geom_text(aes(label = paste0(porcentaje, "%")),
            position = position_stack(vjust = 0.5), color = "white", size = 4) +
  labs(title = "Distribucion de comparendos por tipo de vehiculo",
       fill = "Tipo de vehiculo") +
  theme_void() +
  theme(
    plot.title = element_text(face = "bold", color = "black", size = 15, hjust = 0.5),
    legend.title = element_text(color = "black", face = "bold"),
    legend.text = element_text(color = "black")
  )

3 Conclusiones

En el análisis de los comparendos se evidencia una alta concentración de infracciones en el código 64 (exceso de velocidad), siendo la conducta más frecuente durante el período evaluado, así como un predominio de comparendos asociados a vehículos tipo carro frente a motocicletas. En la clasificación por género se observan inconsistencias en la variable, debido a la inclusión de categorías como “empresa” y “cédula nueva”, las cuales no corresponden directamente a sexo, lo que puede afectar la interpretación de los resultados. En conjunto, los hallazgos muestran que las infracciones se concentran principalmente en el exceso de velocidad y en determinados tipos de registro, lo que sugiere la necesidad de depurar y estandarizar las variables para un análisis más preciso.