COMPARENDOS

Un comparendo en Colombia es la citación oficial y formal que expide una autoridad de tránsito a una persona por la presunta comisión de una infracción, la cual no constituye una multa o sanción definitiva en sí misma, sino el inicio de un proceso administrativo que le otorga al ciudadano el derecho a comparecer ante la entidad competente para aceptar la falta obteniendo descuentos mediante un curso pedagógico o para rechazarla y presentar su defensa en una audiencia pública.

# La base de datos debe estar en la MISMA CARPETA que este archivo .Rmd.
# No se usa file.choose(), por lo que no tienes que seleccionar la ruta manualmente.
archivo_rmd <- tryCatch(knitr::current_input(), error = function(e) "")
carpeta_rmd <- if (!is.null(archivo_rmd) && nzchar(archivo_rmd)) {
  dirname(normalizePath(archivo_rmd, winslash = "/", mustWork = FALSE))
} else {
  getwd()
}

if (!dir.exists(carpeta_rmd) || carpeta_rmd == ".") {
  carpeta_rmd <- getwd()
}

# Busca automáticamente cualquier archivo Excel que contenga
# "Comparendos" en el nombre, sin importar mayúsculas/minúsculas.
archivos_excel <- list.files(
  path = carpeta_rmd,
  pattern = "\\.xlsx$",
  full.names = TRUE,
  ignore.case = TRUE
)

archivos_bd <- archivos_excel[
  grepl("comparendos", basename(archivos_excel), ignore.case = TRUE)
]

if (length(archivos_bd) == 0) {
  stop(
    paste0(
      "No se encontró la base de datos. ",
      "Coloca el archivo Excel de comparendos en la misma carpeta del Rmd.\n",
      "Carpeta buscada: ", carpeta_rmd
    )
  )
}

archivo <- archivos_bd[1]

comparendos <- read_excel(
  archivo,
  sheet = "Data Original (2)"
)

comparendos <- comparendos %>%
  mutate(
    COSTO_2026 = case_when(
      `COD. INFRACCION` %in% c(64, 67) ~ 633232,
      `COD. INFRACCION` %in% c(76, 77) ~ 1266101,
      TRUE ~ NA_real_
    )
  )

DESCRIPCIÓN GENERAL

Para el desarrollo de este análisis se empleó una base de datos compuesta por 2.120 registros y 18 variables. El conjunto de información integra atributos relacionados con los infractores, los vehículos, las infracciones, la temporalidad de los registros y los valores económicos asignados a las sanciones, configurando un insumo adecuado para la exploración estadística descriptiva.

BASE DE DATOS

La base de datos contiene 38.178 registros distribuidos en 18 variables, lo que permite realizar un análisis descriptivo de diferentes características relacionadas con los comparendos de tránsito. Del total de registros, 2.120 (100,0%) cuenta con un valor de costo de infracción calculado, lo que permite analizar también el impacto económico de las sanciones registradas.

En términos económicos, el costo total acumulado de las infracciones identificadas asciende a $1.588.637.881. De igual manera, el costo promedio permite conocer que una infracción representa aproximadamente $749.357 entre los registros que tienen un valor asignado. Estas medidas permiten establecer una primera aproximación al impacto económico de las infracciones registradas.

Desde el punto de vista temporal, los registros pueden ser analizados teniendo en cuenta el año, el mes, el día de la semana y la fecha exacta en la que se presentó cada comparendo. Esto permite identificar los períodos con mayor concentración de infracciones y establecer diferencias entre los distintos momentos analizados. De igual manera, las variables relacionadas con el tipo de vehículo, el ejecutado y el código de infracción permiten realizar comparaciones entre diferentes categorías.

En consecuencia, la información disponible permite desarrollar un análisis estadístico descriptivo basado principalmente en frecuencias, totales, promedios y comparaciones, utilizando tablas y representaciones gráficas para facilitar la interpretación de los resultados.

library(dplyr)
library(ggplot2)
library(knitr)
library(lubridate)

COMPARACIÓN DE COMPARENDOS ENTRE ABRIL Y MAYO

Esta consulta realiza un análisis estadístico descriptivo de la frecuencia de comparendos registrados durante abril y mayo. Se utiliza la cantidad de registros como medida de frecuencia absoluta para comparar ambos meses. La diferencia entre las frecuencias permite establecer qué mes presentó una mayor concentración de comparendos y qué tan amplia es la variación entre los dos periodos. La gráfica de barras facilita la interpretación visual de esta comparación.

En términos estadísticos, abril registró 712 comparendos (33,6% del total) y mayo 1.408 (66,4% del total). La diferencia absoluta fue de 696 registros, por lo que mayo presentó la mayor frecuencia, con una diferencia relativa de 97,8% frente al otro mes. Este resultado permite cuantificar la diferencia entre ambos meses en lugar de limitar la interpretación a la observación visual del gráfico.

library(dplyr)
library(knitr)
library(ggplot2)

# Consultar los comparendos de abril y mayo
comparacion_meses <- comparendos %>%
  mutate(MES = toupper(trimws(as.character(`NOM MES`)))) %>%
  filter(MES %in% c("ABRIL", "MAYO")) %>%
  count(MES, name = "Cantidad")

# Asegurar que aparezcan ambos meses
comparacion_meses <- data.frame(
  MES = c("ABRIL", "MAYO")
) %>%
  left_join(comparacion_meses, by = "MES") %>%
  mutate(Cantidad = coalesce(Cantidad, 0L),
         Porcentaje = Cantidad / nrow(comparendos))


# Identificar el mes con más comparendos
if (comparacion_meses$Cantidad[1] >
    comparacion_meses$Cantidad[2]) {
  cat("\nAbril acumuló más comparendos.")
} else if (comparacion_meses$Cantidad[2] >
           comparacion_meses$Cantidad[1]) {
  cat("\nMayo acumuló más comparendos.")
} else {
  cat("\nAmbos meses tienen la misma cantidad de comparendos.")
}
## 
## Mayo acumuló más comparendos.
# Gráfico de barras
ggplot(comparacion_meses,
       aes(x = MES, y = Cantidad)) +
  geom_col(fill = "#6FA8DC", width = 0.6) +
  geom_text(aes(label = paste0(fmt_n(Cantidad), " (", fmt_pct(Porcentaje), ")")), vjust = -0.5) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.15))) +
  labs(
    title = "Comparendos registrados en abril y mayo",
    caption = "Porcentaje calculado sobre el total de comparendos de la base",
    x = "Mes",
    y = "Cantidad de comparendos"
  ) +
  theme_minimal() +
  theme(legend.position = "none")

COMPARENDOS POR DÍA DE LA SEMANA

En esta consulta se analiza la distribución de frecuencias de los comparendos según el día de la semana. La medida principal es la frecuencia absoluta, es decir, el número de registros observados para cada día. A partir de esta distribución se identifica el día con mayor frecuencia y se compara con el resto de categorías, permitiendo reconocer posibles concentraciones temporales de los registros. La gráfica de barras muestra de forma directa las diferencias de frecuencia entre los días analizados.

library(dplyr)
library(ggplot2)
library(knitr)

# Contar comparendos por día de la semana
comparendos_dia <- comparendos %>%
  filter(!is.na(`NOM DIA`)) %>%
  count(`NOM DIA`, name = "Cantidad") %>%
  arrange(desc(Cantidad)) %>%
  mutate(Porcentaje = Cantidad / sum(Cantidad))

# Identificar el día con más comparendos
dia_mayor <- comparendos_dia %>%
  filter(Cantidad == max(Cantidad))

cat(
  "\nEl día con más comparendos es:",
  paste(dia_mayor$`NOM DIA`, collapse = ", "),
  "con", paste0(max(comparendos_dia$Cantidad), " registros (",
                fmt_pct(max(comparendos_dia$Porcentaje)), " del total).")
)
## 
## El día con más comparendos es: DOMINGO con 396 registros (18,7% del total).
# Gráfico de barras horizontales
ggplot(
  comparendos_dia,
  aes(x = reorder(`NOM DIA`, Cantidad), y = Cantidad)
) +
  geom_col(fill = "#176B5B", width = 0.7) +
  geom_text(aes(label = paste0(fmt_n(Cantidad), " (", fmt_pct(Porcentaje), ")")), hjust = -0.1) +
  coord_flip() +
  scale_y_continuous(expand = expansion(mult = c(0, 0.28))) +
  labs(
    title = "Comparendos por día de la semana",
    caption = "Porcentaje calculado sobre los comparendos con día registrado",
    x = "Comparendos por dia",
    y = "Cantidad"
  ) +
  theme_minimal()

Desde el punto de vista estadístico, el día DOMINGO presentó la mayor frecuencia, con 396 comparendos (18,7% del total), mientras que JUEVES presentó la menor frecuencia, con 256 (12,1%). La diferencia entre estos extremos permite observar el nivel de concentración de los registros según el día de la semana.

COMPARENDOS POR VEHÍCULOS

Esta consulta realiza un análisis descriptivo de los comparendos según el tipo de vehículo. Se calculan tres medidas: la frecuencia absoluta de comparendos, el costo total de las infracciones y el costo promedio por comparendo. La frecuencia permite identificar qué vehículos aparecen con mayor presencia en la base, mientras que el costo total permite determinar qué categoría concentra una mayor cantidad económica de infracciones. El promedio complementa el análisis al mostrar el valor medio de la sanción entre los registros de cada tipo de vehículo.

library(dplyr)
library(ggplot2)
library(knitr)

# Contar comparendos por tipo de vehículo
comparendos_vehiculo <- comparendos %>%
  filter(!is.na(VEHICULO), trimws(as.character(VEHICULO)) != "") %>%
  count(VEHICULO, name = "Cantidad") %>%
  arrange(desc(Cantidad)) %>%
  mutate(Porcentaje = Cantidad / sum(Cantidad))

# Identificar el vehículo con más comparendos
vehiculo_mayor <- comparendos_vehiculo %>%
  filter(Cantidad == max(Cantidad))

cat(
  "\nEl tipo de vehículo con más comparendos es:",
  paste(vehiculo_mayor$VEHICULO, collapse = ", "),
  "con", paste0(max(comparendos_vehiculo$Cantidad), " registros (",
                fmt_pct(max(comparendos_vehiculo$Porcentaje)), " del total).")
)
## 
## El tipo de vehículo con más comparendos es: AUTO con 1938 registros (91,4% del total).
# Gráfico de barras horizontales
ggplot(
  comparendos_vehiculo,
  aes(x = reorder(VEHICULO, Cantidad), y = Cantidad)
) +
  geom_col(fill = "#EA580C", width = 0.7) +
  geom_text(aes(label = paste0(fmt_n(Cantidad), " (", fmt_pct(Porcentaje), ")")), hjust = -0.1) +
  coord_flip() +
  scale_y_continuous(expand = expansion(mult = c(0, 0.28))) +
  labs(
    title = "Comparendos por tipo de vehículo",
    caption = "Porcentaje calculado sobre los comparendos con vehículo registrado",
    x = "Vehículo",
    y = "Cantidad de comparendos"
  ) +
  theme_minimal()

En la distribución por vehículo, la mayor frecuencia corresponde a AUTO, con 1.938 comparendos, equivalentes al 91,4% del total. Este resultado indica una mayor presencia de dicha categoría dentro de la base analizada. Sin embargo, la frecuencia de registros y el costo económico son medidas diferentes, por lo que ambas deben interpretarse de manera conjunta para obtener una conclusión más completa.

TOP 10 DE MÁS INFRACTORES

El propósito de esta consulta es identificar las diez personas con mayor frecuencia de comparendos registrados en la variable EJECUTADO. Se emplea la frecuencia absoluta como medida estadística para contar cuántas veces aparece cada persona en la base de datos y posteriormente se seleccionan las diez frecuencias más altas. El resultado permite comparar la concentración de registros entre las personas con mayor número de comparendos, sin interpretar esta frecuencia como una explicación causal de las infracciones.

library(dplyr)
library(ggplot2)
library(knitr)

top_personas <- comparendos %>%
  filter(!is.na(EJECUTADO),
         trimws(as.character(EJECUTADO)) != "") %>%
  count(EJECUTADO, name = "Cantidad") %>%
  arrange(desc(Cantidad)) %>%
  mutate(Porcentaje = Cantidad / sum(Cantidad)) %>%
  slice_head(n = 10)

# Gráfica con los nombres reales
ggplot(top_personas,
       aes(x = reorder(EJECUTADO, Cantidad), y = Cantidad)) +
  geom_col(fill = "#0891B2", width = 0.7) +
  geom_text(aes(label = paste0(fmt_n(Cantidad), " (", fmt_pct(Porcentaje, 2), ")")), hjust = -0.1) +
  coord_flip() +
  scale_y_continuous(expand = expansion(mult = c(0, 0.25))) +
  labs(
    title = "Top 10 de mas infractores",
    caption = "Porcentaje calculado sobre el total de comparendos con ejecutado registrado",
    x = "Nombre",
    y = "Cantidad de comparendos"
  ) +
  theme_minimal()

Estadísticamente, la persona o personas ubicadas en el primer lugar presentan una frecuencia máxima de 61 comparendos (2,88% del total) dentro de los registros analizados. En conjunto, las diez personas del Top 10 concentran el 12,41% de los comparendos. El listado de las diez frecuencias más altas permite observar cómo se concentran los registros entre los valores extremos, aunque no permite establecer por sí mismo las causas de esta concentración.

TOP FECHAS CON MÁS COMPARENDOS

Esta consulta analiza la frecuencia diaria de los comparendos y selecciona las diez fechas con mayor número de registros. La frecuencia absoluta permite determinar en qué fechas se concentró la mayor cantidad de comparendos y comparar la magnitud de estas concentraciones. Al limitar el análisis a las diez fechas con mayor frecuencia, se facilita la identificación de los días que presentan los valores más altos dentro del conjunto de datos.

library(dplyr)
library(ggplot2)
library(knitr)

top_fechas <- comparendos %>%
  filter(!is.na(`FECHA DE COMPARENDO`)) %>%
  count(`FECHA DE COMPARENDO`, name = "Cantidad") %>%
  arrange(desc(Cantidad)) %>%
  mutate(Porcentaje = Cantidad / sum(Cantidad)) %>%
  slice_head(n = 10)

# Gráfica
ggplot(
  top_fechas,
  aes(x = reorder(as.factor(`FECHA DE COMPARENDO`), Cantidad),
      y = Cantidad)
) +
  geom_col(fill = "#0891B2") +
  geom_text(aes(label = paste0(fmt_n(Cantidad), " (", fmt_pct(Porcentaje), ")")), hjust = -0.1) +
  coord_flip() +
  scale_y_continuous(expand = expansion(mult = c(0, 0.25))) +
  labs(
    title = "Top 10 de fechas con más comparendos",
    caption = "Porcentaje calculado sobre el total de comparendos con fecha registrada",
    x = "Fecha",
    y = "Cantidad de comparendos"
  ) +
  theme_minimal()

Las fechas con mayor frecuencia concentran 89 comparendos en el máximo observado (4,2% del total). Entre las diez fechas del listado se reúne el 34,8% de todos los comparendos. El análisis de las diez fechas con mayor frecuencia permite identificar los puntos temporales de mayor concentración y comparar su magnitud con las demás fechas incluidas en el listado.

comparendos_vehiculo_costo <- comparendos %>%
  filter(!is.na(VEHICULO), trimws(as.character(VEHICULO)) != "") %>%
  group_by(VEHICULO) %>%
  summarise(
    CANTIDAD = n(),
    TOTAL_COSTO = ifelse(
      sum(!is.na(COSTO_2026)) > 0,
      sum(COSTO_2026, na.rm = TRUE),
      NA_real_
    ),
    PROMEDIO = ifelse(
      sum(!is.na(COSTO_2026)) > 0,
      mean(COSTO_2026, na.rm = TRUE),
      NA_real_
    ),
    .groups = "drop"
  ) %>%
  arrange(desc(TOTAL_COSTO)) %>%
  mutate(PORC_COSTO = TOTAL_COSTO / sum(TOTAL_COSTO, na.rm = TRUE))

COSTO DE INFRACCIONES SEGÚN TIPO DE VEHÍCULO

ggplot(
  comparendos_vehiculo_costo,
  aes(
    x = reorder(VEHICULO, TOTAL_COSTO),
    y = TOTAL_COSTO
  )
) +
  geom_col(fill = "#6FA8DC", width = 0.7) +
  geom_text(
    aes(label = paste0(dollar(TOTAL_COSTO, prefix = "$", big.mark = ".", decimal.mark = ","),
                       " (", fmt_pct(PORC_COSTO), ")")),
    hjust = -0.1,
    size = 3.5
  ) +
  coord_flip() +
  scale_y_continuous(
    labels = dollar_format(prefix = "$", big.mark = ".", decimal.mark = ","),
    expand = expansion(mult = c(0, 0.55))
  ) +
  labs(
    title = "Costo total de comparendos por tipo de vehículo",
    x = "Tipo de vehículo",
    y = "Costo total de infracciones",
    caption = "Porcentaje calculado sobre el costo total acumulado de todas las categorías"
  ) +
  theme_minimal()

El análisis económico muestra el comportamiento del costo de las infracciones según el tipo de vehículo. La categoría ubicada en primer lugar (AUTO) concentra el mayor costo total registrado, con $1.458.833.670 (91,8% del costo total), mientras que el costo promedio permite establecer cuánto representa, en términos monetarios, un comparendo típico dentro de cada categoría. Por tanto, el tipo de vehículo con mayor costo total no necesariamente es el que presenta la sanción promedio más alta, ya que el costo total también depende de la cantidad de comparendos registrados.

CONCLUSIÓN

A partir del análisis realizado sobre la base de datos de comparendos, se pudo obtener una visión general del comportamiento de las infracciones registradas, teniendo en cuenta diferentes variables como el período de ocurrencia, el día de la semana, el tipo de vehículo, las personas con mayor cantidad de comparendos, las fechas con mayor concentración de registros y el costo económico asociado a las infracciones. La utilización de estas variables permitió realizar una comparación estadística de los registros y reconocer los principales patrones presentes en la información analizada.

En primer lugar, la base de datos está conformada por 38.178 registros y 18 variables, lo que representa un conjunto de información suficientemente amplio para realizar un análisis descriptivo. Dentro de las variables disponibles se encuentran datos relacionados con los infractores, los vehículos, las infracciones, las fechas y los valores económicos, permitiendo analizar los comparendos desde diferentes perspectivas. Del total de registros, el 100,0% cuenta con un costo de infracción asignado.

En cuanto a la comparación entre los meses de abril y mayo, se identificaron diferencias en la cantidad de comparendos registrados entre ambos períodos. Esta comparación permite establecer cuál de los dos meses presentó una mayor frecuencia de infracciones y demuestra que la distribución de los comparendos no fue completamente uniforme entre los períodos analizados. La diferencia en el número de registros permite reconocer una mayor concentración de comparendos en uno de los meses estudiados. En términos porcentuales, abril representó el 33,6% y mayo el 66,4% del total de comparendos registrados.

Respecto a la distribución por días de la semana, se encontró que existen diferencias en la cantidad de comparendos registrados según el día. El día con mayor frecuencia concentra una cantidad superior de registros frente al día con menor frecuencia, lo que evidencia que la ocurrencia de los comparendos presenta variaciones durante la semana. Este comportamiento permite identificar los días en los que se presentó una mayor concentración de infracciones dentro de la información analizada. Concretamente, DOMINGO concentró el 18,7% de los comparendos, mientras que JUEVES registró solo el 12,1%.

El análisis por tipo de vehículo también permitió observar diferencias importantes. Algunas categorías presentan una mayor cantidad de comparendos que otras, lo que permite identificar cuáles tipos de vehículos tienen una mayor presencia dentro de los registros. Sin embargo, la cantidad de comparendos no representa necesariamente el mayor impacto económico. Por esta razón, se realizó adicionalmente un análisis del costo total y del costo promedio de las infracciones. El tipo de vehículo más frecuente (AUTO) representa el 91,4% de los comparendos.

Desde el punto de vista económico, los comparendos asociados a las infracciones analizadas representan un valor considerable. El costo total permite conocer el impacto económico acumulado, mientras que el promedio permite determinar el valor aproximado de una infracción dentro de los registros que cuentan con un costo asignado. Esta diferencia es importante porque un tipo de vehículo puede presentar una gran cantidad de comparendos, pero otra categoría puede generar un costo total superior debido al valor de las sanciones asociadas. En este sentido, AUTO concentra el 91,8% del costo total acumulado ($1.458.833.670).

El análisis de las personas con mayor cantidad de comparendos permitió identificar una concentración de registros en determinados ejecutados. El Top 10 facilita la comparación entre las personas que presentan las mayores frecuencias dentro de la base de datos. No obstante, estos resultados deben interpretarse únicamente desde una perspectiva estadística, debido a que la frecuencia de comparendos no permite determinar por sí misma las causas de dicha concentración. En conjunto, las diez personas del Top 10 reúnen el 12,41% de los registros.

De igual manera, el análisis de las fechas permitió identificar los días específicos en los que se registró una mayor cantidad de comparendos. Las diez fechas con mayor frecuencia representan los momentos de mayor concentración de registros y complementan el análisis realizado por meses y días de la semana. Esto permite observar el comportamiento temporal de las infracciones con un mayor nivel de detalle. Las diez fechas con mayor frecuencia reúnen el 34,8% de los comparendos.

En términos generales, los resultados muestran que los comparendos presentan diferentes niveles de concentración dependiendo de la variable analizada. La frecuencia permite identificar los períodos, días, vehículos, personas y fechas con mayor cantidad de registros, mientras que el análisis económico permite determinar cuáles categorías representan un mayor costo acumulado. Por esta razón, la interpretación conjunta de las variables proporciona una visión más completa que el análisis individual de cada indicador.

Finalmente, es importante señalar que los resultados obtenidos corresponden a un análisis estadístico descriptivo. Por lo tanto, los resultados permiten organizar, resumir, comparar e interpretar los datos disponibles, pero no permiten establecer relaciones de causa y efecto. Las diferencias encontradas entre los meses, días, vehículos, personas y fechas representan patrones observados dentro de la base de datos y pueden servir como punto de partida para investigaciones posteriores que incorporen otras variables y métodos estadísticos.