Análisis de Seguridad sobre El chichimeco

Author

Arce



3.1 Evolución temporal de la incidencia delictiva (2015–2024)

library(tidyverse)
Warning: package 'tidyverse' was built under R version 4.5.2
Warning: package 'ggplot2' was built under R version 4.5.1
Warning: package 'tibble' was built under R version 4.5.1
Warning: package 'tidyr' was built under R version 4.5.1
Warning: package 'readr' was built under R version 4.5.1
Warning: package 'dplyr' was built under R version 4.5.1
Warning: package 'stringr' was built under R version 4.5.1
Warning: package 'forcats' was built under R version 4.5.1
Warning: package 'lubridate' was built under R version 4.5.1
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   4.0.0     ✔ tibble    3.3.0
✔ lubridate 1.9.4     ✔ tidyr     1.3.1
✔ purrr     1.0.4     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
Warning: package 'readxl' was built under R version 4.5.2
library(janitor)
Warning: package 'janitor' was built under R version 4.5.2

Adjuntando el paquete: 'janitor'

The following objects are masked from 'package:stats':

    chisq.test, fisher.test

Ruta del archivo

ruta_archivo <- "C:/Users/Concentración Total/Desktop/DATOS SOBRE SEGURIDAD/Bases Datos Seguridad/A1 _delitos_municipios_octubre.xlsx"

Leer hoja correcta (¡con espacio al final!) y limpiar nombres

delitos_mun <- read_excel(ruta_archivo, sheet = "Delitos_mun ") |> clean_names()

Vector de meses en español (lo usaremos en varias gráficas)

niveles_meses <- c( "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" )

La Figura 1 muestra la evolución anual de los delitos totales registrados en Jesús María entre 2015 y 2024, con base en el valor acumulado de cada año.

delitos_jm_anuales <- delitos_mun |>
filter(
entidad_federativa == "Aguascalientes",
municipio == "Jesús María",
mes == "Acumulado",
ano >= 2015,
ano <= 2024
) |>
group_by(ano) |>
summarise(
total_delitos = sum(total_de_delitos_reportados_general, na.rm = TRUE),
.groups = "drop"
) |>
arrange(ano)

ggplot(delitos_jm_anuales, aes(x = ano, y = total_delitos)) +
geom_line() +
geom_point() +
scale_x_continuous(breaks = 2015:2024) +
labs(
title = "Delitos totales en Jesús María (2015–2024)",
x = "Año",
y = "Número de delitos"
) +
theme_minimal()

La Figura 2 muestra cómo se distribuyen los delitos totales por mes en Jesús María durante 2025.

delitos_jm_2025_mensual <- delitos_mun |>
filter(
entidad_federativa == "Aguascalientes",
municipio == "Jesús María",
ano == 2025,
mes != "Acumulado"  # solo meses individuales
) |>
mutate(
mes = factor(
mes,
levels = niveles_meses
)
) |>
group_by(mes) |>
summarise(
total_delitos = sum(total_de_delitos_reportados_general, na.rm = TRUE),
.groups = "drop"
) |>
arrange(mes)

ggplot(delitos_jm_2025_mensual, aes(x = mes, y = total_delitos, group = 1)) +
geom_line() +
geom_point() +
labs(
title = "Delitos totales por mes en Jesús María (2025)",
x = "Mes",
y = "Número de delitos"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1)
)

La Figura 3 muestra la evolución mensual de los principales tipos de delito en Jesús María entre enero y septiembre de 2025.

delitos_jm_2025_mes_tipo <- delitos_mun |>
filter(
entidad_federativa == "Aguascalientes",
municipio == "Jesús María",
ano == 2025,
mes %in% niveles_meses[1:9]   # Enero–Septiembre
) |>
mutate(
mes = factor(mes, levels = niveles_meses[1:9])
) |>
group_by(mes) |>
summarise(
homicidio = sum(homicidio, na.rm = TRUE),
robo_casa = sum(robo_a_casa_habitacion, na.rm = TRUE),
robo_negocio = sum(robo_a_negocio, na.rm = TRUE),
robo_vehiculo = sum(robo_de_vehiculo_automotor, na.rm = TRUE),
violencia_familiar = sum(violencia_familiar, na.rm = TRUE),
delitos_sexuales = sum(violacion_equiparada, na.rm = TRUE) +
sum(hostigamiento_sexual, na.rm = TRUE),
.groups = "drop"
) |>
tidyr::pivot_longer(
cols = c(
homicidio, robo_casa, robo_negocio,
robo_vehiculo, violencia_familiar, delitos_sexuales
),
names_to = "tipo_delito",
values_to = "casos"
) |>
mutate(
tipo_delito = dplyr::recode(
tipo_delito,
homicidio = "Homicidio",
robo_casa = "Robo a casa habitación",
robo_negocio = "Robo a negocio",
robo_vehiculo = "Robo de vehículo",
violencia_familiar = "Violencia familiar",
delitos_sexuales = "Delitos sexuales"
)
)

ggplot(delitos_jm_2025_mes_tipo,
aes(x = mes, y = casos, color = tipo_delito, group = tipo_delito)) +
geom_line(linewidth = 1) +
geom_point(size = 2) +
labs(
title = "Evolución mensual por tipo de delito en Jesús María (ene–sep 2025)",
x = "Mes",
y = "Número de casos",
color = "Tipo de delito"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1)
)