## [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"
#
Comparendos %>%
summarise(across(everything(), class)) %>% # Obtener clase de cada columna
pivot_longer(
everything(),
names_to = "Variable",
values_to = "Clase"
) %>%
mutate(Descripcion = case_when(
Variable == "No..MANDAMIENTO.DE.PAGO" ~ "Número 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 documento del infractor",
Variable == "No..IDENTIFICACION" ~ "Número de identificación del infractor",
Variable == "SEXO" ~ "Sexo del infractor (F, M, Empresa, Cédula nueva)",
Variable == "COD..INFRACCION" ~ "Código de la infracción cometida",
Variable == "COMPARENDO" ~ "Número del comparendo",
Variable == "FECHA.DE.COMPARENDO" ~ "Fecha de emisión del comparendo (YYYYMMDD)",
Variable == "FECHA" ~ "Fecha en formato caracter",
Variable == "AÑO" ~ "Año de la infracción",
Variable == "DIA" ~ "Día de la infracción",
Variable == "MES" ~ "Mes de la infracción",
Variable == "NOMBRE.DEL.MES" ~ "Nombre del mes de la infracción",
Variable == "PACA.DE.VEHICULO" ~ "Placa del vehículo",
Variable == "TIPO.DE.VEHICULO" ~ "Tipo de vehículo",
Variable == "VALOR_A_PAGAR" ~ "Valor monetario a pagar",
TRUE ~ "" # Por si hay variables adicionales
)) %>%
kable(caption = "Clases y descripción de cada variable en el dataset")| Variable | Clase | Descripcion |
|---|---|---|
| No..MANDAMIENTO.DE.PAGO | character | Número 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 documento del infractor |
| No..IDENTIFICACION | numeric | Número de identificación del infractor |
| SEXO | character | Sexo del infractor (F, M, Empresa, Cédula nueva) |
| COD..INFRACCION | integer | Código de la infracción cometida |
| COMPARENDO | character | Número del comparendo |
| FECHA.DE.COMPARENDO | integer | Fecha de emisión del comparendo (YYYYMMDD) |
| FECHA | character | Fecha en formato caracter |
| AÑO | integer | Año de la infracción |
| DIA | integer | Día de la infracción |
| MES | integer | Mes de la infracción |
| NOMBRE.DEL.MES | character | Nombre del mes de la infracción |
| PACA.DE.VEHICULO | character | Placa del vehículo |
| TIPO.DE.VEHICULO | character | Tipo de vehículo |
| VALOR_A_PAGAR | character | Valor monetario a pagar |
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.
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).
## [1] 2120
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 = "#4CAF50", 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 = "#006400", hjust = 0.5), # Título verde oscuro, centrado y en negrita
axis.title = element_text(color = "#228B22"), # Títulos ejes en verde
axis.text = element_text(color = "#004d00") # 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 = "#004d00", # Color verde oscuro para el texto
size = 5)Comparendos %>%
count(NOMBRE.DEL.MES) %>%
arrange((n)) %>%
ggplot(aes(x = NOMBRE.DEL.MES, y = n, fill = NOMBRE.DEL.MES)) +
geom_col(width = 0.6, show.legend = FALSE) + # gráfico de columnas
scale_fill_manual(values = c("#4CAF50", "#2E8B57")) + # colores personalizados
labs(title = "Numero de comparendos por mes",
x = "Mes",
y = "Cantidad de comparendos") +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", color = "#006400", hjust = 0.5),
axis.title = element_text(color = "#228B22"),
axis.text = element_text(color = "#004d00")
) +
geom_text(aes(label = n), vjust = -0.2, color = "#004d00", size = 5)# Gráfico: Distribución de comparendos por 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 = "#006400", size = 4, fontface = "bold") +
scale_fill_manual(values = c("#2E8B57", "#66BB6A", "#A5D6A7", "#B9F6CA")) +
labs(title = "Distribucion de comparendos por sexo",
x = "Sexo",
y = "Cantidad de comparendos") +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", color = "#006400", size = 15, hjust = 0.5),
axis.title = element_text(color = "#228B22"),
axis.text = element_text(color = "#004d00")
)Comparendos %>%
filter(SEXO == "MUJER", !is.na(COD..INFRACCION)) %>%
mutate(COD..INFRACCION = factor(COD..INFRACCION)) %>% # <-- Convertimos a factor
count(COD..INFRACCION) %>%
mutate(porcentaje = round(100 * n / sum(n), 1)) %>%
ggplot(aes(x = reorder(COD..INFRACCION, -n), y = n, fill = COD..INFRACCION)) +
geom_col(show.legend = FALSE) +
geom_text(aes(label = paste0(porcentaje, "%")),
vjust = -0.5, color = "#006400", size = 4, fontface = "bold") +
scale_fill_brewer(palette = "Set2") +
labs(title = "Tipos de infracciones cometidas por mujeres",
x = "Tipo de infraccion",
y = "Cantidad de comparendos") +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", color = "#006400", size = 15, hjust = 0.5),
axis.title = element_text(color = "#228B22"),
axis.text = element_text(color = "#004d00"),
axis.text.x = element_text(angle = 45, hjust = 1)
)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 = "#006400", 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 = "#006400", size = 15, hjust = 0.5),
legend.title = element_text(color = "#228B22", face = "bold"),
legend.text = element_text(color = "#004d00")
)El tipo de infracción 64 es, con diferencia, el más frecuente, representando una gran mayoría del total de infracciones. Esto sugiere que hay un tipo de infracción dominante que podría requerir atención prioritaria en campañas de prevención o control.
Las mujeres encabezan la cantidad de comparendos con alrededor del 44%, seguidas por los hombres (29%).
Los vehiculos con mayores numeros de comparendos son los carros, representando un 91.4% de los registros totales.
La base de datos cubre solamente dos meses del año 2010, lo que genera un limitante para un analisis completo, la variable SEXO cuenta con registros incorrectos o mal categorizados y, del mismo modo, la variable valor_a_pagar requiere una limpieza para generar un analisis financiero completo.