El presente informe tiene como propósito analizar el comportamiento de tres problemáticas sociales de alto impacto en Colombia: los feminicidios, los delitos sexuales y la violencia intrafamiliar, utilizando para ello diferentes bases de datos oficiales. A través del procesamiento, depuración y análisis estadístico de la información, se buscó identificar patrones, tendencias temporales, grupos poblacionales afectados y posibles relaciones entre los distintos tipos de violencia.
Para el desarrollo del análisis se empleó el software R debido a su capacidad para gestionar grandes volúmenes de datos y producir visualizaciones de alta calidad. Se utilizaron diversas librerías especializadas, tales como dplyr, ggplot2, tidyr, reshape2 y scales, permitiendo realizar procesos de agrupamiento, transformación y graficación. Asimismo, la lectura de bases de datos se manejó mediante readxl, y personalizar paletas de color y mejorar la estética visual del reporte.
El informe incluye múltiples consultas diseñadas para responder preguntas clave, entre ellas:
La evolución de los feminicidios por año, apoyada en gráficos de líneas con etiquetas de datos.
Los mecanismos o armas utilizados según el tipo de delito, mediante visualizaciones comparativas por categorías.
La distribución porcentual del volumen de registros entre las tres bases analizadas, presentada mediante un gráfico circular.
Para el desarrollo del presente informe se utilizaron tres bases de datos independientes, cada una correspondiente a un tipo específico de violencia. Estas bases contienen información detallada sobre los casos reportados en Colombia, permitiendo analizar características demográficas, temporales y geográficas de las víctimas. A continuación se presenta un resumen de su estructura y contenido:
summary(BD_FIMINCIDIOS)
## ID AÑO Grupo de edad de la víctima
## Min. : 9 Min. :2024 Length:5958
## 1st Qu.:10414 1st Qu.:2024 Class :character
## Median :21811 Median :2024 Mode :character
## Mean :21672 Mean :2024
## 3rd Qu.:32123 3rd Qu.:2025
## Max. :43752 Max. :2025
## Grupo Mayor Menor de Edad Grupo de Edad judicial Ciclo Vital
## Length:5958 Length:5958 Length:5958
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
## Sexo de la víctima Estado Civil País de Nacimiento de la Víctima
## Length:5958 Length:5958 Length:5958
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
## Escolaridad Pertenencia Grupal Mes del hecho Dia del hecho
## Length:5958 Length:5958 Length:5958 Length:5958
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Rango de Hora del Hecho X 3 Horas Código Dane Municipio
## Length:5958 Length:5958
## Class :character Class :character
## Mode :character Mode :character
##
##
##
## Municipio del hecho DANE Departamento del hecho DANE Código Dane Departamento
## Length:5958 Length:5958 Length:5958
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
## Escenario del Hecho Zona del Hecho Actividad Durante el Hecho
## Length:5958 Length:5958 Length:5958
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
## Circunstancia del Hecho Manera de Muerte Mecanismo Causal
## Length:5958 Length:5958 Length:5958
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
## Diagnóstico Topográfico de la Lesión Presunto Agresor Razón del Suicidio
## Length:5958 Length:5958 Length:5958
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
## Condición de la Víctima Medio de Desplazamiento o Transporte
## Length:5958 Length:5958
## Class :character Class :character
## Mode :character Mode :character
##
##
##
## Servicio del Vehículo Clase o Tipo de Accidente Objeto de Colisión
## Length:5958 Length:5958 Length:5958
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
## Servicio del Objeto de Colisión Localidad del Hecho Ancestro Racial
## Length:5958 Length:5958 Length:5958
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
## Pueblo Indígena Orientación Sexual Identidad de Género Transgénero
## Length:5958 Length:5958 Length:5958 Length:5958
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Pertenencia Étnica
## Length:5958
## Class :character
## Mode :character
##
##
##
summary(BD_DELITOSEXUAL)
## ARMAS MEDIOS DEPARTAMENTO MUNICIPIO
## Length:40759 Length:40759 Length:40759
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## FECHA HECHO AÑO GENERO
## Min. :2024-01-01 00:00:00.00 Min. :2024 Length:40759
## 1st Qu.:2024-04-07 00:00:00.00 1st Qu.:2024 Class :character
## Median :2024-07-01 00:00:00.00 Median :2024 Mode :character
## Mean :2024-06-29 02:16:58.25 Mean :2024
## 3rd Qu.:2024-09-20 00:00:00.00 3rd Qu.:2025
## Max. :2024-12-31 00:00:00.00 Max. :2025
## NA's :20027
## *AGRUPA EDAD PERSONA* CODIGO DANE DELITOS CANTIDAD
## Length:40759 Length:40759 Length:40759 Min. : 1.000
## Class :character Class :character Class :character 1st Qu.: 1.000
## Mode :character Mode :character Mode :character Median : 1.000
## Mean : 1.112
## 3rd Qu.: 1.000
## Max. :13.000
##
summary(BD_VIOLENCIAINTRAFAMILIAR)
## ARMAS MEDIOS DEPARTAMENTO MUNICIPIO
## Length:120516 Length:120516 Length:120516
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## FECHA HECHO AÑO GENERO
## Min. :2024-01-01 00:00:00.00 Min. :2024 Length:120516
## 1st Qu.:2024-04-02 00:00:00.00 1st Qu.:2024 Class :character
## Median :2024-07-01 00:00:00.00 Median :2025 Mode :character
## Mean :2024-06-28 19:23:46.96 Mean :2025
## 3rd Qu.:2024-09-23 00:00:00.00 3rd Qu.:2025
## Max. :2024-12-31 00:00:00.00 Max. :2025
## NA's :79941
## AGRUPA_EDAD_PERSONA CODIGO DANE CANTIDAD
## Length:120516 Length:120516 Min. : 1.0
## Class :character Class :character 1st Qu.: 1.0
## Mode :character Mode :character Median : 1.0
## Mean : 1.5
## 3rd Qu.: 1.0
## Max. :154.0
##
Analizar y caracterizar los casos de feminicidios, delitos sexuales y violencia intrafamiliar en Colombia a partir de tres bases de datos oficiales, con el fin de identificar patrones, tendencias y factores asociados que permitan comprender la magnitud y el comportamiento de estas problemáticas en el territorio nacional.
Integrar y depurar las tres bases de datos disponibles, garantizando su organización, coherencia y calidad para realizar un análisis estadístico confiable.
Describir la distribución geográfica de los casos de violencia por departamento y municipio, identificando las zonas con mayor incidencia.
Generar visualizaciones estadísticas y gráficas que faciliten la comprensión del comportamiento de los casos y permitan comunicar los resultados de manera clara.
Las consultas permitieron explorar las tres bases de datos mediante operaciones de agrupación, conteo y unión de información. Se analizaron los casos por año, departamento, municipio, género y grupo de edad, identificando tendencias generales y comparando la magnitud de los feminicidios, delitos sexuales y violencia intrafamiliar. También se realizaron cruces entre bases para obtener totales combinados, así como visualizaciones gráficas que muestran los departamentos con mayor incidencia, la evolución temporal de los casos y la distribución de víctimas por edad. En conjunto, las consultas ofrecieron una visión clara del comportamiento de estas violencias y permitieron identificar patrones relevantes dentro de los datos.
library(ggplot2)
library(dplyr)
# Función de conteo por año
count_by_year <- function(df){
yc <- grep("AÑO", names(df), ignore.case = TRUE, value = TRUE)
if(length(yc)==0) return(NULL)
as.data.frame(table(df[[yc[1]]]))
}
fem_years <- count_by_year(BD_FIMINCIDIOS)
# Convertir a numérico para orden correcto
fem_years$Var1 <- as.numeric(as.character(fem_years$Var1))
# Paleta morada
col_linea <- "#7B2CBF"
col_puntos <- "#9D4EDD"
col_texto <- "#3C096C"
ggplot(fem_years, aes(x = Var1, y = Freq)) +
geom_line(linewidth = 1.5, color = col_linea) +
geom_point(size = 3.5, color = col_puntos) +
geom_text(
aes(label = Freq),
vjust = -0.7,
size = 4,
color = col_texto
) +
scale_x_continuous(breaks = fem_years$Var1) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold", color = col_texto, size = 16),
axis.title = element_text(face = "bold", color = col_texto),
axis.text = element_text(color = "#4C2A85"),
panel.grid.minor = element_blank(),
panel.grid.major.x = element_blank()
) +
labs(
title = "Evolución de Feminicidios por Año",
x = "Año",
y = "Número de Casos"
)
La Evolución de Feminicidios por Año ilustra una reducción drástica en la cantidad de casos reportados entre los años 2024 y 2025. Se observa que la cifra inicial de 3,979 casos desciende abruptamente hasta los 1,979, lo que representa una disminución exacta de 2,000 incidentes en el transcurso de un solo periodo. En términos proporcionales, esta caída indica que la problemática se redujo prácticamente a la mitad, registrando un descenso del 50.2%, lo cual se refleja visualmente en una línea con una pendiente negativa muy pronunciada que conecta ambos puntos.
library(dplyr)
library(ggplot2)
library(scales)
options(scipen = 999) # evita NC
# Preparar bases
fem_armas <- BD_FIMINCIDIOS %>%
count(`Mecanismo Causal`, name = "Casos") %>%
rename(ArmaMedio = `Mecanismo Causal`) %>%
mutate(Delito = "Feminicidios")
del_armas <- BD_DELITOSEXUAL %>%
count(`ARMAS MEDIOS`, name = "Casos") %>%
rename(ArmaMedio = `ARMAS MEDIOS`) %>%
mutate(Delito = "Delitos Sexuales")
vif_armas <- BD_VIOLENCIAINTRAFAMILIAR %>%
count(`ARMAS MEDIOS`, name = "Casos") %>%
rename(ArmaMedio = `ARMAS MEDIOS`) %>%
mutate(Delito = "Violencia Intrafamiliar")
# Unir
armas_total <- bind_rows(fem_armas, del_armas, vif_armas)
# Eliminar vacíos
armas_total <- armas_total %>% filter(!is.na(ArmaMedio) & ArmaMedio != "")
# Gráfico
ggplot(armas_total, aes(x = Casos, y = reorder(ArmaMedio, Casos), fill = Delito)) +
geom_col(position = "dodge") +
geom_text(aes(label = Casos),
position = position_dodge(width = 0.9),
hjust = -0.1,
size = 3.5) +
scale_fill_manual(values = c(
"Delitos Sexuales" = "#7A1FA2",
"Feminicidios" = "#4A0072",
"Violencia Intrafamiliar" = "#CE93D8"
)) +
scale_x_continuous(labels = comma) +
theme_minimal(base_size = 12) +
labs(
title = "Armas o Medios Utilizados por Tipo de Delito",
x = "Casos",
y = "Arma o Medio"
) +
theme(
legend.title = element_blank(),
plot.title = element_text(face = "bold", size = 15),
axis.text.y = element_text(size = 9)
) +
expand_limits(x = max(armas_total$Casos) * 1.15)
La consulta llamada Armas o Medios Utilizados por Tipo de Delito, ofrece una visión detallada de los métodos empleados en tres categorías de crímenes: Delitos Sexuales, Feminicidios y Violencia Intrafamiliar. La distribución de los datos muestra claramente una dependencia abrumadora del factor “Sin Empleo de Armas” en los tres tipos de delitos, lo cual es el hallazgo más significativo.
“Sin Empleo de Armas”, este medio supera drásticamente a todos los demás. Para la Violencia Intrafamiliar, los casos ascienden a 98,141. En los Delitos Sexuales, se registran 35,589 casos.
library(ggplot2)
library(dplyr)
# Crear tabla de conteo
counts <- data.frame(
Base = c("Feminicidios", "Delitos Sexuales", "Violencia Intrafamiliar"),
Registros = c(
nrow(BD_FIMINCIDIOS),
nrow(BD_DELITOSEXUAL),
nrow(BD_VIOLENCIAINTRAFAMILIAR)
)
)
# Calcular porcentaje
counts <- counts %>%
mutate(Porcentaje = Registros / sum(Registros) * 100)
# Paleta de tonos morados
colores_morados <- c("#6A0DAD", "#8A2BE2", "#C39BD3")
# Gráfico circular
ggplot(counts, aes(x = "", y = Porcentaje, fill = Base)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") +
scale_fill_manual(values = colores_morados) +
theme_void() +
labs(
title = "Distribución porcentual de Casos por Delitos",
fill = "Base de Datos"
) +
geom_text(
aes(label = paste0(round(Porcentaje, 1), "%")),
position = position_stack(vjust = 0.5),
color = "white",
size = 4
)
El gráfico de distribución porcentual establece que la Violencia Intrafamiliar es la problemática dominante dentro de la base de datos analizada, representando el 72.1% de todos los casos. Le siguen los Delitos Sexuales con un 24.4% y, en menor medida, los Feminicidios que constituyen el 3.6% del total. Este panorama subraya que cualquier estrategia de seguridad y prevención debe priorizar los recursos destinados a mitigar la violencia en el entorno familiar, dado su volumen masivo en comparación con los otros dos delitos.
library(dplyr)
library(ggplot2)
# FEMINICIDIOS
dep_fem <- BD_FIMINCIDIOS %>%
group_by(`Departamento del hecho DANE`) %>%
summarise(Feminicidios = n()) %>%
rename(DEPARTAMENTO = `Departamento del hecho DANE`)
# DELITOS SEXUALES
dep_sex <- BD_DELITOSEXUAL %>%
group_by(DEPARTAMENTO) %>%
summarise(DelitosSexuales = sum(CANTIDAD))
# VIOLENCIA INTRAFAMILIAR
dep_vi <- BD_VIOLENCIAINTRAFAMILIAR %>%
group_by(DEPARTAMENTO) %>%
summarise(ViolenciaIntrafamiliar = sum(CANTIDAD))
dep_total <- dep_fem %>%
full_join(dep_sex, by="DEPARTAMENTO") %>%
full_join(dep_vi, by="DEPARTAMENTO") %>%
replace(is.na(.), 0) %>%
mutate(Total = Feminicidios + DelitosSexuales + ViolenciaIntrafamiliar) %>%
arrange(desc(Total)) %>%
slice(1:10)
ggplot(dep_total, aes(x = reorder(DEPARTAMENTO, Total), y = Total)) +
geom_bar(stat="identity", fill="#4B0082", width=0.6) +
geom_text(aes(label = Total),
hjust = -0.2,
size = 6,
fontface = "bold") +
coord_flip() +
theme_minimal(base_size = 16) +
theme(
plot.title = element_text(face="bold", size=20, hjust=0.5),
axis.title.y = element_text(face="bold"),
axis.title.x = element_text(face="bold"),
axis.text = element_text(face="bold"),
panel.grid.major.y = element_blank(),
panel.grid.minor = element_blank()
) +
labs(
title = "Top 10 Departamentos con Más Casos (Tres Bases Combinadas)",
x = "Departamento",
y = "Casos Totales"
) +
ylim(0, max(dep_total$Total) * 1.15)
Al examinar la concentración geográfica de los casos totales (que, por la distribución de prevalencia, están fuertemente influenciados por la Violencia Intrafamiliar), se observa una disparidad extrema entre las regiones. Cundinamarca se posiciona como el departamento con el mayor número de casos, alcanzando los 86,051, superando por mucho al segundo lugar, Antioquia, que registra 32,099 casos. Este hallazgo sugiere que la violencia está particularmente concentrada en la región de Cundinamarca, probablemente impulsada por su densidad poblacional y la inclusión de su capital, si aplica, en la cifra total. El tercer departamento es Valle, con 17,903 casos.
library(ggplot2)
library(dplyr)
edad_fem <- BD_FIMINCIDIOS %>%
group_by(`Grupo de edad de la víctima`) %>%
summarise(Casos = n()) %>%
arrange(desc(Casos))
ggplot(edad_fem,
aes(x = reorder(`Grupo de edad de la víctima`, Casos),
y = Casos,
fill = Casos)) +
geom_bar(stat = "identity") +
# Etiquetas de datos
geom_text(aes(label = Casos),
hjust = -0.2,
color = "black",
size = 5,
fontface = "bold") +
# Paleta
scale_fill_gradientn(colors = c("#E0AAFF", "#C77DFF",
"#9D4EDD", "#5A189A")) +
coord_flip() +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(face = "bold", size = 18, hjust = 0.5),
axis.text = element_text(face = "bold"),
axis.title = element_text(face = "bold"),
legend.position = "none"
) +
labs(
title = "Feminicidios por Grupo de Edad",
x = "Grupo de Edad",
y = "Número de Casos"
) +
# Suficiente espacio para ver etiquetas
ylim(0, max(edad_fem$Casos) * 1.15)
El riesgo de feminicidio, lejos de ser constante, se manifiesta en múltiples picos de vulnerabilidad que corresponden a etapas críticas del desarrollo y la vida adulta:
El gráfico “Feminicidios por Grupo de Edad” indica que la fatalidad no se distribuye de manera uniforme, sino que se concentra en grupos específicos. El rango de edad más afectado es (20 a 24 años), con 690 casos. Sorprendentemente, el grupo de (80 y más) se sitúa como el segundo más afectado, con 682 casos, seguido por (25 a 29 años) con 572 casos. Estos datos demuestran un doble pico de riesgo: uno en la adultez joven (20-29 años) y otro en la extrema vejez (80 y más), lo cual debe orientar programas de protección específicos para ambos extremos de la vida adulta.
library(dplyr)
library(tidyr)
library(ggplot2)
library(reshape2)
# 1. Filtrar FEMENINO en cada base
fem_fem <- BD_FIMINCIDIOS %>%
filter(`Sexo de la víctima` == "FEMENINO") %>%
mutate(AÑO = as.character(`AÑO`),
Delito = "Feminicidios")
fem_sex <- BD_DELITOSEXUAL %>%
filter(GENERO == "FEMENINO") %>%
mutate(AÑO = as.character(`AÑO`),
Delito = "Delitos Sexuales")
fem_vif <- BD_VIOLENCIAINTRAFAMILIAR %>%
filter(GENERO == "FEMENINO") %>%
mutate(AÑO = as.character(`AÑO`),
Delito = "Violencia Intrafamiliar")
# 2. Unir todas las bases
genero_fem <- bind_rows(fem_fem, fem_sex, fem_vif)
# 3. Contar casos por año y delito
tabla_anio <- genero_fem %>%
group_by(AÑO, Delito) %>%
summarise(Casos = n(), .groups = "drop") %>%
pivot_wider(names_from = Delito, values_from = Casos, values_fill = 0)
# 4. Matriz de correlación de Pearson
matriz_corr <- cor(tabla_anio %>% select(`Feminicidios`, `Delitos Sexuales`, `Violencia Intrafamiliar`),
method = "pearson")
# 5. Preparar datos para heatmap
cor_melt <- melt(matriz_corr)
# 6. Heatmap tipo hatpam
ggplot(cor_melt, aes(x = Var1, y = Var2, fill = value)) +
geom_tile(color = "white") +
geom_text(aes(label = round(value, 2)), size = 5, color = "black") +
scale_fill_gradient2(low = "#E6CEFF", mid = "white", high = "#4B0082", midpoint = 0) +
theme_minimal(base_size = 13) +
labs(
title = "Correlación de Pearson entre Delitos Femeninos",
x = "",
y = "",
fill = "Pearson"
) +
theme(
axis.text.x = element_text(face = "bold"),
axis.text.y = element_text(face = "bold"),
plot.title = element_text(face = "bold", hjust = 0.5)
)
El panorama de la violencia contra las mujeres se define por una crisis de Violencia Intrafamiliar (VIF) que se duplicó alarmantemente en un año y se concentra de forma crítica en Cundinamarca. La gran mayoría de los incidentes se cometen sin el uso de armas.
La violencia letal (Feminicidios) presenta un doble pico de riesgo en mujeres jóvenes (20-24 años) y en la extrema vejez (80 y más años), además de estar perfectamente correlacionada con los Delitos Sexuales. A pesar de una supuesta reducción del 50% en los Feminicidios, la prioridad debe ser contener el explosivo aumento de la VIF, enfocando los esfuerzos en Cundinamarca y protegiendo de manera diferenciada a los grupos de edad más vulnerables.