Taller Estadística Descriptiva - Manuela Gamboa

Ejercicio 1

Dinámica temporal y crecimiento

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)
library(tinytex)

delitos <- read.csv("D:/UNIVERSIDAD/SEXTO SEMESTRE/Bases de datos/Delitos_Sexuales_Antioquia (1).csv") %>% clean_names()
minas <- read.csv("D:/UNIVERSIDAD/SEXTO SEMESTRE/Bases de datos/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 = "purple", 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 = "red", 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.

Este aumento no debe interpretarse solo como un incremento en los casos de delitos sexuales, ya que esto sería insuficiente , por ende es importante analizar este resultado desde el contexto social y político que atravesaba el país y que tuvieron repercusiones a nivel departamental. Como lo fue la implementación de la Ley 1719 de 2014, y el proceso de paz con las FARC, los cuales contribuyeron a fortalecer los mecanismos de denuncia y atención a las víctimas, reduciendo parcialmente el subregistro histórico de este tipo de delitos.

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%). En este periodo de tiempo se fortaleció el narcotráfico y se expandio y consolido el paramilitarismo como una estructuta a gran escala. En este sentido , la intensificación del conflicto armado y la disputa por corredores estratégicos, incentivo indirectamente el uso de minas por parte de otros actores armados, como las FARC.

  • Fase de alta intensidad (2005 - 2012): Durante este periodo se mantienen niveles altos, alcanzando el máximo en 2012 con 3448 eventos. Algunos estudios mencionan que, el uso de este tipo de artefactos se intesificó particurlamente durante la implementación de la Política de Seguridad Democrática, del gobierno de Alvaro Uribe, en la medida, en que estos actores armados encontraron en las minas antipersonal un mecanismo eficaz para contener la ofensiva militar del Estado y proteger territorios estratégicos, entre ellos aquellos con alta presencia del cultivos ilícitos.

  • 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. Esta disminución coincide con el inicio y desarrollo del Proceso de Paz con las FARC, así como con la firma del Acuerdo de Paz en 2016.

Finalmente, entre 2022 y 2023 se observa un repunte del fenómeno, con crecimientos del 21% y 54%, respectivamente, lo que sugiere una reactivación del conflicto armado o cambios en las condiciones del contexto. Según la Defensoría del Pueblo, Colombia sigue siendo uno de los países con más víctimas de minas antipersonal en el mundo y a pesar de los esfuerzos de desminado humanitario liderados por el Gobierno o organizaciones internacionales, el riesgo sigue y ha aumentado debido a disputas territoriales entre grupos armados ilegales, así como por las desidencias de las FARC.

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

Estructura por género y análisis descriptivo

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(janitor)
library(lubridate)

homicidios <- read.csv("D:/UNIVERSIDAD/SEXTO SEMESTRE/Bases de datos/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

Asociación entre pobreza y victimización

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("D:/UNIVERSIDAD/SEXTO SEMESTRE/Bases de datos/MPM_Colombia (1).xlsx") %>%
  clean_names()

victimizacion <- read_excel("D:/UNIVERSIDAD/SEXTO SEMESTRE/Bases de datos/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", …
#La función glimpse() pertenece al paquete dplyr (o tibble) y se usa para obtener una vista resumida de un data frame
#Es una alternativa más compacta y legible que str() cuando se explora una base de datos

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 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
# La función nrow() en R se usa para obtener el número de filas (observaciones) de un objeto
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 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.

Sin embargo, al analizar la correlación dentro de cada categoría de riesgo o clusters (Alto, Bajo, Medio, Medio Alto, Medio Bajo) los coeficientes fueron cercanos a cero, es decir que dentro de las categorías la pobreza no es un factor determinante en nivelas altos de riesgo de victimización.

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
)

# Correlación
cor.test(base_mpm_irv$mpm, base_mpm_irv$irv, method = "pearson")

    Pearson's product-moment correlation

data:  base_mpm_irv$mpm and base_mpm_irv$irv
t = 12.138, df = 1120, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.2881738 0.3916573
sample estimates:
     cor 
0.340948 
# Correlación por cluster
by(base_mpm_irv[, c("mpm", "irv")], base_mpm_irv$cluster, cor, use = "complete.obs")
base_mpm_irv$cluster: Alto
          mpm       irv
mpm 1.0000000 0.1269872
irv 0.1269872 1.0000000
------------------------------------------------------------ 
base_mpm_irv$cluster: Bajo
           mpm        irv
mpm 1.00000000 0.03097035
irv 0.03097035 1.00000000
------------------------------------------------------------ 
base_mpm_irv$cluster: Medio
           mpm        irv
mpm 1.00000000 0.06621246
irv 0.06621246 1.00000000
------------------------------------------------------------ 
base_mpm_irv$cluster: Medio Alto
           mpm        irv
mpm 1.00000000 0.08063679
irv 0.08063679 1.00000000
------------------------------------------------------------ 
base_mpm_irv$cluster: Medio Bajo
           mpm        irv
mpm 1.00000000 0.05396205
irv 0.05396205 1.00000000
base_pdet <- base_mpm_irv %>%
  filter(pdet != "No Pdet")

# Verificar cuántos municipios PDET quedan
nrow(base_pdet)
[1] 170
# Gráfico de dispersión
ggplot(base_pdet, aes(x = mpm, y = irv)) +
  geom_point(alpha = 0.6, color = "steelblue", size = 2) +
  geom_smooth(method = "lm", se = TRUE, color = "red", fill = "gray90") +
  labs(
    title = "Relación entre pobreza (MPM) y victimización (IRV) en municipios PDET",
    x = "Índice de Pobreza Multidimensional (MPM)",
    y = "Tasa de Victimización (IRV)",
  ) +
  theme_minimal(base_size = 12) +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"))

cor(base_pdet$mpm, base_pdet$irv, method = "pearson")
[1] 0.1325813

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 adicionales.

Lo anterior , se respalda con los reultados de correlación de los municipios PDET con el MPM y el IRV ya que la correlación cae a 0.13, esto ocurre principalmente porque los PDET son un grupo más homegéneo de pobreza y conflicto, entonces al ver menos variablidad entre ellos , la relación caé. Lo que indica que, en territorios ya de por si identificados con altos niveles de pobreza y golpeados por el conflicto armado, la pobreza en si misma no incrementa el IRV, lo que da paso a que otros factores como la presencia de economías ilicítas o la capacidad institucional , sean variables que determinen el riesgo de victimización dentro de los PDET.

top_pobreza <- base_mpm_irv %>%
  arrange(desc(mpm)) %>%
  select(
    departamento_pobreza,
    municipio_pobreza,
    mpm,
    irv,
    cluster,
    pdet
  ) %>%
  head(10)

top_pobreza

# 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

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 4

Ponderación poblacional y análisis territorial

4.1. Introducción

Ejercicio 5

Asociación entre condiciones territoriales y comportamiento electoral

5.1. Introducción

En este ejercicio se analiza la relación entre las condiciones territoriales de los municipios colombianos y el comportamiento electoral en la primera vuelta presidencial de 2022. Especificamente, se evalúa si dos indicadores de vulnerabilidad territorial, el primero, el índice de Pobreza Multidimensional (MPM) y el segundo, el índice de Riesgo de Victimización del conflicto armado (IRV), se asocian positiva o negativamente con la votación obtenida por los candidatos: Gustavo Petro, Federico Gutiérrez y Rodolfo Hernández. Para ello, se integran tres bases de datos, se calculan los porcentajes de votación y se realiza un análisis descriptivo mediante gráficos de dispersión, coeficientes de correlación y la identificación de patrones, lo que permitirá interpretar si la pobreza y la victimización explican diferencias en el respaldo electoral de cada candidato.

5.2. Carga, unión y exploración de los datos

library(readxl)

setwd("C:/Users/Usuario/OneDrive/Escritorio/Taller punto 5")

IRV <- read_excel("IRV_Colombia.xlsx")
MPM <- read_excel("MPM_Colombia.xlsx")
Presidencia_1V <- read_excel("Presidencia_1V.xlsx")

IRV<-IRV %>% 
  rename(codmun= `Código Municipio`)

MPM<-MPM %>% 
  rename(codmun=MPIO_CCNCT)
MPM<-MPM %>% 
  rename(Municipio= MPIO_CNMBR)

Presidencia_1V<- Presidencia_1V %>% 
  rename(Municipio= MUNNOMBRE)

#Unir bases

base_unida <- MPM %>% 
  left_join(IRV, by="codmun")


base_unida <- base_unida %>%
  mutate(Municipio = Municipio.x) %>%         
  select(-Municipio.x, -Municipio.y)     
 
base_final<-base_unida %>% 
  left_join(Presidencia_1V, by="codmun")

base_final <- base_final %>%
  mutate(Municipio = Municipio.x) %>%         
  select(-Municipio.x, -Municipio.y)   
 names(base_final)
[1] "codmun"    "MPM"       "PDET"      "Estimado"  "Cluster"   "CANNOMBRE"
[7] "Votos"     "Municipio"
 #Porcentaje sobre el total de votos emitidos (todos los votos)
 base_final <- base_final %>%
   group_by(codmun) %>%
   mutate(total_votos_mun = sum(Votos, na.rm = TRUE),
          pct_votos = (Votos / total_votos_mun) * 100) %>%
   ungroup()
 
 library(ggplot2)

 base_final <- base_final %>%
   group_by(codmun) %>%
   mutate(
     total_votos_validos = sum(Votos[!CANNOMBRE %in% c("VOTOS NULOS", "VOTOS NO MARCADOS")], na.rm = TRUE),
     pct_voto_validos = ifelse(total_votos_validos > 0, (Votos / total_votos_validos) * 100, 0)
   ) %>%
   ungroup()
 #total_votos_mun= Total de votos emitidos en ese municipio, sumando candidatos
 # votos nulos, en blanco y no marcados
 #pct_votos= Porcentaje que representa el candidato, o tipo de voto respecto
 #al total
 #pct_voto_validos= Representa el porcentaje de voto de cada candidato sobre 
 # el total de votos válidos, excluyendo nulos y no marcados

5.3. Distribución de votos por candidato en los municipios de Colombia

En la base_final esta la tabla que presenta la distibucción de votos por candidato y por municipio, incorporando tanto el número absoluto de votos como distintos indicadores porcentuales que permiten analizar el comportmaiento electoral.

En el ejemplo de Amalfi, en términos absolutos, el total de votos emitidos en el municipio es de 6176, mientras que los votos válidos correponden a 6054, lo que indica una baja proporción de votos no válidos. Al observar la distribución del voto se evidencia que Federico Gutiérrez concentra la mayor proporción con 2630 votos lo que corresponde al 43% de los votos válidos. En segundo lugar se ubica Rodolfo Hernández, con 1923 que equivale al 31% de los votos válidos, seguido por Gustavo Petro, quien obtiene 889 votos con el 14% de los votos válidos.

5.4. Asociación entre MPM, el IRV y los votos por Petro, Rofofo y Federico

 #Petro
 
 library(dplyr)
 
 petro_mun <- base_final %>%
   filter(CANNOMBRE == "GUSTAVO PETRO") %>%
   select(codmun, Municipio, MPM, Estimado, Cluster, 
          total_votos_mun, pct_votos, total_votos_validos, pct_voto_validos) %>%
   rename(irv = Estimado) 
 
 library(ggplot2)
 
 # Relación con pobreza multidimensional (MPM)
 
 ggplot(petro_mun, aes(x = MPM, y = pct_voto_validos)) +
   geom_point(alpha = 0.6, color= "magenta") +
   geom_smooth(method = "lm", se = FALSE, color = "red") +
   labs(title = "Asociación entre pobreza multidimensional y voto por Petro",
        x = "Índice de Pobreza Multidimensional (MPM)", 
        y = "% de votos válidos a Gustavo Petro") +
   theme_minimal()

 cor(petro_mun$MPM, petro_mun$pct_voto_validos, use = "complete.obs")
[1] 0.2872245
 #Relación con Indíce de riesco de victimización (irv)
 
 ggplot(petro_mun, aes(x = irv, y = pct_voto_validos)) +
   geom_point(alpha = 0.6, color="navy") +
   geom_smooth(method = "lm", se = FALSE, color = "red") +
   labs(title = "Asociación entre victimización (IRV) y voto por Petro",
        x = "Índice de Riesgo de Victimización (IRV)", 
        y = "% de votos válidos a Gustavo Petro") +
   theme_minimal()

Para el caso de Petro la relación con la pobreza multidimencional, es de 0.28, es una relación positiva aunque débil. Por otro lado, su relación con el índice de victimización es positiva pero moderada con 0.39. Lo que indica que, a municipios con mayor pobreza y mayores niveles de victimización, mayor favorabilidad a Petro.

Al contrario de Petro, Rodolfo muestra correlaciones negativas débiles con ambas variables, para el MPM es -0.24 y para el IRV es -0.26, lo que sugiere que su apoyo al menos para esta primera vuelta presidencial, se concetró principalmente en municipios con menores indices de pobreza y menores afectaciones por el conflicto.

Federico por su parte, no presenta una relación significativa en ninguno de los dos factores. En la pobreza, arroja una correlación de -0025 casi inexistente muy cercana a cero, más una asociación muy débil con la victimización de -0.19, lo que indica que sus resultados o sus votos son prácticamente independientes de estos dos factores territoriales.

5.5. Proporción de votos municipios PDET por candidato

 #Base agrupada solo por PDET 
 
 proporcion_por_tipo <- base_final %>%
   filter(CANNOMBRE %in% c("GUSTAVO PETRO", "FEDERICO GUTIÉRREZ", "RODOLFO HERNÁNDEZ")) %>%
   group_by(PDET, CANNOMBRE) %>%
   summarise(votos = sum(Votos, na.rm = TRUE), .groups = "drop") %>%
   group_by(PDET) %>%
   mutate(porcentaje = votos / sum(votos) * 100)
 

 proporcion_limpia <- proporcion_por_tipo %>%
   group_by(CANNOMBRE) %>%
   summarise(total = sum(porcentaje, na.rm = TRUE)) %>%
   mutate(porcentaje = total / sum(total) * 100)

 #Gráfico de barras Votos en municipios PDET 

 ggplot(proporcion_limpia, aes(x = CANNOMBRE, y = porcentaje, fill = CANNOMBRE)) +
   geom_col() +
   geom_text(aes(label = paste0(round(porcentaje,1), "%")), vjust = -0.5) +
   theme_minimal() +
   labs(title = "Proporción de votos en municipios PDET",
        x = "Candidato",
        y = "Porcentaje") 

Los municipios PDET, fueron establecidos tras el Acuerdo de Paz de 2016, firmado en la Habana-Cuba, y fueron proyectados a 15 años con una vigencia hasta el año 2037.

En colombia existen 170 municipios PDET, distribuidos en distintas regiones del país. Estos municipios fueron priorizados por ser victímas del conflicto armado, por presentar altos niveles de pobreza, por su debilidad institucional, y por presencia de cultivos ilícitos.

En este sentido, y entendiendo el contexto de los municpios PDET, el gráfico de barras confirma la correlación positiva observada entre los votos por Petro y el MPM y el IRV. En concreto, se observa que el 52% de los votos válidos en los municipios PDET fueron para Petro, lo que evidencia un respaldo mayoritario en estos territorios caracterizadas por su alta vulnerabilidad.

Ejercicio 6

Caracterización territorial de municipios PDET en Antioquia

6.1. Introducción

En este ejercicio se realiza una caracterización territorial de los municpios PDET en el departamento de Antioquia, se identifique la población total y la presencia de cultivos de coca entre otros datos.

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("D:/UNIVERSIDAD/SEXTO SEMESTRE/Bases de datos/IRV_Colombia (1).xlsx") %>%
  clean_names()

subregiones <- read_excel("D:/UNIVERSIDAD/SEXTO SEMESTRE/Bases de datos/Subregiones_Antioquia (1).xlsx") %>%
  clean_names()

poblacion <- read_excel("D:/UNIVERSIDAD/SEXTO SEMESTRE/Bases de datos/Poblacion_Colombia.xlsx") %>%
  clean_names()

coca <- read.csv("D:/UNIVERSIDAD/SEXTO SEMESTRE/Bases de datos/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 demuestra nuevamente que estos programas están focalizados en territorios específicos, tal como indica el Acuerdo de Paz , en el Punto 1 sobre reforma Agraria, en donde se consolidó los PDET como una estrategia fundamental para garantizar el desarrollo de los pueblos que han sido historicamente abandonados por el Estado

Por eso, el Valle de Aburrá, que concentra la mayor población del departamento, no presenta municipios PDET, esto pasa, debido a que esta conformado por municipios con mejores condiciones socioeconomicas y se caracterizan por ser mayoritariamente urbanos, y por el contrario los municipios PDET de Antioquia son principalemnte rurales , con vocación agrícola, mínera, ganadera, y con mayores niveles de población campesina víctima del conflicto armado.

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, lo que evidencia una diferenciación territorial marcada dentro del departamento.

6.8. 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.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.

Ahora bien, Los municpios PDET se consolidarón oficialmente en 2017 , es decir que ya llevan 9 años de gestión e implementación, sin embargo los resultados siguen siendo muy desfavorables para estos territorios. Se crearon con el compromiso de cerrar brechas de desigualdades, pero esas brechas aún persisten y parecen perdurables a pesar de los compromisos por reducirlas.En este sentido, es fundamental que las políticas públicas estén integradas y orientadas a mejorar la calidad de vida en estos territorios, las cuales aporten a la transición hacia economías alternativas que promuevan la armonía entre el desarrollo rural y la sostenibilidad ambiental.

Para que los programas de los PDET avancen adecuadamente, es indispensable fortalecer la cooperación y coordinación entre los diferentes actores responsables de su implementación y de la asignación de recursos. Esto incluye a las entidades territoriales como, alcaldías y gobernaciones, así como a las entidades del nivel nacional, entre ellas los ministerios, los departamentos administrativos y el Departamento Nacional de Planeación.

Asimismo, resulta fundamental promover una participación activa de las comunidades, mediante espacios como mesas territoriales y mecanismos de veeduría ciudadana que permitan realizar un seguimiento constante a los avances, garantizando transparencia, pertinencia y sostenibilidad en la implementación de estos programas.

Por último, aunque todo lo anterior resulta fundamental, ningún esfuerzo será suficiente si no se avanza de manera decidida en la garantía de la seguridad y la construcción de paz en estos territorios, donde la vida cotidiana no debería implicar un riesgo constante, ni estar marcada por amenazas de grupos al margen de la ley.

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.