El feminicidio representa la manifestación más extrema de la violencia de género. Este informe tiene como objetivo analizar la correlación estadística entre el número de feminicidios y otros delitos relacionados (delitos sexuales, violencia intrafamiliar, homicidios generales y suicidios) a nivel departamental en Colombia, enfocándose exclusivamente en las víctimas mujeres. Utilizamos el Coeficiente de Correlación de Pearson para establecer la fuerza y dirección de estas relaciones, complementado con análisis descriptivos clave sobre el perfil de la víctima y la ejecución del delito. El análisis se centra en la data de hechos ocurridos en el periodo 2024-2025 y las proyecciones poblacionales correspondientes, asegurando la temporalidad de los datos.
Para interpretar correctamente las correlaciones estadísticas presentadas en este informe, es fundamental comprender el marco conceptual que sustenta el análisis de la violencia de género y el feminicidio en Colombia. Este marco se estructura en cuatro pilares teóricos que explican tanto la naturaleza del delito como los patrones identificados en los datos.
Navegue por las pestañas para explorar cada componente teórico.
Este análisis estadístico se fundamenta en teorías consolidadas sobre violencia de género que permiten interpretar las correlaciones numéricas más allá de simples asociaciones matemáticas. Los cuatro pilares teóricos presentados explican:
Hipótesis: Existe una correlación positiva fuerte entre la Violencia Intrafamiliar (VIF) y el Feminicidio a nivel departamental, dado que la VIF actúa como un precursor estadísticamente significativo y una señal de alerta temprana del riesgo feminicida, validando empíricamente la teoría del continuum de la violencia de género.
Esta hipótesis será validada mediante el Coeficiente de Correlación de Pearson en la Sección 5 del presente informe.
El feminicidio no es simplemente el homicidio de una mujer; es un concepto que denota una motivación específica basada en el género. Como señalan Diana Russell y Jill Radford, pioneras en el uso del término, el feminicidio representa el extremo de un continuum de terror antifemenino que incluye una variedad de abusos verbales, físicos, psicológicos y sexuales.
En Colombia, el feminicidio fue tipificado como delito autónomo mediante la Ley 1761 de 2015, también conocida como Ley Rosa Elvira Cely en honor a la víctima cuyo caso impulsó la legislación.
Esta ley define el feminicidio como causar la muerte a una mujer por su condición de ser mujer o por motivos de su identidad de género.
Esta distinción legal explica por qué en la metodología de este estudio se filtra específicamente por la “Circunstancia del Hecho” y no únicamente por el sexo de la víctima.
Implicación metodológica: No todo homicidio de una mujer constituye feminicidio; debe existir una motivación de género identificable y documentada por las autoridades judiciales.
La socióloga Liz Kelly propone el concepto de continuum de violencia sexual y de género, argumentando que las diferentes formas de violencia contra las mujeres no son eventos aislados, sino manifestaciones de un mismo fenómeno estructural.
Lenore Walker complementa esta teoría con su modelo del “Ciclo de la Violencia”, que describe tres fases recurrentes en las relaciones violentas:
Fase 1 - Acumulación de Tensión: - Incremento gradual de hostilidad - Agresiones verbales y psicológicas - Control y aislamiento progresivo
Fase 2 - Explosión Violenta: - Episodio agudo de violencia física - Pérdida aparente de control del agresor - Daño físico significativo a la víctima
Fase 3 - Luna de Miel: - Arrepentimiento temporal del agresor - Promesas de cambio y reconciliación - Refuerzo del vínculo emocional
Walker demostró empíricamente que este ciclo tiende a: - Acelerarse con el tiempo (intervalos más cortos entre episodios) - Agravarse en severidad (violencia más intensa en cada ciclo) - Minimizar la fase de luna de miel hasta desaparecer
La correlación fuerte y positiva encontrada en este estudio entre Violencia Intrafamiliar (VIF) y Feminicidio valida empíricamente estas teorías.
Evidencia cuantitativa del continuum:
Interpretación de Outliers:
Los departamentos que se desvían de la tendencia lineal pueden indicar:
El feminicidio puede clasificarse según la relación entre víctima y agresor:
Definición: Perpetrado por parejas, exparejas o personas con las que la víctima mantuvo relaciones sentimentales o sexuales.
Datos globales (OMS): Más del 35% de los homicidios de mujeres a nivel mundial son cometidos por su pareja íntima, una proporción significativamente mayor que en los homicidios de hombres.
Características distintivas: - Ocurre en el ámbito privado (hogar) - Precedido por historia de violencia doméstica - Motivado por celos, posesión o ruptura de la relación
Definición: Cometido por agresores sin vínculo sentimental con la víctima.
Contextos frecuentes: - Violencia sexual por desconocidos - Criminalidad organizada - Trata de personas - Conflicto armado
La Rueda del Poder y Control, desarrollada por el Domestic Abuse Intervention Project de Duluth, Minnesota, explica que la violencia de pareja no es resultado de “pérdida de control” sino de una estrategia deliberada para mantener dominación sobre la víctima.
El análisis del “Presunto Agresor” revela que la mayoría de los feminicidios en Colombia son cometidos por parejas o exparejas, confirmando la predominancia del feminicidio íntimo.
El análisis del “Mecanismo Causal” muestra el uso frecuente de: - Armas cortopunzantes (cuchillos, machetes) - Asfixia (estrangulamiento) - Golpes contundentes
Estos métodos denotan:
Contraste con homicidios masculinos:
Los homicidios de hombres típicamente involucran: - Armas de fuego - Espacios públicos (calles, bares) - Agresores desconocidos o con conflictos puntuales
Esta diferencia refuerza la naturaleza específica del feminicidio como violencia de género.
Urie Bronfenbrenner propuso un modelo de análisis de los fenómenos sociales en múltiples niveles concéntricos de influencia. Este modelo fue adaptado por Lori Heise para explicar específicamente la violencia de género.
Factores personales de víctima y agresor:
Del agresor: - Historia personal de violencia (testigo o víctima en infancia) - Abuso de sustancias (alcohol, drogas) - Trastornos de personalidad o salud mental - Creencias de superioridad masculina - Baja autoestima y necesidad de control
De la víctima: - Historia previa de violencia - Dependencia económica del agresor - Aislamiento social - Baja autoestima producto de la violencia
Dinámica de la relación de pareja:
Instituciones locales y recursos:
Normas culturales y estructura social:
El análisis por departamentos presentado en este informe se sustenta en este enfoque ecológico.
Al identificar el Top 10 de Departamentos con mayor incidencia de feminicidios, se están señalando territorios donde:
Fallas en el Exosistema: - Instituciones débiles (policía, fiscalía) - Falta de recursos de protección - Respuesta lenta o ineficaz a denuncias de VIF - Ausencia de refugios o casas de acogida
Fallas en el Macrosistema: - Cultura patriarcal más arraigada - Mayor tolerancia social a la violencia doméstica - Impunidad estructural - Falta de programas preventivos
Implicación para políticas públicas:
Las intervenciones deben ser multinivel y coordinadas entre: - Justicia (judicialización efectiva) - Salud (detección temprana) - Educación (cambio cultural) - Protección social (refugios, subsidios)
El modelo ecológico también ayuda a comprender la correlación encontrada entre Delitos Sexuales y Feminicidios en este estudio.
La violencia sexual frecuentemente:
Como señalan Jane Caputi y Diana Russell, tanto la violencia sexual como el feminicidio son manifestaciones del mismo fenómeno: el sistema patriarcal que considera a las mujeres como propiedad y objeto en lugar de sujetos con autonomía.
El siguiente diagrama ilustra visualmente cómo la violencia de género escala desde formas aparentemente “menores” hasta el feminicidio, validando la correlación estadística encontrada en este estudio entre VIF y Feminicidio.
Progresión de la Violencia: El diagrama muestra cómo la violencia no aparece súbitamente, sino que escala de manera progresiva a través de diferentes niveles de severidad.
Puntos de Intervención Críticos:
Nivel 3 (VIF): Primera alerta de riesgo físico grave. La correlación estadística encontrada en este estudio (Sección 5) sugiere que la intervención efectiva en este nivel puede prevenir la escalada hacia el feminicidio.
Nivel 5 (Tentativa): Indicador de riesgo inminente que requiere protección urgente y medidas cautelares inmediatas.
Validación Empírica: La fuerte correlación entre VIF y Feminicidio identificada en el análisis de Pearson proporciona evidencia cuantitativa de esta escalada teórica. Los departamentos con altos índices de VIF que no implementan medidas de protección efectivas muestran mayores tasas de feminicidio.
Implicación para Políticas Públicas: Este continuum sugiere que las intervenciones tempranas en los niveles 1-3 (prevención primaria y secundaria) son:
Este marco teórico establece que el feminicidio en Colombia debe entenderse como:
1. Un delito de género con especificidad legal
2. El punto final de un continuum de violencia
3. Predominantemente íntimo y basado en poder
4. Un fenómeno multinivel que requiere respuesta sistémica
Las correlaciones estadísticas presentadas en las secciones siguientes deben interpretarse a la luz de estas teorías, reconociendo que:
Conclusión del Marco Teórico:
La fuerte correlación entre Violencia Intrafamiliar y Feminicidio que será demostrada estadísticamente no es una casualidad matemática, sino la manifestación cuantitativa de un fenómeno social bien documentado: la escalada de la violencia de género desde formas “normalizadas” hacia el extremo letal cuando las estructuras de protección fallan.
En esta sección, se cargan las 4 bases de datos restantes, se limpia
la columna llave (DEPARTAMENTO) y se agregan los datos para
obtener las 4 variables numéricas de conteo, filtrando por el
género “MUJER” donde sea pertinente. Además, se cargan y
procesan los datos de población para el cálculo de tasas.
Se filtra la base de homicidios por la circunstancia “FEMINICIDIO” y se cuenta el total por departamento. Solo se incluyen víctimas mujeres.
df_fem_crudo <- read_excel("Libro1.xlsx", sheet = "ESTANDARIZADA")
# 1. Limpieza y estandarización de la llave DEPARTAMENTO
df_fem_limpio <- df_fem_crudo %>%
# RENOMBRA la columna usando el nombre exacto de tu archivo
rename(DEPARTAMENTO = "DEPARTAMENTO DEL HECHO DANE", SEXO_VICTIMA = "SEXO DE LA VÍCTIMA") %>%
limpiar_departamento(DEPARTAMENTO) %>%
# FILTRO ESENCIAL: Solo víctimas mujeres para el análisis de feminicidio
filter(str_to_upper(SEXO_VICTIMA) == "MUJER")
# 2. Agregación: Contar solo los casos de feminicidio por DEPARTAMENTO
df_base1_agg <- df_fem_limpio %>%
filter(str_to_upper(`CIRCUNSTANCIA DEL HECHO`) == "FEMINICIDIO") %>%
group_by(DEPARTAMENTO) %>%
summarise(Total_Feminicidios = n()) %>%
ungroup()
# Muestra el resultado de la agregación
datatable(df_base1_agg, caption = "Total de Feminicidios por Departamento (V1)")
Se unen los datos de 2024 y 2025 y se agrega el total de casos por departamento. Solo se incluyen víctimas mujeres.
# 1. Cargar datos de 2024
df_sex_2024 <- read_excel("Delitos sexuales2024_0.xlsx", skip = 9) %>%
# [2]=DEPARTAMENTO, [4]=FECHA HECHO, [5]=GENERO, [9]=CANTIDAD (Contador)
select(DEPARTAMENTO = 2, FECHA_HECHO = 4, GENERO = 5, CANTIDAD = 9) %>%
mutate(FECHA_HECHO = as.character(FECHA_HECHO))
# 2. Cargar datos de 2025
df_sex_2025 <- read_excel("Delitos sexuales_7.xlsx", skip = 10) %>%
# [2]=DEPARTAMENTO, [4]=FECHA HECHO, [5]=GENERO, [9]=CANTIDAD (Contador)
select(DEPARTAMENTO = 2, FECHA_HECHO = 4, GENERO = 5, CANTIDAD = 9) %>%
mutate(FECHA_HECHO = as.character(FECHA_HECHO))
# Unir, Limpiar y Agregar
df_base2_agg <- bind_rows(df_sex_2024, df_sex_2025) %>%
# FILTRO ESENCIAL: Solo víctimas mujeres para un análisis de violencia de género más preciso
filter(str_to_upper(GENERO) == "FEMENINO") %>%
limpiar_departamento(DEPARTAMENTO) %>%
group_by(DEPARTAMENTO) %>%
summarise(Total_Delitos_Sexuales = sum(CANTIDAD, na.rm = TRUE)) %>%
ungroup()
# Muestra el resultado de la agregación
datatable(df_base2_agg, caption = "Total de Delitos Sexuales contra Mujeres por Departamento (V2)")
Se unen los datos de 2024 y 2025 y se agrega el total de casos por departamento. No se filtra por género para incluir todos los casos de VIF que sirven como factor de riesgo general en el hogar.
# [2]=DEPARTAMENTO, [4]=FECHA HECHO, [8]=CANTIDAD (Contador)
df_vif_2024 <- read_excel("Violencia intrafamiliar2024_0.xlsx", skip = 9) %>%
select(DEPARTAMENTO = 2, FECHA_HECHO = 4, CANTIDAD = 8) %>%
mutate(FECHA_HECHO = as.character(FECHA_HECHO))
df_vif_2025 <- read_excel("Violencia intrafamiliar_6.xlsx", skip = 10) %>%
select(DEPARTAMENTO = 2, FECHA_HECHO = 4, CANTIDAD = 8) %>%
mutate(FECHA_HECHO = as.character(FECHA_HECHO))
# Unir, Limpiar y Agregar
df_base3_agg <- bind_rows(df_vif_2024, df_vif_2025) %>%
limpiar_departamento(DEPARTAMENTO) %>%
group_by(DEPARTAMENTO) %>%
summarise(Total_Violencia_Intrafamiliar = sum(CANTIDAD, na.rm = TRUE)) %>%
ungroup()
# Muestra el resultado de la agregación
datatable(df_base3_agg, caption = "Total de Violencia Intrafamiliar por Departamento (V3)")
Se usa la base grande de eventos para contar otros homicidios (excluyendo feminicidios y suicidios) por departamento. Solo se incluyen víctimas mujeres.
# Reutilizamos df_hom_crudo para mantener la consistencia
df_hom_crudo <- read_excel("Libro1.xlsx", sheet = "BD")
# 1. Limpieza de la llave y filtro de género
df_hom_limpio_mujeres <- df_hom_crudo %>%
rename(DEPARTAMENTO = "Departamento del hecho DANE", SEXO_VICTIMA = "Sexo de la víctima") %>%
limpiar_departamento(DEPARTAMENTO) %>%
# FILTRO ESENCIAL: Solo víctimas mujeres (incluyendo otros homicidios de mujeres)
filter(str_to_upper(SEXO_VICTIMA) == "MUJER")
# 2. Agregación: Contar otros Homicidios (sin Feminicidio/Suicidio) de mujeres
df_base4_agg <- df_hom_limpio_mujeres %>%
filter(!str_detect(str_to_upper(`Circunstancia del Hecho`), "FEMINICIDIO|SUICIDIO")) %>%
group_by(DEPARTAMENTO) %>%
summarise(Total_Homicidios_Otros = n()) %>%
ungroup()
# Muestra el resultado de la agregación
datatable(df_base4_agg, caption = "Total de Otros Homicidios de Mujeres por Departamento (V4)")
Se obtiene la población total y femenina por departamento para el periodo 2024-2025, creando la tabla
df_poblacion_limpia.
# Carga y Agregación de Población (CORREGIDO)
# 1. Cargar datos de población.
df_poblacion_cruda <- read_excel("poblacion.xlsx",
skip = 2,
col_names = TRUE)
# 2. Limpieza y estandarización (Filtrado y Promediado)
df_poblacion_limpia <- df_poblacion_cruda %>%
# DPNOM=2, AÑO=3, ÁREA GEOGRÁFICA=4, TOTAL=5, Total Mujeres=7
select(
DEPARTAMENTO = 2,
AÑO = 3,
AREA_GEOGRAFICA = 4, # <--- Columna de área geográfica (CRÍTICO)
Total_General_Check = 5,
Poblacion_Mujeres = 7
) %>%
# FILTRAR: CRÍTICO 1: Seleccionar la agregación 'TOTAL' de área geográfica
filter(str_to_upper(AREA_GEOGRAFICA) == "TOTAL") %>%
# Limpieza de la llave: Estandarizar el nombre del departamento
limpiar_departamento(DEPARTAMENTO) %>%
# Agregación Final: PROMEDIAR los valores de 2024 y 2025
group_by(DEPARTAMENTO) %>%
summarise(
# PROMEDIAMOS las poblaciones para obtener una proyección más estable
Poblacion_Total = mean(Total_General_Check, na.rm = TRUE),
Poblacion_Mujeres = mean(Poblacion_Mujeres, na.rm = TRUE)
) %>%
ungroup() %>%
# CRÍTICO 2: Eliminar la fila que contiene la agregación 'TOTAL NACIONAL'
filter(DEPARTAMENTO != "TOTAL NACIONAL")
# Se muestra la base de población agregada (ahora con números realistas)
datatable(df_poblacion_limpia,
caption = "Base Poblacional 2024-2025 Agregada y Promediada por Departamento (DANE)") %>%
formatRound(columns = c("Poblacion_Total", "Poblacion_Mujeres"), digits = 0)
Se crea la Tabla Maestra uniendo las 4 bases de violencia, se reemplazan los valores faltantes (NA) por cero, se une la población y se calculan las tasas por 100.000 habitantes.
# 1. Iniciar con la base de Feminicidios
df_final <- df_base1_agg
# 2. Unir las otras 3 bases progresivamente (V2, V3, V4)
df_final <- df_final %>%
full_join(df_base2_agg, by = "DEPARTAMENTO") %>%
full_join(df_base3_agg, by = "DEPARTAMENTO") %>%
full_join(df_base4_agg, by = "DEPARTAMENTO")
# Se omite df_base5_agg (Suicidios)
# **Punto de Control: CRÍTICO** Reemplazar NAs (departamentos sin casos) por 0
df_final <- df_final %>%
mutate(across(starts_with("Total_"), ~replace_na(.x, 0)))
# 3. CRÍTICO: Unir con la base de población limpia (df_poblacion_limpia)
df_final <- df_final %>%
full_join(df_poblacion_limpia, by = "DEPARTAMENTO")
# 4. CRÍTICO: Calcular las Tasas por 100.000 (Multiplicamos por 100000)
df_final <- df_final %>%
mutate(
# Tasas por 100.000 Mujeres (V1, V2, V4)
Tasa_Feminicidios = (Total_Feminicidios / Poblacion_Mujeres) * 100000,
Tasa_Delitos_Sexuales = (Total_Delitos_Sexuales / Poblacion_Mujeres) * 100000,
Tasa_Homicidios_Otros = (Total_Homicidios_Otros / Poblacion_Mujeres) * 100000,
# Tasa por 100.000 Población Total (V3)
Tasa_Violencia_Intrafamiliar = (Total_Violencia_Intrafamiliar / Poblacion_Total) * 100000
)
# 5. Vista de la Tabla Maestra lista
datatable(df_final, caption = "Tabla Maestra Agregada (Conteo y Tasas por 100.000)") %>%
# MEJORA DE FORMATO: Redondear las tasas para una mejor visualización.
formatRound(columns = c("Tasa_Feminicidios", "Tasa_Delitos_Sexuales", "Tasa_Homicidios_Otros", "Tasa_Violencia_Intrafamiliar"), digits = 2) %>%
formatRound(columns = c("Poblacion_Total", "Poblacion_Mujeres"), digits = 0) %>% # Asegurar que la población se muestre sin decimales
formatStyle(columns = "DEPARTAMENTO", fontWeight = "bold")
Este chunk descarga y prepara la geometría de los departamentos de Colombia (Nivel 1 de GADM), asegurando que los nombres de los departamentos estén limpios para la unión con la Tabla Maestra.
# PASO CRÍTICO Y FINAL: Descomenta y ejecuta la siguiente línea una sola vez.
# install.packages(c("geodata", "sf", "dplyr"), repos = "[https://cloud.r-project.org/](https://cloud.r-project.org/)")
# 1. DESCARGA LA GEOMETRÍA DE COLOMBIA (NIVEL 1 = DEPARTAMENTOS)
df_geometria_colombia <- gadm(country = "COL", level = 1, path = tempdir()) %>%
st_as_sf()
# 2. LIMPIEZA DE LA LLAVE (CRÍTICO)
df_geometria_colombia <- df_geometria_colombia %>%
rename(DEPARTAMENTO = NAME_1) %>%
# Uso correcto de la función para limpiar la columna DEPARTAMENTO
limpiar_departamento(DEPARTAMENTO)
# Distribución Top 10 de Feminicidios
df_top10 <- df_fem_limpio %>%
group_by(DEPARTAMENTO) %>%
summarise(Conteo = n()) %>%
arrange(desc(Conteo))
total_nacional <- sum(df_top10$Conteo)
top10_suma <- sum(df_top10$Conteo[1:10])
top10_porcentaje <- round((top10_suma / total_nacional) * 100, 1)
df_top10 %>%
slice(1:10) %>% # Tomar el Top 10
ggplot(aes(x = reorder(DEPARTAMENTO, Conteo), y = Conteo, fill = Conteo)) +
geom_bar(stat = "identity") +
scale_fill_gradient(low = PALETA["pálido"], high = PALETA["oscuro"]) +
coord_flip() + # Barras horizontales
labs(
title = "Top 10 Departamentos con Mayor Incidencia de Feminicidios",
subtitle = paste0("Concentración geográfica del delito. Los 10 principales acumulan el ", top10_porcentaje, "% del total."),
x = "Departamento",
y = "Total de Casos de Feminicidio"
) +
theme_feminicidios() +
theme(legend.position = "none")
Análisis: Los datos revelan que el fenómeno está fuertemente concentrado. Los 10 principales departamentos acumulan aproximadamente el 72.2% del total nacional de feminicidios. Este hallazgo es crucial para la focalización de recursos y la implementación de políticas preventivas en puntos críticos.
# 1. CRÍTICO: CREAR df_mapa AQUÍ (Unir la geometría con la Tabla Maestra)
# Esto asegura que df_mapa exista justo antes de ser usado.
df_mapa <- df_geometria_colombia %>%
left_join(df_final, by = "DEPARTAMENTO")
# 2. Reemplazo de NA por 0 en la tasa (para que los departamentos sin datos se vean lightgray en lugar de generar errores)
df_mapa$Tasa_Feminicidios[is.na(df_mapa$Tasa_Feminicidios)] <- 0
# 3. Creación de la paleta de colores
pal <- colorNumeric(
palette = c(PALETA["pálido"], PALETA["oscuro"]), # Usamos los colores definidos
domain = df_mapa$Tasa_Feminicidios
)
# 4. Definición de las etiquetas al hacer hover (usando HTMLtools)
etiquetas <- paste(
"<strong>Departamento: </strong>", df_mapa$DEPARTAMENTO, "<br/>",
"<strong>Tasa de Feminicidios: </strong>", round(df_mapa$Tasa_Feminicidios, 2), " por 100K mujeres"
) %>% lapply(htmltools::HTML)
# 5. Creación del mapa interactivo
leaflet(df_mapa) %>%
addProviderTiles(providers$CartoDB.Positron) %>% # Fondo ligero
addPolygons(
fillColor = ~pal(Tasa_Feminicidios), # Color basado en la tasa
weight = 1,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
# Etiquetas de hover
highlightOptions = highlightOptions(
weight = 3,
color = "#AD49E1",
dashArray = "",
fillOpacity = 0.9,
bringToFront = TRUE
),
label = etiquetas,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "10px",
direction = "auto"
)
) %>%
# Leyenda de color
addLegend(pal = pal, values = ~Tasa_Feminicidios, opacity = 0.7, title = "Tasa por 100K Mujeres",
position = "bottomright")