library(pacman)
p_load(dplyr, ggplot2, lubridate, stringr, tidyr, readxl, scales, plotly, writexl, shiny, shinydashboard)
# Establecer directorio de trabajo
dir <- dirname(rstudioapi::getActiveDocumentContext()$path)
setwd(dir)
delitos <- list.files(pattern = "delitos_denunciados_20.*\\.csv") %>%
lapply(read.csv) %>%
bind_rows()
# Eliminar columnas duplicadas por nombre
delitos <- delitos[, !duplicated(names(delitos))]
# Renombrar solo si 'fecha_descarga' existe y 'Fecha_descarga' no existe
if ("fecha_descarga" %in% names(delitos) && !"Fecha_descarga" %in% names(delitos)) {
delitos <- delitos %>% rename(Fecha_descarga = fecha_descarga)
}
delitos_limpios <- delitos %>%
select(
anio = anio_denuncia,
departamento = dpto_pjfs,
delito = generico,
subdelito = subgenerico,
cantidad
) %>%
filter(!is.na(anio) & !is.na(departamento) & !is.na(delito) & !is.na(subdelito)) %>%
mutate(departamento = str_trim(str_to_upper(departamento)))
poblacion <- read_excel("poblacion_departamental_2018_2023.xlsx") %>%
rename(departamento = Departamento) %>%
mutate(departamento = str_trim(str_to_upper(departamento))) %>%
pivot_longer(cols = `2018`:`2023`, names_to = "anio", values_to = "poblacion") %>%
mutate(anio = as.integer(anio))
# Unión de datasets
df_joined <- delitos_limpios %>%
left_join(poblacion, by = c("departamento", "anio"))
🔍 A lo largo de los años 2018–2023, el Perú ha enfrentado un panorama complejo en cuanto a criminalidad. Este gráfico presenta la evolución de las denuncias totales por año, reflejando el comportamiento agregado delictivo a nivel nacional.
df_joined %>%
group_by(anio) %>%
summarise(total = sum(cantidad), .groups = "drop") %>%
ggplot(aes(anio, total)) +
geom_line(color = "steelblue", size = 1) +
geom_point(color = "darkred", size = 2) +
labs(title = "Delitos denunciados por año", x = "Año", y = "Total") +
theme_minimal()
📌 ¿Qué tipos de delitos se denuncian más en el país? Este gráfico nos permite observar cuáles subdelitos son los más frecuentes entre 2018 y 2023, con énfasis en los de mayor impacto social.
df_joined %>%
group_by(subdelito) %>%
summarise(total = sum(cantidad), .groups = "drop") %>%
slice_max(total, n = 10) %>%
ggplot(aes(x = reorder(subdelito, total), y = total, fill = subdelito)) +
geom_col(show.legend = FALSE) +
coord_flip() +
labs(title = "Top 10 subdelitos (2018–2023)", x = "Subdelito", y = "Total") +
theme_minimal()
📍 El siguiente gráfico revela los departamentos con mayores cantidades de delitos denunciados. Esto permite identificar focos territoriales del crimen y orientar estrategias de prevención.
df_joined %>%
group_by(departamento) %>%
summarise(total = sum(cantidad), .groups = "drop") %>%
ggplot(aes(x = reorder(departamento, total), y = total, fill = departamento)) +
geom_col(show.legend = FALSE) +
coord_flip() +
labs(title = "Delitos por departamento", x = "Departamento", y = "Total") +
theme_minimal()
⚠️ Entre 2019 y 2023, el delito de extorsión ha presentado un crecimiento preocupante. Este gráfico muestra su evolución anual, evidenciando una tendencia creciente que merece atención urgente.
df_joined %>%
filter(subdelito == "EXTORSION") %>%
group_by(anio) %>%
summarise(total = sum(cantidad), .groups = "drop") %>%
ggplot(aes(anio, total)) +
geom_line(color = "purple") +
geom_point(color = "black") +
labs(title = "Evolución del delito de extorsión (2019–2023)", x = "Año", y = "Total") +
theme_minimal()
🏴☠️ Este gráfico identifica las regiones más golpeadas por la extorsión, calculando la tasa por cada 100,000 habitantes. Permite dimensionar el impacto real más allá de los números absolutos.
tasa_extorsion <- df_joined %>%
filter(subdelito == "EXTORSION", anio %in% 2019:2023, !is.na(poblacion), poblacion > 0) %>%
group_by(departamento) %>%
summarise(
total_extorsiones = sum(cantidad),
poblacion_promedio = mean(poblacion),
tasa_100k = (total_extorsiones / poblacion_promedio) * 100000,
.groups = "drop"
) %>%
slice_max(tasa_100k, n = 10)
ggplot(tasa_extorsion, aes(x = reorder(departamento, tasa_100k), y = tasa_100k, fill = departamento)) +
geom_col(show.legend = FALSE) +
coord_flip() +
labs(title = "Top 10 regiones con mayor tasa de extorsión (por 100,000 hab.)",
x = "Departamento", y = "Tasa por 100,000 habitantes") +
theme_minimal()
El análisis muestra un crecimiento sostenido de las denuncias por delitos a nivel nacional. Particularmente, el delito de extorsión presenta un comportamiento creciente entre 2019 y 2023, afectando gravemente a regiones como La Libertad, Piura y Lima, tanto en volumen como en tasa por cada 100,000 habitantes.
Estos hallazgos permiten direccionar mejor las políticas de seguridad ciudadana.
👉 Este análisis busca ir más allá de las cifras con datos reales, se espera aportar a una conversación pública más informada, y a decisiones de política más efectivas.
📌 Autor del análisis: Luis Aguilar
Contreras
📊 Fuente de datos: Ministerio Público del Perú e
INEI