📊 Análisis de Violencia de Género en Colombia
Estudio integral de feminicidios, delitos sexuales y violencia intrafamiliar
📌 Objetivo del análisis: Este informe analiza tres problemáticas críticas en Colombia: feminicidios, delitos sexuales y violencia intrafamiliar, utilizando bases de datos oficiales. Cada consulta incluye visualizaciones mejoradas y conclusiones fundamentadas en los datos.
| Librería | Para qué sirve |
|---|---|
| readxl | Permite leer archivos Excel (.xlsx y .xls). |
| dplyr | Manipulación y transformación de datos (filtrar, agrupar, ordenar). |
| ggplot2 | Crear gráficos profesionales y personalizables. |
| lubridate | Manejo de fechas (convertir, extraer año/mes/día). |
| janitor | Limpieza de datos (limpiar nombres de columnas, eliminar filas vacías). |
| scales | Formateo de valores en gráficos (porcentajes, comas, números grandes). |
| tidyverse | Conjunto de librerías integradas para análisis de datos (incluye dplyr, ggplot2, tidyr, etc.). |
| patchwork | Combinar varios gráficos de ggplot2 en una sola figura. |
| gt | Crear tablas presentables y profesionales para informes. |
df_femenicidios <- read_excel("Data Original Femenicidios.xlsx") %>%
clean_names() %>%
mutate(fecha_del_hecho = dmy(paste0("01-", mes_del_hecho, "-", ano_del_hecho)))
df_delitos_sexuales <- read_excel("Delitos sexualesDB.xlsx") %>%
clean_names() %>%
mutate(fecha_hecho = ymd(fecha_hecho))
df_violencia_intrafamiliar <- read_excel("Violencia intrafamiliarDB.xlsx") %>%
clean_names() %>%
mutate(fecha_hecho = dmy(fecha_hecho))
¿Qué muestra esta consulta?
Esta consulta compara proporcionalmente cuántos casos corresponden a
feminicidios, delitos sexuales y violencia intrafamiliar. Sirve para
identificar cuál tipo de violencia es más frecuente en el país.
pastel_df <- data.frame(
tipo_violencia = c("Feminicidios", "Delitos Sexuales", "Violencia Intrafamiliar"),
total_casos = c(
nrow(df_femenicidios),
sum(df_delitos_sexuales$cantidad, na.rm = TRUE),
sum(df_violencia_intrafamiliar$cantidad, na.rm = TRUE)
)
) %>%
mutate(
porcentaje = round((total_casos / sum(total_casos)) * 100, 1),
etiqueta = paste0(tipo_violencia, "\n", comma(total_casos), " casos\n", porcentaje, "%")
)
ggplot(pastel_df, aes(x = "", y = total_casos, fill = tipo_violencia)) +
geom_bar(stat = "identity", width = 1, color = "white", size = 2) +
coord_polar("y", start = 0) +
geom_text(aes(label = etiqueta),
position = position_stack(vjust = 0.5),
color = "white", size = 5, fontface = "bold") +
scale_fill_manual(values = colores_custom) +
theme_void() +
theme(
plot.title = element_text(hjust = 0.5, color = "#c44569", face = "bold", size = 16),
plot.subtitle = element_text(hjust = 0.5, color = "#8e44ad", size = 12),
legend.position = "none",
plot.background = element_rect(fill = "white", color = NA)
) +
labs(
title = "Distribución de Tipos de Violencia en Colombia",
subtitle = "Comparación proporcional de casos registrados"
)
El gráfico revela que la violencia intrafamiliar representa el 70.9% del total de casos, siendo abrumadoramente la categoría más prevalente. Esto indica que la mayoría de los actos violentos ocurren dentro del entorno familiar o doméstico.
Hallazgos clave: - Violencia Intrafamiliar: 70.9% (más de dos tercios del total) - Delitos Sexuales: 16.4% (aproximadamente una sexta parte) - Feminicidios: 12.7% (menor proporción pero extrema gravedad)
La concentración del 70.9% en violencia intrafamiliar revela un problema estructural profundo en las dinámicas familiares, sugiriendo que el hogar se convierte en el principal escenario de violencia. Esta situación demanda intervención urgente en políticas públicas de prevención y sistemas de protección a víctimas.
¿Qué muestra esta consulta?
Identifica los departamentos con mayores casos sumando los tres tipos de
violencia. El objetivo es visualizar en qué zonas del país es más
crítica la situación.
dept_f <- df_femenicidios %>%
count(departamento_del_hecho_dane, name = "Feminicidios") %>%
rename(departamento = departamento_del_hecho_dane)
dept_s <- df_delitos_sexuales %>%
count(departamento, name = "Delitos Sexuales")
dept_i <- df_violencia_intrafamiliar %>%
count(departamento, name = "Violencia Intrafamiliar")
dept_all <- dept_f %>%
full_join(dept_s, by = "departamento") %>%
full_join(dept_i, by = "departamento") %>%
replace_na(list(Feminicidios = 0, `Delitos Sexuales` = 0, `Violencia Intrafamiliar` = 0)) %>%
pivot_longer(cols = 2:4, names_to = "tipo", values_to = "casos")
top_dept <- dept_all %>%
group_by(departamento) %>%
summarise(total = sum(casos)) %>%
arrange(desc(total)) %>%
slice(1:10)
dept_all_top <- dept_all %>%
filter(departamento %in% top_dept$departamento) %>%
mutate(departamento = factor(departamento, levels = rev(top_dept$departamento)))
ggplot(dept_all_top, aes(x = departamento, y = casos, fill = tipo)) +
geom_col(position = "dodge", width = 0.7) +
coord_flip() +
scale_fill_manual(values = colores_custom) +
scale_y_continuous(labels = comma) +
theme_violencia() +
labs(
title = "Top 10 Departamentos con Mayor Incidencia de Violencia",
subtitle = "Comparación por tipo de violencia",
x = NULL,
y = "Número de Casos",
fill = "Tipo de Violencia"
) +
theme(legend.position = "bottom")
Cundinamarca se destaca como el departamento con mayor cantidad de casos absolutos, presentando aproximadamente 60,000 casos de violencia intrafamiliar y cerca de 15,000 delitos sexuales, significativamente mayor que el resto.
Patrones identificados: - Predominio de violencia intrafamiliar en todos los departamentos - Cundinamarca y Antioquia concentran la mayoría de casos - La distribución geográfica muestra que es un problema nacional que trasciende fronteras regionales
La marcada concentración en Cundinamarca puede explicarse por factores como: albergar a Bogotá (capital y ciudad más poblada), mejor infraestructura de registro y denuncia, y mayor conciencia ciudadana sobre estos delitos.
¿Qué muestra esta consulta?
Identifica los 10 medios o armas más frecuentes en los tres tipos de
violencia. Permite conocer cómo se cometen los hechos.
arm_f <- df_femenicidios %>%
count(mecanismo_causal, name = "Feminicidios") %>%
rename(arma_medio = mecanismo_causal)
arm_s <- df_delitos_sexuales %>%
count(armas_medios, name = "Delitos Sexuales") %>%
rename(arma_medio = armas_medios)
arm_i <- df_violencia_intrafamiliar %>%
count(armas_medios, name = "Violencia Intrafamiliar") %>%
rename(arma_medio = armas_medios)
arm_all <- arm_f %>%
full_join(arm_s, by = "arma_medio") %>%
full_join(arm_i, by = "arma_medio") %>%
replace_na(list(Feminicidios = 0, `Delitos Sexuales` = 0, `Violencia Intrafamiliar` = 0)) %>%
pivot_longer(cols = 2:4, names_to = "tipo", values_to = "casos")
top_arm <- arm_all %>%
group_by(arma_medio) %>%
summarise(total = sum(casos)) %>%
arrange(desc(total)) %>%
slice(1:10)
arm_top <- arm_all %>%
filter(arma_medio %in% top_arm$arma_medio) %>%
mutate(arma_medio = factor(arma_medio, levels = rev(top_arm$arma_medio)))
ggplot(arm_top, aes(x = arma_medio, y = casos, fill = tipo)) +
geom_col(position = "dodge", width = 0.7) +
coord_flip() +
scale_fill_manual(values = colores_custom) +
scale_y_continuous(labels = comma) +
theme_violencia() +
labs(
title = "Top 10 Medios y Armas Más Utilizados",
subtitle = "Análisis por tipo de violencia",
x = NULL,
y = "Número de Casos",
fill = "Tipo de Violencia"
)
“SIN EMPLEO DE ARMAS” representa abrumadoramente la mayoría de casos (aproximadamente 150,000 de violencia intrafamiliar y 50,000 delitos sexuales), revelando que la violencia ocurre principalmente mediante agresión física directa.
Hallazgos clave: - Los proyectiles de arma de fuego están asociados casi exclusivamente a feminicidios, evidenciando su letalidad - Los objetos contundentes son el segundo medio más común, principalmente en violencia intrafamiliar - El uso de objetos cotidianos como armas indica que la prevención debe enfocarse en las dinámicas de poder, no solo en control de armas
La predominancia de casos “sin empleo de armas” indica que la violencia de género se basa fundamentalmente en dominación física directa, no en instrumentos. Las políticas de prevención deben enfocarse en las dinámicas de poder y control interpersonal.
¿Qué muestra esta consulta?
Presenta la distribución de edad de las víctimas de feminicidio usando
visualizaciones mejoradas, útil para detectar edades más afectadas y
patrones de riesgo.
edad_df <- df_femenicidios %>%
filter(!is.na(grupo_de_edad_de_la_victima)) %>%
mutate(
edad_num = case_when(
grupo_de_edad_de_la_victima == "(15 a 17)" ~ 16,
grupo_de_edad_de_la_victima == "(18 a 19)" ~ 18.5,
grupo_de_edad_de_la_victima == "(20 a 24)" ~ 22,
grupo_de_edad_de_la_victima == "(25 a 29)" ~ 27,
TRUE ~ NA_real_
)
) %>%
drop_na(edad_num)
p1 <- ggplot(edad_df, aes(y = edad_num)) +
geom_boxplot(fill = "#f78fb3", color = "#c44569", width = 0.5, outlier.color = "#8e44ad") +
theme_violencia() +
labs(
title = "Distribución de Edad en Feminicidios",
subtitle = "Análisis mediante Boxplot",
y = "Edad (años)",
x = NULL
) +
theme(axis.text.x = element_blank())
p2 <- ggplot(edad_df, aes(x = edad_num)) +
geom_density(fill = "#9b59b6", alpha = 0.7, color = "#c44569", size = 1.2) +
theme_violencia() +
labs(
title = "Densidad de Edad en Feminicidios",
subtitle = "Curva de distribución",
x = "Edad (años)",
y = "Densidad"
)
p1 / p2
Las mujeres jóvenes entre 22 y 27 años constituyen el grupo de mayor riesgo para feminicidio. Esta es precisamente la etapa donde muchas mujeres establecen relaciones de pareja estables, tienen mayor independencia económica incipiente, o están en proceso de separación de relaciones violentas.
Implicaciones: - Las estrategias de prevención deben focalizarse intensamente en mujeres adultas jóvenes - El patrón etario sugiere que el feminicidio ocurre frecuentemente en el contexto de relaciones de pareja o ex pareja - Se requiere educación sobre señales de alarma en relaciones y fortalecimiento de redes de apoyo para este grupo demográfico
La concentración en este rango de edad refuerza la necesidad de intervenciones tempranas cuando se detectan situaciones de violencia doméstica en mujeres de este grupo etario.
¿Qué muestra esta consulta?
Calcula el coeficiente de correlación de Pearson entre
los tres tipos de violencia a nivel departamental. Este coeficiente mide
la relación lineal entre dos variables, con valores entre -1
(correlación negativa perfecta) y +1 (correlación positiva perfecta).
Valores cercanos a 0 indican ausencia de correlación lineal.
Interpretación: - r > 0.7:
Correlación positiva fuerte - 0.4 < r < 0.7:
Correlación positiva moderada
- r < 0.4: Correlación débil
# Preparar datos: casos totales por departamento y tipo de violencia
dept_correlacion <- dept_f %>%
full_join(dept_s, by = "departamento") %>%
full_join(dept_i, by = "departamento") %>%
replace_na(list(Feminicidios = 0, `Delitos Sexuales` = 0, `Violencia Intrafamiliar` = 0))
# Calcular matriz de correlación de Pearson
cor_matrix <- dept_correlacion %>%
select(Feminicidios, `Delitos Sexuales`, `Violencia Intrafamiliar`) %>%
cor(method = "pearson")
# Convertir a formato largo para visualización
cor_df <- cor_matrix %>%
as.data.frame() %>%
rownames_to_column("Variable1") %>%
pivot_longer(cols = -Variable1, names_to = "Variable2", values_to = "Correlacion") %>%
mutate(
Correlacion_label = round(Correlacion, 3),
Significancia = case_when(
abs(Correlacion) >= 0.7 ~ "Fuerte",
abs(Correlacion) >= 0.4 ~ "Moderada",
TRUE ~ "Débil"
)
)
# Gráfico 1: Matriz de correlación (heatmap)
p_heatmap <- ggplot(cor_df, aes(x = Variable1, y = Variable2, fill = Correlacion)) +
geom_tile(color = "white", size = 1.5) +
geom_text(aes(label = Correlacion_label), color = "white", size = 7, fontface = "bold") +
scale_fill_gradient2(
low = "#f78fb3",
mid = "white",
high = "#9b59b6",
midpoint = 0,
limits = c(-1, 1),
name = "Coeficiente\nde Pearson"
) +
theme_violencia() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 11),
axis.text.y = element_text(size = 11),
panel.grid = element_blank(),
panel.background = element_rect(fill = "white"),
legend.position = "right"
) +
labs(
title = "Matriz de Correlación de Pearson",
subtitle = "Relación entre tipos de violencia por departamento",
x = NULL,
y = NULL
) +
coord_fixed()
print(p_heatmap)
# Tabla resumen de correlaciones
cor_vi_ds <- cor(dept_correlacion$`Violencia Intrafamiliar`, dept_correlacion$`Delitos Sexuales`)
cor_vi_f <- cor(dept_correlacion$`Violencia Intrafamiliar`, dept_correlacion$Feminicidios)
cor_ds_f <- cor(dept_correlacion$`Delitos Sexuales`, dept_correlacion$Feminicidios)
tabla_cor <- data.frame(
Relacion = c(
"Violencia Intrafamiliar ↔ Delitos Sexuales",
"Violencia Intrafamiliar ↔ Feminicidios",
"Delitos Sexuales ↔ Feminicidios"
),
Coeficiente_Pearson = c(cor_vi_ds, cor_vi_f, cor_ds_f),
Fuerza = c(
ifelse(abs(cor_vi_ds) >= 0.7, "Fuerte",
ifelse(abs(cor_vi_ds) >= 0.4, "Moderada", "Débil")),
ifelse(abs(cor_vi_f) >= 0.7, "Fuerte",
ifelse(abs(cor_vi_f) >= 0.4, "Moderada", "Débil")),
ifelse(abs(cor_ds_f) >= 0.7, "Fuerte",
ifelse(abs(cor_ds_f) >= 0.4, "Moderada", "Débil"))
),
R_cuadrado = c(cor_vi_ds^2, cor_vi_f^2, cor_ds_f^2)
) %>%
mutate(
Coeficiente_Pearson = round(Coeficiente_Pearson, 3),
R_cuadrado = paste0(round(R_cuadrado * 100, 1), "%")
)
tabla_cor %>%
gt() %>%
tab_header(
title = md("**📊 Coeficientes de Correlación de Pearson**"),
subtitle = "Análisis de relaciones lineales entre tipos de violencia por departamento"
) %>%
cols_label(
Relacion = "Relación entre Variables",
Coeficiente_Pearson = "r de Pearson",
Fuerza = "Fuerza de Correlación",
R_cuadrado = "R² (Varianza Explicada)"
) %>%
tab_style(
style = list(
cell_fill(color = "#f3e5f5"),
cell_text(size = px(13))
),
locations = cells_body(columns = everything())
) %>%
tab_style(
style = list(
cell_text(color = "white", weight = "bold"),
cell_fill(color = "#9b59b6")
),
locations = cells_column_labels(columns = everything())
) %>%
tab_style(
style = cell_text(weight = "bold", color = "#c44569"),
locations = cells_body(columns = Coeficiente_Pearson)
) %>%
tab_options(
table.font.size = 13,
heading.background.color = "#c44569",
heading.title.font.size = 18,
heading.subtitle.font.size = 13,
column_labels.font.size = 12,
table.border.top.color = "#c44569",
table.border.bottom.color = "#c44569"
)
| 📊 Coeficientes de Correlación de Pearson | |||
| Análisis de relaciones lineales entre tipos de violencia por departamento | |||
| Relación entre Variables | r de Pearson | Fuerza de Correlación | R² (Varianza Explicada) |
|---|---|---|---|
| Violencia Intrafamiliar ↔ Delitos Sexuales | 0.994 | Fuerte | 98.8% |
| Violencia Intrafamiliar ↔ Feminicidios | -0.188 | Débil | 3.5% |
| Delitos Sexuales ↔ Feminicidios | -0.201 | Débil | 4.1% |
El análisis de la matriz de correlación revela comportamientos claramente diferenciados entre las formas de violencia estudiadas. En primer lugar, Delitos Sexuales y Violencia Intrafamiliar presentan una correlación positiva casi perfecta (r = 0.994). Esto significa que ambas variables se mueven prácticamente al mismo ritmo: cuando una aumenta, la otra también lo hace. Esta relación tan alta sugiere que comparten dinámicas, factores de riesgo y contextos muy similares, por lo que suelen manifestarse de manera paralela.
Por el contrario, los Feminicidios muestran correlaciones débiles y negativas frente a las otras dos variables (r = –0.201 con Delitos Sexuales y r = –0.188 con Violencia Intrafamiliar). Estos valores indican que su comportamiento es independiente, sin tendencias claras que los vinculen con los otros tipos de violencia. Aunque en la realidad algunos feminicidios pueden tener antecedentes de violencia previa, en esta base de datos no se evidencia una relación estadística significativa.
Existe una correlación positiva casi perfecta, lo que significa que ambas variables aumentan y disminuyen juntas. Aproximadamente el 98.8% de la variación entre ellas es compartida, lo que indica una relación muy estrecha y factores comunes.
La relación es débil y negativa, lo que demuestra que los feminicidios no dependen del comportamiento de los delitos sexuales.
También es una correlación débil y negativa, indicando que los feminicidios no están asociados estadísticamente a la violencia intrafamiliar en esta base de datos.
⭐ Conclusión General
Las cifras permiten afirmar que Delitos Sexuales y Violencia Intrafamiliar están estrechamente relacionados, mientras que los Feminicidios responden a dinámicas distintas, por lo que deben analizarse con variables y enfoques propios.
Recomendación metodológica: La fuerte correlación justifica crear un Índice Compuesto de Violencia de Género que integre los tres tipos, permitiendo una evaluación más comprehensiva y eficiente de la situación por departamento.
Los datos analizados revelan que la violencia de género en Colombia es un problema estructural y sistémico que afecta a todo el territorio nacional: