Taller Estadística Descriptiva

Ejercicio 1

1.1. Introducción

En este ejercicio se analiza la evolución temporal de dos fenómenos en Colombia: los delitos sexuales (a nivel de Antioquia) y los eventos de minas antipersonal. El objetivo es calcular la tasa de crecimiento anual de cada fenómeno y visualizar su comportamiento en el tiempo mediante gráficos de doble eje, que permitan comparar simultáneamente el número de casos y su dinámica de crecimiento.

1.2. Carga de librerias

Se cargan librerías necesarias para manipulación, limpieza y visualización de datos, así como las bases de datos correspondientes:

library(tidyverse)
library(janitor)
library(scales)
library(lubridate)
library(dplyr)

delitos <- read.csv("basesdedatos/Delitos_Sexuales_Antioquia (1).csv") %>% clean_names()
minas <- read.csv("basesdedatos/Minas_Colombia (2).csv") %>% clean_names()

1.3. Exploración inicial de los datos

Se realiza una exploración preliminar para comprender la estructura de las bases de datos.

glimpse(delitos)
Rows: 47,063
Columns: 8
$ municipio    <chr> "Medellín (CT)", "Medellín (CT)", "Puerto Berrío", "Copac…
$ codigo_dane  <int> 5001005, 5001005, 5579000, 5212000, 5154000, 5001014, 503…
$ armas_medios <chr> "NO REPORTADO", "NO REPORTADO", "NO REPORTADO", "NO REPOR…
$ fecha_hecho  <chr> "02/01/2010", "02/01/2010", "07/03/2010", "01/02/2010", "…
$ genero       <chr> "MASCULINO", "MASCULINO", "FEMENINO", "FEMENINO", "FEMENI…
$ grupo_etario <chr> "ADOLESCENTES", "ADOLESCENTES", "ADULTOS", "ADULTOS", "AD…
$ cantidad     <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
$ delito       <chr> "ARTÍCULO 209. ACTOS SEXUALES CON MENOR DE 14 AÑOS", "ART…
glimpse(minas)
Rows: 39,171
Columns: 14
$ tipo_evento              <chr> "Sospecha de campo minado", "Sospecha de camp…
$ departamento             <chr> "SANTANDER", "SANTANDER", "ANTIOQUIA", "ARAUC…
$ codigo_dane_departamento <int> 68, 68, 5, 81, 54, 86, 95, 54, 50, 5, 41, 41,…
$ municipio                <chr> "SAN VICENTE DE CHUCURÍ", "EL CARMEN", "GRANA…
$ codigo_dane_municipio    <dbl> 68.689, 68.235, 5.313, 81.065, 54.810, 86.568…
$ ano                      <dbl> 2.014, 2.013, 2.015, 2.015, 2.015, 2.015, 2.0…
$ mes                      <int> 10, 9, 4, 5, 5, 3, 4, 4, 3, 3, 10, 3, 10, 6, …
$ evento                   <chr> "Incidente", "Incidente", "Incidente", "Incid…
$ tipo_lugar               <chr> "Fincas", "Campo", "Campo", "Oleoductos", "Si…
$ tipo_area                <chr> "Rural", "Rural", "Rural", "Rural", "Rural", …
$ latitud_cabecera         <chr> "6,84073", "6,72416", "6,11738", "7,010011111…
$ longitud_cabecera        <chr> "-73,53009", "-73,60923", "-75,10259", "-71,4…
$ sitio                    <chr> "Sospecha De Campo Minado", "Sospecha De Camp…
$ ubicacion                <chr> "POINT (-73.53009 6.84073)", "POINT (-73.6092…

La base de delitos contiene información a nivel de evento individual, incluyendo fecha del hecho y cantidad de casos. Por su parte, la base de minas antipersonal presenta información histórica por evento, donde el año se encuentra en una variable con problemas de formato, lo que requiere un proceso de limpieza.

1.4. Exploración inicial de los datos

Se transforma la variable fecha y se extrae el año para permitir la agregación temporal. Se verifica que la variable año fue correctamente extraída y que los datos cubren el periodo esperado. Se corrigen valores erróneos del año derivados de problemas de codificación, garantizando una estructura temporal consistente para el análisis.

# Delitos
delitos <- delitos %>%
  mutate(
    fecha_hecho = dmy(fecha_hecho),
    anio = year(fecha_hecho)
  )
table(delitos$anio)

2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 
 280  276  335  442  886 2928 3101 3678 4756 5096 4523 5068 3516 3586 4251 4341 
#Minas
minas <- minas %>%
  mutate(
    ano_char = as.character(ano),
    ano_char = gsub("\\.", "", ano_char)
  )

minas$ano_char <- ifelse(minas$ano_char == 199,1990,
                         ifelse(minas$ano_char == 2, 2000,
                                ifelse(minas$ano_char == 201,2010,
                                       ifelse(minas$ano_char == 202, 2020,minas$ano_char))))
table(minas$ano_char)

1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 
  35   52  171  202  257  208  163  146   77   81  233  350  975 1463 2033 1802 
2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 
2158 2039 1455 2690 2598 2946 3448 2799 2680 2444 1778  658  557  534  512  398 
2022 2023 
 483  746 

1.5. Agregación Anual de los datos

Se agrupan los datos por año para obtener el número total de casos en cada periodo. Se obtiene una serie temporal anual por cada fenómeno, lo que permite analizar tendencias y variaciones en el tiempo.

delitos_anual <- delitos %>%
  group_by(anio) %>%
  summarise(casos = sum(cantidad, na.rm = TRUE)) %>%
  arrange(anio)

minas_anual <- minas %>%
  group_by(ano_char) %>%
  summarise(casos = n()) %>%
  arrange(ano_char) %>% 
  rename(anio = ano_char)

1.6. Cálculo de la tasa de crecimiento

Se calcula la tasa de crecimiento anual como la variación relativa entre un año y el anterior. La tasa de crecimiento permite identificar cambios relativos en la magnitud del fenómeno, evidenciando periodos de incremento o disminución.

calcular_crecimiento <- function(df){
  df %>%
    arrange(anio) %>%
    mutate(
      crecimiento = (casos - lag(casos)) / lag(casos)
    )
}

delitos_anual <- calcular_crecimiento(delitos_anual);delitos_anual
# A tibble: 16 × 3
    anio casos crecimiento
   <dbl> <int>       <dbl>
 1  2010   280     NA     
 2  2011   276     -0.0143
 3  2012   335      0.214 
 4  2013   442      0.319 
 5  2014   886      1.00  
 6  2015  2928      2.30  
 7  2016  3101      0.0591
 8  2017  3678      0.186 
 9  2018  4756      0.293 
10  2019  5096      0.0715
11  2020  4523     -0.112 
12  2021  5068      0.120 
13  2022  3516     -0.306 
14  2023  3586      0.0199
15  2024  4251      0.185 
16  2025  4341      0.0212
minas_anual   <- calcular_crecimiento(minas_anual);delitos_anual
# A tibble: 16 × 3
    anio casos crecimiento
   <dbl> <int>       <dbl>
 1  2010   280     NA     
 2  2011   276     -0.0143
 3  2012   335      0.214 
 4  2013   442      0.319 
 5  2014   886      1.00  
 6  2015  2928      2.30  
 7  2016  3101      0.0591
 8  2017  3678      0.186 
 9  2018  4756      0.293 
10  2019  5096      0.0715
11  2020  4523     -0.112 
12  2021  5068      0.120 
13  2022  3516     -0.306 
14  2023  3586      0.0199
15  2024  4251      0.185 
16  2025  4341      0.0212

1.7. Visualización de datos

Se realiza la gráfica de doble eje para cada uno de los fenómenos que contenga casos y tasa de crecimiento.

# =========================================================
# 5.1 DELITOS
# =========================================================

# Factor de escala: convierte crecimiento (proporción) a escala de casos
scale_factor_delitos <- max(delitos_anual$casos, na.rm = TRUE) /
  max(abs(delitos_anual$crecimiento), na.rm = TRUE)

g_delitos <- ggplot(delitos_anual, aes(x = anio)) +
  
  # Casos (barras)
  geom_col(aes(y = casos), fill = "steelblue", alpha = 0.7) +
  
  # Crecimiento (línea escalada)
  geom_line(aes(y = crecimiento * scale_factor_delitos),
            color = "red", size = 1) +
  
  scale_y_continuous(
    name = "Número de casos",
    sec.axis = sec_axis(
      ~ . / scale_factor_delitos,
      name = "Tasa de crecimiento",
      labels = percent
    )
  ) +
  
  labs(
    title = "Delitos sexuales en Antioquia",
    x = "Año"
  ) +
  
  theme_minimal()

g_delitos

# =========================================================
# 5.2 MINAS
# =========================================================
minas_anual$anio <- as.integer(minas_anual$anio)
scale_factor_minas <- max(minas_anual$casos, na.rm = TRUE) /
  max(abs(minas_anual$crecimiento), na.rm = TRUE)

g_minas <- ggplot(minas_anual, aes(x = anio)) +
  
  geom_col(aes(y = casos), fill = "darkgreen", alpha = 0.7) +
  
  geom_line(aes(y = crecimiento * scale_factor_minas),
            color = "orange", size = 1) +
  
  scale_y_continuous(
    name = "Número de eventos",
    sec.axis = sec_axis(
      ~ . / scale_factor_minas,
      name = "Tasa de crecimiento",
      labels = percent
    )
  ) +
  
  labs(
    title = "Eventos de minas antipersonal en Colombia",
    x = "Año"
  ) +
  
  theme_minimal()

g_minas

1.8. Interpretación de resultados.

1.8.1 Evolución temporal de los delitos sexuales

Los delitos sexuales en Antioquia presentan una dinámica claramente creciente entre 2010 y 2019, pasando de 280 casos en 2010 a un máximo de 5069 casos en 2019. Este crecimiento no es lineal, sino que muestra un punto de inflexión crítico entre 2014 y 2015, donde los casos aumentan de 886 a 2928, lo que representa una tasa de crecimiento del 230%, la más alta de toda la serie.

A partir de 2019, se observa una fase de estabilización con fluctuaciones, incluyendo una disminución en 2020 (-11.2%) y una caída más pronunciada en 2022 (-30.6%), seguida de una recuperación moderada hasta 2025. En general, el fenómeno muestra una tendencia creciente de largo plazo, pero con variaciones importantes en los últimos años.

1.8.2. Evolución temporal de los eventos de minas antipersonal.

Los eventos de minas antipersonal presentan una dinámica diferente, caracterizada por tres fases claras:

  • Crecimiento inicial (1990 -2004): Se observa un aumento sostenido desde 35 eventos en 1990 hasta 2033 en 2004, con tasas de crecimiento elevadas en años específicos como 1992 (228%) y 2000 (187%).

  • Fase de alta intensidad (2005 - 2012): Durante este periodo se mantienen niveles altos, alcanzando el máximo en 2012 con 3448 eventos.

  • Disminución sostenida (2013 - 2021): A partir de 2013 se evidencia una reducción progresiva del fenómeno, con caídas signifiactivas como la de 2017 (-63%), hasta llegar a 398 eventos en 2021.

Finalmente, entre 2022 y 2023 se observa un repunte del fenómeno, con crecimientos del 21% y 54%, respectivamente, lo que sugiere una posible reactivación o cambios en las condiciones del contexto.

1.8.3. Identificación de picos (años de mayor frecuencia)

En términos de número de casos (moda empírica):

  • Delitos sexuales: el año con mayor frecuencia es 2019, con 5,096 casos.

  • Minas antipersonal: el máximo se presenta en 2012, con 3,448 eventos.

Estos picos representan los momentos de mayor intensidad de cada fenómeno y no necesariamente coinciden con los mayores crecimientos.

1.8.4. Relación entre número de casos y tasa de crecimiento.

El análisis conjunto de las gráficas permite evidenciar que los mayores crecimientos no coinciden con los años de mayor número de casos. Por ejemplo:

  • En delitos sexuales, el mayor crecimiento ocurre en 2015 (230%), pero el máximo número de casos se alcanza en 2019.

  • En minas antipersonal, crecimientos muy altos se presentan en años iniciales como 1992 (228%) y 2000 (187%), cuando el número absoluto de eventos aún era relativamente bajo.

Esto refleja una propiedad importante de las tasas de crecimiento: son altamente sensibles a valores iniciales pequeños, por lo que deben interpretarse en conjunto con el volumen de casos.

1.8.5. Comparación general de los fenómenos.

Al comparar ambos fenómenos, se observan patrones contrastantes:

  • Los delitos sexuales muestran una tendencia creciente reciente, con aumentos importantes en la última década.

  • Los eventos de minas antipersonal presentan una tendencia decreciente de largo plazo, con un pico en la década de 2010 y una posterior reducción sostenida.

En conjunto, esto sugiere que se trata de fenómenos con dinámicas estructurales distintas, posiblemente influenciadas por factores sociales, institucionales y de seguridad diferentes.

Ejercicio 2

2.1. Introducción

En este ejercicio se analiza la estructura por género y la distribución de la edad de las personas involucradas en homicidios en Medellín. A partir de la base de datos disponible, se construyen distribuciones por género y grupos de edad, y se calculan medidas descriptivas que permiten caracterizar la variable edad en términos de tendencia central, dispersión, forma y posición. El análisis se complementa con representaciones gráficas que facilitan la interpretación de los resultados.

2.2. Carga de librerias

En esta etapa se carga la base de datos y se realiza una exploración inicial de su estructura. Se identifica que la información está a nivel individual, incluyendo variables como sexo y edad, las cuales serán utilizadas para el análisis descriptivo.

library(tidyverse)
library(janitor)
library(lubridate)

homicidios <- read.csv("basesdedatos/Homicidios_Medellín.csv") %>%
  clean_names()

2.3. Exploración inicial de los datos

Se realiza una exploración preliminar para comprender la estructura de las bases de datos. La base contiene información detallada de eventos de homicidios, incluyendo variables demográficas como sexo y edad, las cuales serán utilizadas para el análisis descriptivo.

glimpse(homicidios)
Rows: 19,647
Columns: 36
$ fecha_hecho         <chr> "2019-04-23T07:30:00.000-05:00", "2019-05-11T19:51…
$ cantidad            <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
$ latitud             <dbl> 6.257226, 6.222806, 6.262382, 6.269589, 6.236277, …
$ longitud            <dbl> -75.56985, -75.61037, -75.62039, -75.56177, -75.53…
$ sexo                <chr> "Mujer", "Hombre", "Hombre", "Hombre", "Hombre", "…
$ edad                <int> 50, 24, 34, 20, 34, 25, 37, 22, 21, 29, 29, 20, 25…
$ estado_civil        <chr> "Sin dato", "Unión marital de hecho", "Casado", "S…
$ grupo_actor         <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ actividad_delictiva <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ parentesco          <chr> "Desconocido", "Sin dato", "Sin dato", "Sin dato",…
$ ocupacion           <chr> "Comerciante", "Vendedor ambulante", "Conductor", …
$ discapacidad        <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ grupo_especial      <chr> "LGBTI", "Sin dato", "Sin dato", "Sin dato", "Sin …
$ medio_transporte    <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ nivel_academico     <chr> "Alfabeta", "Bachillerato", "Bachillerato", "Sin d…
$ testigo             <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ conducta            <chr> "Homicidio", "Homicidio", "Homicidio", "Homicidio"…
$ modalidad           <chr> "Ahorcamiento o estrangulamiento", "Arma de fuego"…
$ caracterizacion     <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ conducta_especial   <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ arma_medio          <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ articulo_penal      <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ categoria_penal     <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ nombre_barrio       <chr> "Estación Villa", "Altavista", "El Socorro", "San …
$ codigo_barrio       <chr> "1005", "1613", "1319", "0408", "0819", "8007", "0…
$ codigo_comuna       <dbl> 10, 16, 13, 4, 8, 80, 2, 4, 10, 10, 8, 60, 60, 60,…
$ lugar               <chr> "Vía pública", "Vía pública", "Vía pública", "Vía …
$ sede_receptora      <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ bien                <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ categoria_bien      <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ grupo_bien          <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ modelo              <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ color               <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ permiso             <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ unidad_medida       <chr> "Sin dato", "Sin dato", "Sin dato", "Sin dato", "S…
$ fecha_ingestion     <chr> "2025-03-06T04:08:41.000-05:00", "2025-03-06T04:08…

2.4. Limpieza de datos

En este bloque se realiza la depuración de la variable edad, eliminando valores faltantes o inconsistentes, como edades negativas o fuera de un rango razonable. Adicionalmente, se estandariza la variable sexo para asegurar consistencia en los valores y permitir una correcta agrupación.

# ---- Limpieza de edad ----
homicidios <- homicidios %>%
  mutate(
    edad = as.numeric(edad)
  ) %>%
  filter(
    !is.na(edad),
    edad > 0,       # elimina -1
    edad <= 100     # rango razonable
  )

# ---- Limpieza de sexo ----
homicidios <- homicidios %>%
  mutate(
    sexo = str_to_title(sexo)
  )

2.5. Distribución por sexo

El cálculo de la distribución por género muestra que la gran mayoría de los casos corresponde a hombres, quienes representan el 92.3% del total, mientras que las mujeres corresponden al 7.7%. Esta diferencia evidencia que el fenómeno de homicidios en Medellín está fuertemente concentrado en la población masculina. El registro clasificado como “None” es marginal y no afecta la interpretación general.

tabla_genero <- homicidios %>%
  count(sexo) %>%
  mutate(
    porcentaje = round(100 * n / sum(n), 2)
  )

tabla_genero
    sexo     n porcentaje
1 Hombre 18097      92.30
2  Mujer  1509       7.70
3   None     1       0.01

2.6. Distribución por grupos de edad

Al agrupar la edad en rangos, se observa que el fenómeno se concentra principalmente en población joven adulta. El grupo entre 26 y 35 años presenta la mayor proporción de casos, con 33.62%, seguido del grupo de 19 a 25 años con 28.07%. En conjunto, estos dos grupos concentran más del 60% de los casos, lo que indica que los homicidios afectan principalmente a personas en etapas tempranas de la vida adulta. A medida que aumenta la edad, la frecuencia disminuye progresivamente, siendo el grupo de 60 años o más el de menor participación.

homicidios <- homicidios %>%
  mutate(
    grupo_edad = cut(
      edad,
      breaks = c(0, 18, 25, 35, 45, 60, 100),
      labels = c("0-18", "19-25", "26-35", "36-45", "46-60", "60+"),
      right = FALSE
    )
  )

tabla_edad <- homicidios %>%
  count(grupo_edad) %>%
  mutate(
    porcentaje = round(100 * n / sum(n), 2)
  )

tabla_edad
  grupo_edad    n porcentaje
1       0-18 1512       7.71
2      19-25 5503      28.07
3      26-35 6592      33.62
4      36-45 3421      17.45
5      46-60 1959       9.99
6        60+  620       3.16

2.7. Medidas descriptivas de la edad

Las medidas descriptivas muestran que la edad promedio es de aproximadamente 30.7 años, con una mediana de 28 años y una moda de 25 años, lo que confirma la concentración del fenómeno en adultos jóvenes. La desviación estándar indica una dispersión moderada de la edad, siendo mayor en mujeres que en hombres, lo que sugiere mayor variabilidad en este grupo. Los valores mínimo y máximo evidencian un rango amplio, lo que indica la presencia de casos en edades muy diversas.

En términos de forma, la asimetría positiva indica que la distribución está sesgada hacia la derecha, es decir, existe una mayor concentración de observaciones en edades bajas y una cola hacia edades más altas. La curtosis sugiere la presencia de valores extremos que influyen en la forma de la distribución.

library(dplyr)
library(e1071)
library(knitr)
library(kableExtra)

moda <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}

tabla_descriptiva <- homicidios %>%
  group_by(sexo) %>%
  summarise(
    n = n(),
    media = mean(edad),
    mediana = median(edad),
    moda = moda(edad),
    minimo = min(edad),
    q1 = quantile(edad, 0.25),
    q3 = quantile(edad, 0.75),
    maximo = max(edad),
    rango = maximo - minimo,
    sd = sd(edad),
    asimetria = skewness(edad),
    curtosis = kurtosis(edad),
    .groups = "drop"
  )

total <- homicidios %>%
  summarise(
    sexo = "Total",
    n = n(),
    media = mean(edad),
    mediana = median(edad),
    moda = moda(edad),
    minimo = min(edad),
    q1 = quantile(edad, 0.25),
    q3 = quantile(edad, 0.75),
    maximo = max(edad),
    rango = maximo - minimo,
    sd = sd(edad),
    asimetria = skewness(edad),
    curtosis = kurtosis(edad)
  )

tabla_final <- bind_rows(tabla_descriptiva, total)

tabla_final <- tabla_final %>%
  mutate(across(where(is.numeric), ~round(., 1))) %>%
  arrange(factor(sexo, levels = c("Hombre", "Mujer", "Total")))

tabla_final %>%
  rename(
    Sexo = sexo,
    N = n,
    Media = media,
    Mediana = mediana,
    Moda = moda,
    Mínimo = minimo,
    Q1 = q1,
    Q3 = q3,
    Máximo = maximo,
    Rango = rango,
    `Desv. Est.` = sd,
    Asimetría = asimetria,
    Curtosis = curtosis
  ) %>%
  kable(
    caption = "Tabla X. Medidas descriptivas de la edad de personas involucradas en homicidios en Medellín, por género",
    align = "c"
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE,
    position = "center"
  ) %>%
  row_spec(nrow(tabla_final), bold = TRUE)
Tabla X. Medidas descriptivas de la edad de personas involucradas en homicidios en Medellín, por género
Sexo N Media Mediana Moda Mínimo Q1 Q3 Máximo Rango Desv. Est. Asimetría Curtosis
Hombre 18097 30.6 28 25 1 22 37 94 93 11.8 1.2 1.7
Mujer 1509 32.4 29 25 1 21 40 99 98 15.9 1.1 1.3
Total 19607 30.7 28 25 1 22 37 99 98 12.2 1.2 1.9
None 1 53.0 53 53 53 53 53 53 0 NA NaN NaN

2.8. Análisis gráfico de la edad

El histograma confirma que la mayor concentración de casos se encuentra entre los 20 y 35 años, con una disminución progresiva a medida que aumenta la edad. La forma de la distribución es claramente asimétrica hacia la derecha.

El gráfico de cajas y bigotes permite identificar valores atípicos, especialmente en edades altas. Estos valores, aunque poco frecuentes, amplían la dispersión de la distribución y son coherentes con la asimetría positiva observada.

El gráfico de barras confirma que el fenómeno se concentra principalmente en los grupos de 19 a 35 años, con un máximo en el grupo de 26 a 35 años, lo que refuerza los resultados obtenidos en la tabla de distribución.

# Histograma de edad
hist(
  homicidios$edad,
  breaks = seq(0, 100, 5),
  col = "grey30",
  border = "white",
  main = "Distribución de la edad en homicidios",
  xlab = "Edad",
  ylab = "Frecuencia",
  las = 1
)

# Grafico de cajas de edad vs sexo
boxplot(
  edad ~ sexo,
  data = homicidios,
  col = c("lightblue", "pink"),
  main = "Edad por género",
  xlab = "Género",
  ylab = "Edad",
  boxwex = 0.5,
  las = 1
)

# Grafico de barras edades agrupadas
etiquetas <- paste0(tabla_edad$n, " (", tabla_edad$porcentaje, "%)")

bp <- barplot(
  tabla_edad$n,
  names.arg = tabla_edad$grupo_edad,
  col = "grey30",
  main = "Distribución por grupos de edad",
  xlab = "Grupo de edad",
  ylab = "Frecuencia",
  ylim = c(0, max(tabla_edad$n) * 1.15),
  las = 1
)

text(
  x = bp,
  y = tabla_edad$n,
  labels = etiquetas,
  pos = 3,
  cex = 0.8
)

2.9. Conclusiones

El análisis descriptivo de este ejercicio permite concluir que los homicidios en Medellín se concentran principalmente en hombres jóvenes, con una distribución de la edad claramente sesgada hacia la derecha. La mayor proporción de casos se presenta en edades entre los 19 y 35 años, lo que indica una fuerte asociación descriptiva del fenómeno con la población joven adulta. Aunque existen valores atípicos en edades altas, estos no representan la mayoría de los casos, sino que corresponden a situaciones aisladas dentre de una distribución predominantemente concentrada en edades bajas.

Ejercicio 3

3.1. Introducción

En este ejercicio se evalúa la relación entre la pobreza multidimensional y el riesgo de victimización por el conflicto armado en Colombia. Para ello, se integran dos bases de datos a nivel municipal y se realiza un análisis descriptivo que incluye gráficos de dispersión, cálculo de correlaciones y exploración de patrones territoriales. El objetivo es determinar si existe asociación entre ambas variables, así como la dirección de dicha relación y sus posibles limitaciones interpretativas.

3.2. Carga de librerias

En esta etapa se cargan las bases de datos y se explora su estructura. A partir de esta revisión se identifica que ambas bases contienen información a nivel municipal y que el código DANE permite realizar integración entre ellas.

# =========================================================
# 0. CONFIGURACIÓN INICIAL
# =========================================================

library(tidyverse)
library(janitor)
library(lubridate)
require(readxl)

# =========================================================
# 1. CARGA DE DATOS
# =========================================================
pobreza <- read_excel("basesdedatos/MPM_Colombia (1).xlsx") %>%
  clean_names()

victimizacion <- read_excel("basesdedatos/IRV_Colombia (1).xlsx") %>%
  clean_names()

# =========================================================
# 2. EXPLORACIÓN INICIAL
# =========================================================
glimpse(pobreza)
Rows: 1,122
Columns: 4
$ mpio_cnmbr <chr> "FLORENCIA", "ALBANIA", "BELÉN DE LOS ANDAQUÍES", "EL DONCE…
$ mpio_ccnct <chr> "18001", "18029", "18094", "18247", "18256", "18410", "1846…
$ dpto_cnmbr <chr> "CAQUETÁ", "CAQUETÁ", "CAQUETÁ", "CAQUETÁ", "CAQUETÁ", "CAQ…
$ mpm        <dbl> 29.6, 38.8, 50.0, 44.3, 45.5, 56.2, 64.6, 42.4, 48.7, 50.0,…
glimpse(victimizacion)
Rows: 1,123
Columns: 8
$ codigo_departamento   <chr> "05", "05", "05", "05", "05", "05", "05", "05", …
$ departamento          <chr> "Antioquia", "Antioquia", "Antioquia", "Antioqui…
$ direccion_territorial <chr> "DT Antioquia", "DT Antioquia", "DT Antioquia", …
$ pdet                  <chr> "No PDET", "No PDET", "No PDET", "No PDET", "No …
$ codigo_municipio      <chr> "05001", "05002", "05004", "05021", "05030", "05…
$ municipio             <chr> "Medellín", "Abejorral", "Abriaquí", "Alejandría…
$ estimado              <chr> "0.42671102999999999", "0.23529381999999999", "0…
$ cluster               <chr> "Medio", "Bajo", "Medio", "Bajo", "Medio Bajo", …

3.3. Limpieza e integración de las bases

En este bloque se realiza la limpieza y estandarización de las variables, asegurando consistencia en los códigos municipales y en el formato de las variables númericas. Posteriormente, se integran las bases de datos, obteniendo 1122 municipios, lo que indica un cruce prácticamente completo entre ambas fuentes

pobreza_limpia <- pobreza %>%
  mutate(
    codigo_municipio = as.character(mpio_ccnct),
    municipio_pobreza = str_to_title(mpio_cnmbr),
    departamento_pobreza = str_to_title(dpto_cnmbr),
    mpm = as.numeric(mpm)
  ) %>%
  select(
    codigo_municipio,
    municipio_pobreza,
    departamento_pobreza,
    mpm
  )

victimizacion_limpia <- victimizacion %>%
  mutate(
    codigo_municipio = as.character(codigo_municipio),
    municipio_victimizacion = str_to_title(municipio),
    departamento_victimizacion = str_to_title(departamento),
    irv = as.numeric(estimado),
    cluster = str_to_title(cluster),
    pdet = str_to_title(pdet)
  ) %>%
  select(
    codigo_municipio,
    municipio_victimizacion,
    departamento_victimizacion,
    pdet,
    cluster,
    irv
  )

# =========================================================
# 4. INTEGRACIÓN DE BASES
# =========================================================

base_mpm_irv <- pobreza_limpia %>%
  inner_join(victimizacion_limpia, by = "codigo_municipio")

# Validación del cruce
nrow(pobreza_limpia)
[1] 1122
nrow(victimizacion_limpia)
[1] 1123
nrow(base_mpm_irv)
[1] 1122
glimpse(base_mpm_irv)
Rows: 1,122
Columns: 9
$ codigo_municipio           <chr> "18001", "18029", "18094", "18247", "18256"…
$ municipio_pobreza          <chr> "Florencia", "Albania", "Belén De Los Andaq…
$ departamento_pobreza       <chr> "Caquetá", "Caquetá", "Caquetá", "Caquetá",…
$ mpm                        <dbl> 29.6, 38.8, 50.0, 44.3, 45.5, 56.2, 64.6, 4…
$ municipio_victimizacion    <chr> "Florencia", "Albania", "Belén De Los Andaq…
$ departamento_victimizacion <chr> "Caquetá", "Caquetá", "Caquetá", "Caquetá",…
$ pdet                       <chr> "Pdet Cuenca Del Caguán Y Piedemonte Caquet…
$ cluster                    <chr> "Medio", "Bajo", "Medio Bajo", "Medio", "Al…
$ irv                        <dbl> 0.4211969, 0.2097005, 0.2434362, 0.3573984,…

3.4. Analisis descriptivo general

El análisis descriptivo muestra una alta variabilidad territorial tanto en la pobreza multidimensional como en el índice de victimización. Al analizar los clusters de riesgo, se observa que los municipios con mayor nivel de victimización presentan también mayores niveles promedio de pobreza, evidenciando un patrón creciente entre ambas variables.

summary(base_mpm_irv$mpm)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   4.50   30.23   40.80   41.79   52.67   98.50 
summary(base_mpm_irv$irv)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.0000  0.2027  0.2656  0.3283  0.4212  1.0000 
# Tabla por cluster de riesgo
tabla_cluster <- base_mpm_irv %>%
  count(cluster) %>%
  mutate(
    porcentaje = round(100 * n / sum(n), 2)
  ) %>%
  arrange(desc(n))

tabla_cluster
# A tibble: 5 × 3
  cluster        n porcentaje
  <chr>      <int>      <dbl>
1 Bajo         462      41.2 
2 Medio Bajo   264      23.5 
3 Medio        180      16.0 
4 Medio Alto   141      12.6 
5 Alto          75       6.68
# Promedio de pobreza multidimensional por cluster
tabla_mpm_cluster <- base_mpm_irv %>%
  group_by(cluster) %>%
  summarise(
    n = n(),
    mpm_media = round(mean(mpm, na.rm = TRUE), 1),
    mpm_mediana = round(median(mpm, na.rm = TRUE), 1),
    irv_media = round(mean(irv, na.rm = TRUE), 3),
    irv_mediana = round(median(irv, na.rm = TRUE), 3),
    .groups = "drop"
  ) %>%
  arrange(desc(irv_media))

tabla_mpm_cluster
# A tibble: 5 × 6
  cluster        n mpm_media mpm_mediana irv_media irv_mediana
  <chr>      <int>     <dbl>       <dbl>     <dbl>       <dbl>
1 Alto          75      55.4        55.4     0.738       0.708
2 Medio Alto   141      50.4        48.7     0.544       0.545
3 Medio        180      44.4        43.2     0.402       0.396
4 Medio Bajo   264      40.8        39.5     0.279       0.274
5 Bajo         462      36.5        35.5     0.195       0.193

3.5. Correlación entre pobreza y victimización

El coeficiente de correlación de Pearson (0.34) y el de Spearman (0.35) indican la existencia de una relación positiva moderada entre la pobreza multidimensional y el riesgo de victimización. Ambos resultados son estadísticamente significativos, lo que sugiere que, en general, los territorios con mayores niveles de pobreza tienden a presentar mayores niveles de riesgo.

plot(
  base_mpm_irv$mpm,
  base_mpm_irv$irv,
  pch = 19,
  col = "grey40",
  xlab = "Pobreza multidimensional (%)",
  ylab = "Índice de riesgo de victimización",
  main = "Relación entre pobreza multidimensional e índice de victimización"
)

abline(
  lm(irv ~ mpm, data = base_mpm_irv),
  col = "red",
  lwd = 2
)

El gráfico de dispersión muestra una tendencia positiva entre ambas variables, aunque con una alta dispersión, lo que indica que la relación no es deterministica y que existen otros factores que influyen en el riesgo de victimización. Es así, que al incorporar los clusters, se observa que los municipios con mayor riesgo se concentran en niveles medios y altos de pobreza, lo que refuerza la asociación positiva identificada previamente.

plot(
  base_mpm_irv$mpm,
  base_mpm_irv$irv,
  pch = 19,
  col = as.numeric(as.factor(base_mpm_irv$cluster)),
  xlab = "Pobreza multidimensional (%)",
  ylab = "Índice de riesgo de victimización",
  main = "Pobreza multidimensional e IRV por cluster"
)

legend(
  "topleft",
  legend = levels(as.factor(base_mpm_irv$cluster)),
  col = 1:length(levels(as.factor(base_mpm_irv$cluster))),
  pch = 19,
  cex = 0.8
)

abline(
  lm(irv ~ mpm, data = base_mpm_irv),
  col = "black",
  lwd = 2
)

3.6. Identificación de patrones territoriales

El análisis de municipios extremos muestra que los territorios con mayor pobreza no necesariamente presentan los mayores niveles de victimización, lo que indica que la pobreza no es el único factor determinante. Por otro lado, los municipios con mayor riesgo de victimización se concentran en regiones históricamente afectadas por el conflicto armado, lo que evidencia la influencia de factores territoriales y geopolíticos adicionales.

# Municipios con mayor pobreza multidimensional
top_pobreza <- base_mpm_irv %>%
  arrange(desc(mpm)) %>%
  select(
    departamento_pobreza,
    municipio_pobreza,
    mpm,
    irv,
    cluster,
    pdet
  ) %>%
  head(10)

top_pobreza
# A tibble: 10 × 6
   departamento_pobreza municipio_pobreza   mpm   irv cluster    pdet   
   <chr>                <chr>             <dbl> <dbl> <chr>      <chr>  
 1 Guainía              Pana Pana          98.5 0.150 Bajo       No Pdet
 2 Vaupés               Pacoa              98.4 0.188 Bajo       No Pdet
 3 Vaupés               Papunahua          97.9 0.181 Bajo       No Pdet
 4 Amazonas             La Victoria        96.4 0.299 Medio Bajo No Pdet
 5 Guainía              Puerto Colombia    96.3 0.507 Medio Alto No Pdet
 6 Guainía              Morichal           95.7 0.182 Bajo       No Pdet
 7 Guainía              Mapiripana         95.5 0     Bajo       No Pdet
 8 Vaupés               Yavaraté           94.8 0.132 Bajo       No Pdet
 9 La Guajira           Uribia             92.2 0.307 Medio Bajo No Pdet
10 Vichada              Cumaribo           91.4 0.620 Medio Alto No Pdet
# Municipios con mayor índice de victimización
top_irv <- base_mpm_irv %>%
  arrange(desc(irv)) %>%
  select(
    departamento_victimizacion,
    municipio_victimizacion,
    mpm,
    irv,
    cluster,
    pdet
  ) %>%
  head(10)

top_irv
# A tibble: 10 × 6
   departamento_victimizacion municipio_victimizacion   mpm   irv cluster pdet  
   <chr>                      <chr>                   <dbl> <dbl> <chr>   <chr> 
 1 Cauca                      Argelia                  50.1 1     Alto    Pdet …
 2 Norte De Santander         Tibú                     57.6 0.990 Alto    Pdet …
 3 Norte De Santander         El Tarra                 71.2 0.932 Alto    Pdet …
 4 Norte De Santander         Teorama                  67.1 0.926 Alto    Pdet …
 5 Caquetá                    Puerto Rico              54.3 0.911 Alto    Pdet …
 6 Nariño                     San Andrés De Tumaco     53.7 0.908 Alto    Pdet …
 7 Antioquia                  Anorí                    53.3 0.883 Alto    Pdet …
 8 Chocó                      Sipí                     69.7 0.852 Alto    Pdet …
 9 Chocó                      San José Del Palmar      59.1 0.844 Alto    No Pd…
10 Antioquia                  Valdivia                 59.3 0.841 Alto    Pdet …

3.7. Conclusiones

Los resultados permiten afirmar que existe una asociación positiva entre la pobreza multidimensional y el riesgo de victimización, lo que respalda parcialmente la afirmación planteada. Sin embargo, la magnitud moderada de la correlación y la dispersión observada indican que esta relación no es absoluta.

La relación identificada es positiva, ya que a mayores niveles de pobreza se observa un mayor riesgo de victimización. No obstante, la presencia de múltiples excepciones evidencia que otros factores estructurales influyen en esta dinámica.

Finalmente, es importante destacar que este análisis es de carácter descriptivo, por lo que no permite establecer relaciones causales. La correlación observada no implica causalidad, sino una asociación que debe interpretarse con cautela dentro del contexto territorial del conflicto armado en Colombia.

Ejercicio 6

6.1. Introducción

En este ejercicio se realiza una caracterización territorial

6.2. Carga y exploración de los datos

En este bloque se cargan las cuatro fuentes de información: el índice de riesgo de victimización, las subregiones de Antioquia, la población municipal y la información de cultivos de coca. La exploración inicial permite identificar las variables clave y los códigos territoriales necesarios para la integración.

library(tidyverse)
library(janitor)
library(lubridate)
library(readxl)

victimizacion <- read_excel("basesdedatos/IRV_Colombia (1).xlsx") %>%
  clean_names()

subregiones <- read_excel("basesdedatos/Subregiones_Antioquia (1).xlsx") %>%
  clean_names()

poblacion <- read_excel("basesdedatos/Poblacion_Colombia.xlsx") %>%
  clean_names()

coca <- read.csv("basesdedatos/Coca_Colombia.csv") %>%
  clean_names()

glimpse(victimizacion)
Rows: 1,123
Columns: 8
$ codigo_departamento   <chr> "05", "05", "05", "05", "05", "05", "05", "05", …
$ departamento          <chr> "Antioquia", "Antioquia", "Antioquia", "Antioqui…
$ direccion_territorial <chr> "DT Antioquia", "DT Antioquia", "DT Antioquia", …
$ pdet                  <chr> "No PDET", "No PDET", "No PDET", "No PDET", "No …
$ codigo_municipio      <chr> "05001", "05002", "05004", "05021", "05030", "05…
$ municipio             <chr> "Medellín", "Abejorral", "Abriaquí", "Alejandría…
$ estimado              <chr> "0.42671102999999999", "0.23529381999999999", "0…
$ cluster               <chr> "Medio", "Bajo", "Medio", "Bajo", "Medio Bajo", …
glimpse(subregiones)
Rows: 125
Columns: 4
$ cod        <chr> "05001", "05002", "05004", "05021", "05030", "05031", "0503…
$ mpio_cnmbr <chr> "MEDELLÍN", "ABEJORRAL", "ABRIAQUÍ", "ALEJANDRÍA", "AMAGÁ",…
$ subregion  <chr> "Valle de Aburrá", "Oriente", "Occidente", "Oriente", "Suro…
$ var_zomac  <chr> "NO ZOMAC", "ZOMAC", "ZOMAC", "ZOMAC", "NO ZOMAC", "ZOMAC",…
glimpse(poblacion)
Rows: 1,123
Columns: 6
$ cod_dept     <chr> "05", "05", "05", "05", "05", "05", "05", "05", "05", "05…
$ departamento <chr> "Antioquia", "Antioquia", "Antioquia", "Antioquia", "Anti…
$ cod_mun      <chr> "05001", "05002", "05004", "05021", "05030", "05031", "05…
$ municipio    <chr> "Medellín", "Abejorral", "Abriaquí", "Alejandría", "Amagá…
$ ano          <dbl> 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 2026, 202…
$ poblacion    <dbl> 2526795, 21126, 2804, 5347, 33092, 29394, 45436, 6214, 12…
glimpse(coca)
Rows: 319
Columns: 27
$ coddepto     <int> 91, 91, 91, 91, 91, 91, 91, 91, 5, 5, 5, 5, 5, 5, 5, 5, 5…
$ departamento <chr> "AMAZONAS", "AMAZONAS", "AMAZONAS", "AMAZONAS", "AMAZONAS…
$ codmpio      <int> 91263, 91405, 91407, 91430, 91460, 91530, 91536, 91669, 5…
$ municipio    <chr> "EL ENCANTO (Cor. Departamental)", "LA CHORRERA (Cor. Dep…
$ x2001        <chr> "191.8", "65.0", "- 0", "- 0", "6.0", "212.3", "- 0", "33…
$ x2002        <chr> "264.0", "236.0", "- 0", "- 0", "43.0", "195.0", "1.0", "…
$ x2003        <chr> "164.0", "209.0", "- 0", "- 0", "36.2", "173.0", "6.4", "…
$ x2004        <chr> "270.0", "271.0", "- 0", "- 0", "30.0", "174.0", "- 0", "…
$ x2005        <chr> "382.0", "257.0", "- 0", "- 0", "12.0", "210.0", "- 0", "…
$ x2006        <chr> "233.0", "223.0", "- 0", "- 0", "4.0", "202.0", "- 0", "3…
$ x2007        <chr> "186.0", "132.0", "- 0", "- 0", "9.0", "165.0", "- 0", "4…
$ x2008        <chr> "349.0", "349.0", "- 0", "- 0", "2.0", "95.0", "- 0", "41…
$ x2009        <chr> "109.0", "81.0", "7.0", "2.0", "4.0", "53.0", "- 0", "22.…
$ x2010        <chr> "81.0", "113.0", "12.0", "10.0", "15.0", "73.0", "- 0", "…
$ x2011        <chr> "35.0", "36.0", "- 0", "- 0", "- 0", "44.0", "- 0", "7.0"…
$ x2012        <chr> "16.0", "22.0", "1.0", "- 0", "5.0", "54.0", "- 0", "- 0"…
$ x2013        <chr> "8.0", "25.0", "- 0", "- 0", "- 0", "76.0", "- 0", "1.0",…
$ x2014        <chr> "20.0", "51.0", "- 0", "- 0", "- 0", "102.0", "- 0", "- 0…
$ x2015        <chr> "11.8", "13.6", "- 0", "- 0", "- 0", "85.8", "- 0", "- 0"…
$ x2016        <chr> "12.7", "14.1", "- 0", "- 0", "- 0", "140.0", "- 0", "- 0…
$ x2017        <chr> "8.0", "18.2", "- 0", "- 0", "- 0", "139.4", "- 0", "- 0"…
$ x2018        <chr> "4.1", "6.0", "- 0", "- 0", "- 0", "111.5", "- 0", "- 0",…
$ x2019        <chr> "2.5", "3.2", "- 0", "- 0", "- 0", "119.0", "- 0", "- 0",…
$ x2020        <chr> "0", "0", "0", "0", "0", "61,5", "0", "0", "209,8", "1.08…
$ x2021        <chr> "- 0", "- 0", "- 0", "- 0", "- 0", "72.8", "- 0", "- 0", …
$ x2022        <chr> "- 0", "- 0", "- 0", "- 0", "- 0", "103.4", "- 0", "- 0",…
$ x2023        <chr> "- 0", "- 0", "- 0", "- 0", "- 0", "66.0", "- 0", "- 0", …

6.3. Identificación de municipios PDET en Antioquia

En este bloque se filtran los municipios del departamento de Antioquia y se construye una variable indicadora ('pdet_flag') para identificar aquellos municipios que cuentan con PDET. Como resultado, se obtienen 125 municipios, lo que corresponde a la totalidad de municipios del departamento, en la que se identifican que 24 (19.2%) de los 125 municipios son PDET.

victimizacion_ant <- victimizacion %>%
  filter(departamento == "Antioquia") %>%
  mutate(
    codigo_municipio = as.character(codigo_municipio),
    irv = as.numeric(estimado),
    pdet_flag = ifelse(pdet == "No PDET", 0, 1)
  ) %>%
  select(codigo_municipio, municipio, pdet, pdet_flag, irv, cluster)

head(victimizacion_ant)
# A tibble: 6 × 6
  codigo_municipio municipio  pdet                       pdet_flag   irv cluster
  <chr>            <chr>      <chr>                          <dbl> <dbl> <chr>  
1 05001            Medellín   No PDET                            0 0.427 Medio  
2 05002            Abejorral  No PDET                            0 0.235 Bajo   
3 05004            Abriaquí   No PDET                            0 0.348 Medio  
4 05021            Alejandría No PDET                            0 0.236 Bajo   
5 05030            Amagá      No PDET                            0 0.310 Medio …
6 05031            Amalfi     PDET Bajo Cauca-Nordeste …         1 0.390 Medio  
require(summarytools)
freq(victimizacion_ant$pdet_flag)
Frequencies  
victimizacion_ant$pdet_flag  
Type: Numeric  

              Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
----------- ------ --------- -------------- --------- --------------
          0    101     80.80          80.80     80.80          80.80
          1     24     19.20         100.00     19.20         100.00
       <NA>      0                               0.00         100.00
      Total    125    100.00         100.00    100.00         100.00

6.4. Integración con subregiones y población

En este bloque se integran subregiones de Antioquia y la población municipal a la base principal. Esto permite contar con una base consolidada que contiene información territorial, demográfica y de riesgo de victimización para cada municipio.

subregiones_ant <- subregiones %>%
  mutate(codigo_municipio = as.character(cod)) %>%
  select(codigo_municipio, subregion)

poblacion_ant <- poblacion %>%
  filter(departamento == "Antioquia") %>%
  mutate(codigo_municipio = as.character(cod_mun)) %>%
  select(codigo_municipio, poblacion)

base_antioquia <- victimizacion_ant %>%
  left_join(subregiones_ant, by = "codigo_municipio") %>%
  left_join(poblacion_ant, by = "codigo_municipio")

glimpse(base_antioquia)
Rows: 125
Columns: 8
$ codigo_municipio <chr> "05001", "05002", "05004", "05021", "05030", "05031",…
$ municipio        <chr> "Medellín", "Abejorral", "Abriaquí", "Alejandría", "A…
$ pdet             <chr> "No PDET", "No PDET", "No PDET", "No PDET", "No PDET"…
$ pdet_flag        <dbl> 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0,…
$ irv              <dbl> 0.4267110, 0.2352938, 0.3477542, 0.2362749, 0.3100314…
$ cluster          <chr> "Medio", "Bajo", "Medio", "Bajo", "Medio Bajo", "Medi…
$ subregion        <chr> "Valle de Aburrá", "Oriente", "Occidente", "Oriente",…
$ poblacion        <dbl> 2526795, 21126, 2804, 5347, 33092, 29394, 45436, 6214…

6.5. Incorporación de cultivos de coca (2023)

En este bloque se transforma la variable de hectáreas de coca para el año 2023 a formato numérico y se integra a la base consolidada. Esto permite identificar la presencia de cultivos ilícitos a nivel municipaldentro del departamento.

coca_ant <- coca %>%
  mutate(
    codigo_municipio = str_pad(codmpio, width = 5, pad = "0"),
    coca_2023 = as.numeric(str_replace_all(x2023, ",", "."))
  ) %>%
  filter(substr(codigo_municipio, 1, 2) == "05") %>%
  select(codigo_municipio, coca_2023)

base_antioquia <- base_antioquia %>%
  left_join(coca_ant, by = "codigo_municipio")

6.6. Análisis por subregión

Este resumen permite responder directamente a los indicadores solicitados en el ejercicio para cada subregión del departamento.

resumen_subregion <- base_antioquia %>%
  group_by(subregion) %>%
  summarise(
    municipios = n(),
    poblacion_total = sum(poblacion, na.rm = TRUE),
    municipios_pdet = sum(pdet_flag, na.rm = TRUE),
    prop_pdet = round(municipios_pdet / municipios, 2),
    coca_presente = any(coca_2023 > 0, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  arrange(desc(municipios_pdet))

resumen_subregion
# A tibble: 9 × 6
  subregion   municipios poblacion_total municipios_pdet prop_pdet coca_presente
  <chr>            <int>           <dbl>           <dbl>     <dbl> <lgl>        
1 Urabá               11          522249               9      0.82 TRUE         
2 Bajo Cauca           6          265907               6      1    TRUE         
3 Nordeste            10          217500               4      0.4  TRUE         
4 Norte               17          256574               3      0.18 TRUE         
5 Magdalena …          6          110971               1      0.17 TRUE         
6 Occidente           19          227034               1      0.05 TRUE         
7 Oriente             23          763096               0      0    TRUE         
8 Suroeste            23          388398               0      0    FALSE        
9 Valle de A…         10         4212261               0      0    FALSE        

6.7. Resultados

Los resultados muestran que la presencia de municipios PDET en Antioquia no es homogénea, sino que se concentra en ciertas subregiones específicas. En particular, Urabá presenta 9 municipios PDET, lo que representa el 82% de sus municipios, mientras que Bajo Cauca presenta 6 municipios, equivalentes al 100% de su subregión. Estas dos subregiones concentran la mayor proporción de municipios con PDET.

Por su parte, el Nordeste presenta 4 municipios PDET (40%), el Norte 3 municipios (18%) y el Magdalena Medio 1 municipio (17%). En contraste, subregiones como Oriente, Suroeste y Valle de Aburrá no presentan municipios con esta clasificación.

En términos de población, las subregiones con mayor número de municipios PDET no necesariamente son las más pobladas, lo que indica que estos programas están focalizados en territorios específicos más que en grandes centros urbanos. De hecho, el Valle de Aburrá, que concentra la mayor población del departamento, no presenta municipios PDET.

En relación con la presencia de cultivos de coca, se observa que la mayoría de las subregiones cuentan con al menos un municipio con cultivos en 2023, especialmente aquellas con mayor proporción de municipios PDET, como Urabá, Bajo Cauca y Nordeste. En contraste, el Suroeste y el Valle de Aburrá no presentan evidencia de cultivos de coca en este periodo.

6.7. Preguntas del ejercicio

En cuanto al número de municipios PDET por subregión, se identifica que Urabá y Bajo Cauca concentran la mayor cantidad, con 9 y 6 municipios respectivamente, seguidos por el Nordeste y el Norte con menor participación.

Respecto a la población total de estos municipios, se observa que las subregiones con mayor número de municipios PDET no corresponden a las más pobladas del departamento, lo que evidencia una focalización territorial de estos programas hacia zonas con condiciones específicas de vulnerabilidad.

En relación con la presencia de cultivos de coca, se encuentra que la mayoría de las subregiones presentan al menos un municipio con cultivos en 2023, lo que indica una amplia distribución territorial de este fenómeno dentro del departamento.

6.8. Análisis territorial

El análisis permite identificar un patrón territorial claro en el que los municipios con PDET se concentran en subregiones que también presentan presencia de cultivos de coca y mayores niveles de riesgo de victimización. Este patrón es especialmente evidente en Urabá, Bajo Cauca y Nordeste, territorios históricamente afectados por el conflicto armado y por economías ilícitas.

Por el contrario, subregiones como el Valle de Aburrá, caracterizadas por mayor urbanización y desarrollo económico, no presentan municipios PDET ni cultivos de coca, lo que evidencia una diferenciación territorial marcada dentro del departamento.

6.9. Implicación para la política pública

Los resultados sugieren que los programas PDET están correctamente focalizados en territorios con mayores niveles de vulnerabilidad, donde coinciden factores como el riesgo de victimización y la presencia de economías ilícitas. Esto refuerza la importancia de intervenciones integrales que aborden simultáneamente aspectos de seguridad, desarrollo económico y fortalecimiento institucional.

Asimismo, la concentración territorial de estos fenómenos implica que las políticas públicas deben tener un enfoque diferencial por subregión, reconociendo las particularidades de cada territorio.

6.10. Conclusión

El análisis evidencia que los municipios PDET en Antioquia se concentran en subregiones específicas que también presentan mayores niveles de riesgo de victimización y presencia de cultivos de coca. Este patrón territorial refleja la complejidad del conflicto armado y resalta la importancia de una planificación territorial basada en evidencia, que permita orientar de manera eficiente los recursos y las intervenciones del Estado.