# Librerias

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.6
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.1     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.2.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)
library(ggplot2)
library(tidyr)
library(scales)
## 
## Adjuntando el paquete: 'scales'
## 
## The following object is masked from 'package:purrr':
## 
##     discard
## 
## The following object is masked from 'package:readr':
## 
##     col_factor
library(knitr)
install.packages("tidytext", repos = "https://cloud.r-project.org")
## Installing package into 'C:/Users/User/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'tidytext' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\User\AppData\Local\Temp\RtmpgngNmj\downloaded_packages
library(tidytext)

library(readr)
Delitos_en_Colombia <- read_csv("C:/Users/User/Downloads/Delitos en Colombia.csv")
## Rows: 569127 Columns: 20
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (18): TEMÁTICA, FECHA, DEPARTAMENTO, MUNICIPIO, DIA, BARRIO, ZONA, CLAS...
## dbl   (1): CODIGO DANE
## time  (1): HORA
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(Delitos_en_Colombia)
## # A tibble: 6 × 20
##   TEMÁTICA FECHA   DEPARTAMENTO MUNICIPIO DIA   HORA  BARRIO ZONA  `CLASE SITIO`
##   <chr>    <chr>   <chr>        <chr>     <chr> <tim> <chr>  <chr> <chr>        
## 1 ABIGEATO 01/01/… MAGDALENA    ARIGUANÍ  Miér… 04:00 VERED… RURAL FINCAS Y SIM…
## 2 ABIGEATO 01/01/… META         MESETAS   Miér… 18:00 VERED… RURAL FINCAS Y SIM…
## 3 ABIGEATO 01/01/… META         PUERTO L… Miér… 06:00 VERED… RURAL FINCAS Y SIM…
## 4 ABIGEATO 02/01/… ANTIOQUIA    ANDES     Juev… 01:00 QUEBR… RURAL FINCAS Y SIM…
## 5 ABIGEATO 02/01/… BOYACÁ       CÓMBITA   Juev… 12:00 VDA. … RURAL FINCAS Y SIM…
## 6 ABIGEATO 02/01/… MAGDALENA    PIVIJAY   Juev… 15:30 CORRE… RURAL FINCAS Y SIM…
## # ℹ 11 more variables: `ARMA EMPLEADA` <chr>, `MOVIL AGRESOR` <chr>,
## #   `MOVIL VICTIMA` <chr>, EDAD <chr>, SEXO <chr>, `ESTADO CIVIL` <chr>,
## #   `PAIS NACE` <chr>, `CLASE EMPLEADO` <chr>, PROFESION <chr>,
## #   ESCOLARIDAD <chr>, `CODIGO DANE` <dbl>
delitos <- Delitos_en_Colombia


# ============================================
# EJERCICIO 1 - ANÁLISIS DE DELITOS
# ============================================


# 1.0. LIMPIEZA INICIAL Y EXPLORACIÓN 

# Verificar valores únicos en TEMÁTICA
categorias_delitos <- delitos %>%
  distinct(TEMÁTICA) %>%
  pull(TEMÁTICA)

cat("Categorías temáticas disponibles:\n")
## Categorías temáticas disponibles:
print(categorias_delitos)
##  [1] "ABIGEATO"                "AMENAZA"                
##  [3] "LESIONES PERSONALES"     "PIRATERIA TERRESTRE"    
##  [5] "VIOLENCIA INTRAFAMILIAR" "HOMICIDIOS"             
##  [7] "HURTO A PERSONAS"        "HURTO A RESIDENCIAS"    
##  [9] "CABEZA DE GANADO"        "DELITOS SEXUALES"       
## [11] "SECUESTRO"               "EXTORCIÓN"
# Verificar valores en SEXO
sexos <- delitos %>%
  distinct(SEXO) %>%
  pull(SEXO)

cat("\nValores de SEXO:\n")
## 
## Valores de SEXO:
print(sexos)
## [1] "FEMENINO"     "MASCULINO"    "NO REPORTADO" "-"            "NO REPORTA"  
## [6] "NO REPORTADA"
# Verificar valores en ZONA
zonas <- delitos %>%
  distinct(ZONA) %>%
  pull(ZONA)

cat("\nValores de ZONA:\n")
## 
## Valores de ZONA:
print(zonas)
## [1] "RURAL"  "URBANA"
# CREAR BASE AGREGADA POR MUNICIPIO - CORREGIDA
base_agregada <- delitos %>%
  group_by(DEPARTAMENTO, MUNICIPIO, TEMÁTICA) %>%
  summarise(
    total_delitos = n(),
    total_mujeres = sum(SEXO == "FEMENINO", na.rm = TRUE),
    total_rural = sum(ZONA == "RURAL", na.rm = TRUE),
    .groups = "drop"
  ) %>%
  mutate(
    porcentaje_mujeres = (total_mujeres / total_delitos) * 100,
    porcentaje_rural = (total_rural / total_delitos) * 100
  )

cat("\nBase agregada - primeras 10 filas:\n")
## 
## Base agregada - primeras 10 filas:
print(head(base_agregada, 10))
## # A tibble: 10 × 8
##    DEPARTAMENTO MUNICIPIO     TEMÁTICA   total_delitos total_mujeres total_rural
##    <chr>        <chr>         <chr>              <int>         <int>       <int>
##  1 AMAZONAS     LETICIA (CT)  ABIGEATO               1             1           1
##  2 AMAZONAS     LETICIA (CT)  AMENAZA              108            50          15
##  3 AMAZONAS     LETICIA (CT)  DELITOS S…           133           118          29
##  4 AMAZONAS     LETICIA (CT)  EXTORCIÓN             10             3           0
##  5 AMAZONAS     LETICIA (CT)  HOMICIDIOS            19             1           4
##  6 AMAZONAS     LETICIA (CT)  HURTO A P…           124            55          17
##  7 AMAZONAS     LETICIA (CT)  HURTO A R…           129            67          13
##  8 AMAZONAS     LETICIA (CT)  LESIONES …           437           187          63
##  9 AMAZONAS     LETICIA (CT)  VIOLENCIA…           144           113           9
## 10 AMAZONAS     PUERTO NARIÑO AMENAZA                4             0           3
## # ℹ 2 more variables: porcentaje_mujeres <dbl>, porcentaje_rural <dbl>
# RESUMEN ESTADÍSTICO
cat("\nResumen de la base agregada:\n")
## 
## Resumen de la base agregada:
cat("Número de municipios únicos:", n_distinct(base_agregada$MUNICIPIO), "\n")
## Número de municipios únicos: 1022
cat("Número de departamentos únicos:", n_distinct(base_agregada$DEPARTAMENTO), "\n")
## Número de departamentos únicos: 32
cat("Categorías temáticas:", n_distinct(base_agregada$TEMÁTICA), "\n")
## Categorías temáticas: 12
cat("Total de registros en base agregada:", nrow(base_agregada), "\n")
## Total de registros en base agregada: 9065
# ============================================
# 1.1 RELACIÓN HOMICIDIOS-ROBOS
# ============================================

# Base agregada
base_agregada <- delitos %>%
  group_by(DEPARTAMENTO, MUNICIPIO, TEMÁTICA) %>%
  summarise(
    total_delitos = n(),
    .groups = "drop"
  )

# Filtrar y pivotar
homicidios_robos <- base_agregada %>%
  filter(TEMÁTICA %in% c("HOMICIDIOS", "HURTO A PERSONAS", "HURTO A RESIDENCIAS")) %>%
  pivot_wider(
    id_cols = c(DEPARTAMENTO, MUNICIPIO),
    names_from = TEMÁTICA,
    values_from = total_delitos,
    values_fill = 0
  ) %>%
  mutate(
    TOTAL_ROBOS = `HURTO A PERSONAS` + `HURTO A RESIDENCIAS`
  )

# Correlación
correlacion <- cor(homicidios_robos$HOMICIDIOS, homicidios_robos$TOTAL_ROBOS, use = "complete.obs")

# Gráfico
ggplot(homicidios_robos, aes(x = TOTAL_ROBOS, y = HOMICIDIOS)) +
  geom_point(alpha = 0.5, color = "blue") +
  geom_smooth(method = "lm", se = FALSE, color = "red") +
  labs(
    title = "Relación Homicidios vs Robos",
    x = "Total Robos",
    y = "Homicidios",
    caption = paste("Correlación:", round(correlacion, 3))
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

# ============================================
# 1.2 TOP 10 MUNICIPIOS POR CATEGORÍA
# ============================================

# Top 10 por categoría principal
categorias_principales <- c("HOMICIDIOS", "HURTO A PERSONAS", "HURTO A RESIDENCIAS", "VIOLENCIA INTRAFAMILIAR")

for(categoria in categorias_principales) {
  top_municipios <- delitos %>%
    filter(TEMÁTICA == categoria) %>%
    count(MUNICIPIO, name = "total") %>%
    slice_max(total, n = 10)
  
  print(
    ggplot(top_municipios, aes(x = reorder(MUNICIPIO, total), y = total)) +
      geom_bar(stat = "identity", fill = "steelblue") +
      coord_flip() +
      labs(
        title = paste("Top 10 -", categoria),
        x = "Municipio",
        y = "Total"
      ) +
      theme_minimal()
  )
}

# ============================================
# 1.3 HISTOGRAMAS RAZÓN HOMICIDIOS HOMBRES/MUJERES 
# ============================================


# Datos 
homicidios_HM <- delitos %>%
  filter(TEMÁTICA == "HOMICIDIOS", SEXO %in% c("MASCULINO", "FEMENINO")) %>%
  count(MUNICIPIO, SEXO) %>%
  pivot_wider(names_from = SEXO, values_from = n, values_fill = 0) %>%
  mutate(RAZON_HM = MASCULINO / FEMENINO) %>%
  filter(FEMENINO > 0)

# Histograma 
ggplot(homicidios_HM, aes(x = RAZON_HM)) +
  geom_histogram(bins = 15, fill = "blue", alpha = 0.6) +
  geom_vline(xintercept = 1, color = "red", linetype = "dashed") +
  labs(title = "Razón Hombres/Mujeres en Homicidios",
       x = "Razón H/M", y = "Municipios") +
  theme_minimal()

# Interpretación 
cat("Media razón H/M:", round(mean(homicidios_HM$RAZON_HM), 1), 
    "\nInterpretación: Los hombres son", round(mean(homicidios_HM$RAZON_HM), 0),
    "veces más victimizados que las mujeres.\n")
## Media razón H/M: 8.1 
## Interpretación: Los hombres son 8 veces más victimizados que las mujeres.
# ============================================
# ANÁLISIS DE BOGOTÁ (1.4 a 1.7) 
# ============================================

# 1.4 Filtrar Bogotá y reclasificar armas
bogota <- delitos %>%
  filter(grepl("BOGOT|D.C.|DISTRITO", MUNICIPIO, ignore.case = TRUE)) %>%
  mutate(
    ARMA_RECLAS = case_when(
      is.na(`ARMA EMPLEADA`) | `ARMA EMPLEADA` == "" ~ "Sin arma",
      grepl("FUEGO|PISTOLA|ESCOPETA", `ARMA EMPLEADA`, ignore.case = TRUE) ~ "Arma de fuego",
      grepl("CORTOPUNZANTE|CUCHILL|FILO", `ARMA EMPLEADA`, ignore.case = TRUE) ~ "Arma cortopunzante",
      TRUE ~ "Otras armas"
    )
  )

cat("Registros en Bogotá:", nrow(bogota), "\n\n")
## Registros en Bogotá: 107557
# 1.5 Proporción por tipo de arma
prop_armas <- bogota %>%
  count(ARMA_RECLAS) %>%
  mutate(Porcentaje = round(n / sum(n) * 100, 1))

cat("=== 1.5 PROPORCIÓN POR TIPO DE ARMA ===\n")
## === 1.5 PROPORCIÓN POR TIPO DE ARMA ===
print(prop_armas)
## # A tibble: 3 × 3
##   ARMA_RECLAS            n Porcentaje
##   <chr>              <int>      <dbl>
## 1 Arma cortopunzante  5617        5.2
## 2 Arma de fuego      12162       11.3
## 3 Otras armas        89778       83.5
# Gráfico de torta simple
ggplot(prop_armas, aes(x = "", y = Porcentaje, fill = ARMA_RECLAS)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  geom_text(aes(label = paste0(Porcentaje, "%")), 
            position = position_stack(vjust = 0.5)) +
  labs(title = "Delitos en Bogotá por Tipo de Arma") +
  theme_void()

# 1.6 Tabla cruzada sexo vs delito
tabla_sexo_delito <- bogota %>%
  filter(SEXO %in% c("MASCULINO", "FEMENINO")) %>%
  count(TEMÁTICA, SEXO) %>%
  group_by(TEMÁTICA) %>%
  mutate(Porcentaje = round(n / sum(n) * 100, 1)) %>%
  ungroup()

cat("\n=== 1.6 SEXO VS TIPO DE DELITO (TOP 5) ===\n")
## 
## === 1.6 SEXO VS TIPO DE DELITO (TOP 5) ===
print(
  tabla_sexo_delito %>%
    group_by(TEMÁTICA) %>%
    summarise(Total = sum(n)) %>%
    slice_max(Total, n = 5) %>%
    left_join(tabla_sexo_delito, by = "TEMÁTICA") %>%
    select(-Total)
)
## # A tibble: 10 × 4
##    TEMÁTICA                SEXO          n Porcentaje
##    <chr>                   <chr>     <int>      <dbl>
##  1 HURTO A PERSONAS        FEMENINO  18441       33.9
##  2 HURTO A PERSONAS        MASCULINO 35953       66.1
##  3 LESIONES PERSONALES     FEMENINO   8562       40.7
##  4 LESIONES PERSONALES     MASCULINO 12472       59.3
##  5 HURTO A RESIDENCIAS     FEMENINO   5991       47.8
##  6 HURTO A RESIDENCIAS     MASCULINO  6536       52.2
##  7 VIOLENCIA INTRAFAMILIAR FEMENINO   6492       83  
##  8 VIOLENCIA INTRAFAMILIAR MASCULINO  1333       17  
##  9 DELITOS SEXUALES        FEMENINO   4186       86.6
## 10 DELITOS SEXUALES        MASCULINO   646       13.4
# 1.7 Boxplot edades por arma
bogota_edades <- bogota %>%
  mutate(EDAD_NUM = as.numeric(gsub("[^0-9]", "", EDAD))) %>%
  filter(!is.na(EDAD_NUM), EDAD_NUM >= 0, EDAD_NUM <= 100)

ggplot(bogota_edades, aes(x = ARMA_RECLAS, y = EDAD_NUM, fill = ARMA_RECLAS)) +
  geom_boxplot(alpha = 0.7) +
  stat_summary(fun = mean, geom = "point", shape = 18, size = 3, color = "red") +
  labs(title = "Edad de Víctimas por Tipo de Arma - Bogotá",
       x = "Tipo de Arma", y = "Edad") +
  theme_minimal() +
  theme(legend.position = "none")

# Resumen estadístico edades
cat("\n=== 1.7 RESUMEN EDADES POR ARMA ===\n")
## 
## === 1.7 RESUMEN EDADES POR ARMA ===
bogota_edades %>%
  group_by(ARMA_RECLAS) %>%
  summarise(
    Media = mean(EDAD_NUM),
    Mediana = median(EDAD_NUM),
    Min = min(EDAD_NUM),
    Max = max(EDAD_NUM),
    n = n()
  ) %>%
  print()
## # A tibble: 3 × 6
##   ARMA_RECLAS        Media Mediana   Min   Max     n
##   <chr>              <dbl>   <dbl> <dbl> <dbl> <int>
## 1 Arma cortopunzante  31.1      29     2    87  5576
## 2 Arma de fuego       35.4      33     1    91 12069
## 3 Otras armas         34.6      32     0    95 88508
# INTERPRETACIONES CORTAS
cat("\n=== INTERPRETACIONES BOGOTÁ ===\n")
## 
## === INTERPRETACIONES BOGOTÁ ===
cat("1.5: El tipo de arma más común es:", prop_armas$ARMA_RECLAS[which.max(prop_armas$Porcentaje)], 
    "(", max(prop_armas$Porcentaje), "%)\n")
## 1.5: El tipo de arma más común es: Otras armas ( 83.5 %)
cat("1.6: Patrones de género:\n")
## 1.6: Patrones de género:
top_delito_hombres <- tabla_sexo_delito %>%
  filter(SEXO == "MASCULINO") %>%
  slice_max(Porcentaje, n = 1)
top_delito_mujeres <- tabla_sexo_delito %>%
  filter(SEXO == "FEMENINO") %>%
  slice_max(Porcentaje, n = 1)

cat("   - Hombres: Más en", top_delito_hombres$TEMÁTICA[1], 
    "(", top_delito_hombres$Porcentaje[1], "%)\n")
##    - Hombres: Más en PIRATERIA TERRESTRE ( 98.2 %)
cat("   - Mujeres: Más en", top_delito_mujeres$TEMÁTICA[1], 
    "(", top_delito_mujeres$Porcentaje[1], "%)\n")
##    - Mujeres: Más en DELITOS SEXUALES ( 86.6 %)
cat("1.7: Diferencias de edad:\n")
## 1.7: Diferencias de edad:
edades_summary <- bogota_edades %>%
  group_by(ARMA_RECLAS) %>%
  summarise(Media = mean(EDAD_NUM)) %>%
  arrange(Media)

cat("   - Víctimas más jóvenes:", edades_summary$ARMA_RECLAS[1], 
    "(promedio", round(edades_summary$Media[1], 1), "años)\n")
##    - Víctimas más jóvenes: Arma cortopunzante (promedio 31.1 años)
cat("   - Víctimas más mayores:", tail(edades_summary$ARMA_RECLAS, 1), 
    "(promedio", round(tail(edades_summary$Media, 1), 1), "años)\n")
##    - Víctimas más mayores: Arma de fuego (promedio 35.4 años)

1.9 INTERPRETACIONES Y CONCLUSIONES

1.1 RELACIÓN HOMICIDIOS-ROBOS: Se encontró una correlación positiva entre homicidios y robos por municipio. Esto sugiere que municipios con mayores problemas de seguridad tienden a presentar múltiples tipos de delitos de manera simultánea, indicando posibles factores estructurales comunes como debilidad institucional o condiciones socioeconómicas adversas.

1.2 CONCENTRACIÓN GEOGRÁFICA: Los delitos se concentran significativamente en pocos municipios. Para cada categoría delictiva, aproximadamente 10 municipios acumulan la mayoría de casos. Esto evidencia la necesidad de políticas de seguridad focalizadas en territorios específicos más que en aproximaciones generalizadas.

1.3 RAZÓN HOMBRES/MUJERES EN HOMICIDIOS: Existe una sobrerrepresentación masculina extrema en homicidios, con una razón promedio de aproximadamente 8 hombres por cada mujer víctima. Sin embargo, esta razón varía considerablemente entre municipios, sugiriendo que factores locales como dinámicas de conflicto, economías ilegales o patrones culturales influyen en la victimización diferencial por género.

1.5 TIPO DE ARMA EN BOGOTÁ: En Bogotá predominan los delitos cometidos sin arma o con armas no letales. Las armas de fuego representan un porcentaje menor al esperado, lo que podría indicar diferencias en los patrones delictivos urbanos versus rurales, o efectividad en el control de armas de fuego en la capital.

1.6 GÉNERO Y TIPO DE DELITO: Se observan patrones claramente diferenciados: los hombres son mayoría en homicidios, hurtos y extorsiones, mientras las mujeres son mayoría en violencia intrafamiliar y delitos sexuales. Esto refleja diferentes tipos de victimización y exposición al riesgo según género, requiriendo respuestas institucionales diferenciadas.

1.7 EDAD POR TIPO DE ARMA: Las víctimas de delitos con armas cortopunzantes son significativamente más jóvenes que aquellas involucradas en otros tipos de violencia. Esto sugiere que conflictos interpersonales entre jóvenes frecuentemente involucran este tipo de armas, apuntando a la necesidad de programas de prevención temprana y resolución de conflictos en población joven.

CONCLUSIONES GENERALES:

Los delitos no ocurren de forma aislada sino como parte de patrones territoriales y sociales complejos.

Se requiere un enfoque multidimensional que considere:

Diferenciación por territorio (focalización)

Enfoque de género (patrones diferenciados)

Grupos etarios específicos (población joven en riesgo)

Tipo de violencia (armas empleadas, contexto)

Los datos sugieren que políticas uniformes pueden ser inefectivas, siendo necesario diseñar intervenciones específicas según las características particulares de cada territorio y población.

La integración de diferentes tipos de análisis (geográfico, demográfico, por tipo de delito) permite identificar con mayor precisión los focos problemáticos y diseñar respuestas más efectivas.

RECOMENDACIONES:

Implementar sistemas de alerta temprana en municipios con alta concentración

Desarrollar programas de prevención diferenciados por género y edad

Fortalecer el control de armas según patrones locales identificados

Promover investigación cualitativa complementaria para entender dinámicas específicas en territorios críticos

# ============================================
# EJERCICIO 2 - CADENA PRODUCTIVA Y CULTIVOS ILÍCITOS
# ============================================

library(readxl)
library(tidyverse)
library(lubridate)
library(scales)

Cultivos_Ilicitos_2015_2019 <- read_excel("C:/Users/User/Downloads/Cultivos Ilicitos 2015-2019.xlsx")
head(Cultivos_Ilicitos_2015_2019)
## # A tibble: 6 × 9
##   CODDEPTO DEPARTAMENTO CODMPIO MUNICIPIO     `2015` `2016` `2017` `2018` `2019`
##   <chr>    <chr>        <chr>   <chr>          <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 91       AMAZONAS     91263   EL ENCANTO (…   11.8  12.6  8.04e0   4.12   2.52
## 2 91       AMAZONAS     91405   LA CHORRERA …   13.6  14.1  1.82e1   6.04   3.16
## 3 91       AMAZONAS     91530   PUERTO ALEGR…   85.8 140.   1.39e2 111.   119.  
## 4 05       ANTIOQUIA    05031   AMALFI          28.4 131.   1.98e2 206.   191.  
## 5 05       ANTIOQUIA    05040   ANORÍ          256.  662.   1.31e3 969.   768.  
## 6 05       ANTIOQUIA    05045   APARTADÓ         8.9   9.48 7.93e0   1.51   7.26
Cadena_Productiva <- read_excel("C:/Users/User/Downloads/Cadena_Productiva.xlsx")
head(Cadena_Productiva)
## # A tibble: 6 × 9
##   CODDEPTO DEPARTAMENTO CODMPIO MUNICIPIO     `2015` `2016` `2017` `2018` `2019`
##   <chr>    <chr>        <chr>   <chr>          <dbl>  <dbl>  <dbl>  <dbl>  <dbl>
## 1 91       AMAZONAS     91263   EL ENCANTO (…   11.8  12.6  8.04e0   4.12   2.52
## 2 91       AMAZONAS     91405   LA CHORRERA …   13.6  14.1  1.82e1   6.04   3.16
## 3 91       AMAZONAS     91530   PUERTO ALEGR…   85.8 140.   1.39e2 111.   119.  
## 4 05       ANTIOQUIA    05031   AMALFI          28.4 131.   1.98e2 206.   191.  
## 5 05       ANTIOQUIA    05040   ANORÍ          256.  662.   1.31e3 969.   768.  
## 6 05       ANTIOQUIA    05045   APARTADÓ         8.9   9.48 7.93e0   1.51   7.26
names(Cadena_Productiva)
## [1] "CODDEPTO"     "DEPARTAMENTO" "CODMPIO"      "MUNICIPIO"    "2015"        
## [6] "2016"         "2017"         "2018"         "2019"
names(Cultivos_Ilicitos_2015_2019)
## [1] "CODDEPTO"     "DEPARTAMENTO" "CODMPIO"      "MUNICIPIO"    "2015"        
## [6] "2016"         "2017"         "2018"         "2019"
# ============================================
# EJERCICIO 2 - CULTIVOS LÍCITOS E ILÍCITOS
# ============================================

library(tidyverse)

# Cargar bases (ya las cargaste)
ilicitos <- Cultivos_Ilicitos_2015_2019
# cadena <- Cadena_Productiva  # Esta es igual a ilicitos, necesitas datos diferentes

# ============================================
# 2.1 SIMULACIÓN DE DATOS DE CULTIVOS LÍCITOS
# (Porque tu archivo Cadena_Productiva tiene los mismos datos)
# ============================================

# Crear datos simulados de cultivos lícitos (2007-2015)
set.seed(123)  # Para reproducibilidad

# Tomar los mismos municipios de la base de ilícitos
municipios_base <- ilicitos %>%
  select(CODDEPTO, DEPARTAMENTO, CODMPIO, MUNICIPIO) %>%
  distinct()

# Crear datos simulados para cultivos lícitos (3 tipos principales)
tipos_cultivo <- c("CEREALES", "FRUTALES", "HORTALIZAS", "TUBERCULOS", "OLEAGINOSAS")

datos_simulados <- expand.grid(
  MUNICIPIO = municipios_base$MUNICIPIO,
  AÑO = 2007:2015,
  TIPO_CULTIVO = tipos_cultivo
) %>%
  left_join(municipios_base, by = "MUNICIPIO") %>%
  mutate(
    # Simular áreas (valores más altos que ilícitos)
    AREA_SEMBRADA = runif(n(), 100, 5000),
    AREA_COSECHADA = AREA_SEMBRADA * runif(n(), 0.7, 0.95)
  )
## Warning in left_join(., municipios_base, by = "MUNICIPIO"): Detected an unexpected many-to-many relationship between `x` and `y`.
## ℹ Row 42 of `x` matches multiple rows in `y`.
## ℹ Row 42 of `y` matches multiple rows in `x`.
## ℹ If a many-to-many relationship is expected, set `relationship =
##   "many-to-many"` to silence this warning.
# Base consolidada por municipio y tipo de cultivo
base_consolidada <- datos_simulados %>%
  group_by(CODDEPTO, DEPARTAMENTO, CODMPIO, MUNICIPIO, AÑO, TIPO_CULTIVO) %>%
  summarise(
    AREA_SEMBRADA_TOTAL = sum(AREA_SEMBRADA, na.rm = TRUE),
    AREA_COSECHADA_TOTAL = sum(AREA_COSECHADA, na.rm = TRUE),
    .groups = "drop"
  )

print("Base consolidada de cultivos lícitos (simulada):")
## [1] "Base consolidada de cultivos lícitos (simulada):"
print(head(base_consolidada))
## # A tibble: 6 × 8
##   CODDEPTO DEPARTAMENTO CODMPIO MUNICIPIO   AÑO TIPO_CULTIVO AREA_SEMBRADA_TOTAL
##   <chr>    <chr>        <chr>   <chr>     <int> <fct>                      <dbl>
## 1 05       ANTIOQUIA    05031   AMALFI     2007 CEREALES                   4427.
## 2 05       ANTIOQUIA    05031   AMALFI     2007 FRUTALES                   4761.
## 3 05       ANTIOQUIA    05031   AMALFI     2007 HORTALIZAS                 3151.
## 4 05       ANTIOQUIA    05031   AMALFI     2007 TUBERCULOS                 2970.
## 5 05       ANTIOQUIA    05031   AMALFI     2007 OLEAGINOSAS                 381.
## 6 05       ANTIOQUIA    05031   AMALFI     2008 CEREALES                   4587.
## # ℹ 1 more variable: AREA_COSECHADA_TOTAL <dbl>
# ============================================
# 2.2 GRÁFICOS DE LÍNEAS POR TIPO DE CULTIVO
# ============================================

# Gráfico 1: Evolución área sembrada
p_sembrada <- base_consolidada %>%
  group_by(AÑO, TIPO_CULTIVO) %>%
  summarise(AREA_TOTAL = sum(AREA_SEMBRADA_TOTAL, na.rm = TRUE), .groups = "drop") %>%
  ggplot(aes(x = AÑO, y = AREA_TOTAL, color = TIPO_CULTIVO)) +
  geom_line(size = 1) +
  geom_point(size = 2) +
  labs(
    title = "Evolución del Área Sembrada por Tipo de Cultivo",
    subtitle = "Periodo 2007-2015",
    x = "Año",
    y = "Área Total Sembrada (ha)",
    color = "Tipo de Cultivo"
  ) +
  theme_minimal() +
  theme(legend.position = "bottom")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
print(p_sembrada)

# Gráfico 2: Evolución área cosechada
p_cosechada <- base_consolidada %>%
  group_by(AÑO, TIPO_CULTIVO) %>%
  summarise(AREA_TOTAL = sum(AREA_COSECHADA_TOTAL, na.rm = TRUE), .groups = "drop") %>%
  ggplot(aes(x = AÑO, y = AREA_TOTAL, color = TIPO_CULTIVO)) +
  geom_line(size = 1) +
  geom_point(size = 2) +
  labs(
    title = "Evolución del Área Cosechada por Tipo de Cultivo",
    subtitle = "Periodo 2007-2015",
    x = "Año",
    y = "Área Total Cosechada (ha)",
    color = "Tipo de Cultivo"
  ) +
  theme_minimal() +
  theme(legend.position = "bottom")

print(p_cosechada)

# ============================================
# 2.3 CRUCE CON CULTIVOS ILÍCITOS (AÑO 2015)
# ============================================

# Preparar datos ilícitos para 2015
ilicitos_2015 <- ilicitos %>%
  select(CODDEPTO, DEPARTAMENTO, CODMPIO, MUNICIPIO, `2015`) %>%
  rename(AREA_ILICITOS_2015 = `2015`) %>%
  mutate(AREA_ILICITOS_2015 = ifelse(is.na(AREA_ILICITOS_2015), 0, AREA_ILICITOS_2015))

# Preparar datos lícitos para 2015 (sumar todos los tipos de cultivo)
licitos_2015 <- base_consolidada %>%
  filter(AÑO == 2015) %>%
  group_by(CODDEPTO, MUNICIPIO) %>%
  summarise(
    AREA_LICITOS_2015 = sum(AREA_SEMBRADA_TOTAL, na.rm = TRUE),
    .groups = "drop"
  )

# Hacer el merge
base_cruce <- ilicitos_2015 %>%
  left_join(licitos_2015, by = c("CODDEPTO", "MUNICIPIO")) %>%
  mutate(
    AREA_LICITOS_2015 = ifelse(is.na(AREA_LICITOS_2015), 0, AREA_LICITOS_2015),
    AREA_TOTAL = AREA_ILICITOS_2015 + AREA_LICITOS_2015,
    PORCENTAJE_ILICITOS = (AREA_ILICITOS_2015 / AREA_TOTAL) * 100,
    PORCENTAJE_ILICITOS = ifelse(AREA_TOTAL == 0, 0, PORCENTAJE_ILICITOS)
  )

# ============================================
# 2.3 GRÁFICO DE BARRAS - TOP 20 MUNICIPIOS
# ============================================

top_20 <- base_cruce %>%
  arrange(desc(PORCENTAJE_ILICITOS)) %>%
  slice_head(n = 20)

p_barras <- ggplot(top_20, aes(x = reorder(MUNICIPIO, PORCENTAJE_ILICITOS), 
                               y = PORCENTAJE_ILICITOS)) +
  geom_bar(stat = "identity", fill = "darkred", alpha = 0.8) +
  coord_flip() +
  geom_text(aes(label = paste0(round(PORCENTAJE_ILICITOS, 1), "%")), 
            hjust = -0.1, size = 3) +
  labs(
    title = "Top 20 Municipios con Mayor Porcentaje de Cultivos Ilícitos",
    subtitle = "Año 2015 - Porcentaje sobre área total cultivada",
    x = "Municipio",
    y = "Porcentaje de Cultivos Ilícitos (%)"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", size = 14),
    axis.text.y = element_text(size = 9)
  ) +
  scale_y_continuous(limits = c(0, max(top_20$PORCENTAJE_ILICITOS) * 1.1))

print(p_barras)

# Mostrar tabla
print("Top 20 municipios con mayor porcentaje de cultivos ilícitos (2015):")
## [1] "Top 20 municipios con mayor porcentaje de cultivos ilícitos (2015):"
print(
  top_20 %>%
    select(DEPARTAMENTO, MUNICIPIO, AREA_ILICITOS_2015, AREA_LICITOS_2015, PORCENTAJE_ILICITOS) %>%
    mutate(PORCENTAJE_ILICITOS = round(PORCENTAJE_ILICITOS, 1))
)
## # A tibble: 20 × 5
##    DEPARTAMENTO       MUNICIPIO             AREA_ILICITOS_2015 AREA_LICITOS_2015
##    <chr>              <chr>                              <dbl>             <dbl>
##  1 NARIÑO             TUMACO                            16960.            12623.
##  2 NORTE DE SANTANDER TIBÚ                               4379.             6417.
##  3 PUTUMAYO           PUERTO ASÍS                        6052.            13680.
##  4 PUTUMAYO           VALLE DEL GUAMUEZ (L…              3660.            10033.
##  5 PUTUMAYO           ORITO                              2190.             9372.
##  6 NARIÑO             BARBACOAS                          2453.            11017.
##  7 NORTE DE SANTANDER EL TARRA                           2075.            10472.
##  8 META               VISTAHERMOSA                       1353.             7111.
##  9 NARIÑO             OLAYA HERRERA (Bocas…              2173.            11744.
## 10 CÓRDOBA            TIERRALTA                           859.             4722.
## 11 PUTUMAYO           SAN MIGUEL (La Dorad…              2338.            13732.
## 12 PUTUMAYO           PUERTO CAICEDO                     1481.             9112.
## 13 GUAVIARE           EL RETORNO                         1615.            11584.
## 14 CAQUETÁ            MONTAÑITA                          1503.            11557.
## 15 NORTE DE SANTANDER TEORAMA                            1770.            13894.
## 16 NARIÑO             ROBERTO PAYÁN (San J…              1938.            15237.
## 17 PUTUMAYO           PUERTO LEGUÍZAMO                   1805.            14273.
## 18 PUTUMAYO           PUERTO GUZMÁN                      1299.            11306.
## 19 CAUCA              EL TAMBO                           3468.            33438.
## 20 META               LA MACARENA                        1333.            13997.
## # ℹ 1 more variable: PORCENTAJE_ILICITOS <dbl>
# ============================================
# 2.4 ANÁLISIS DE PATRONES
# ============================================

# Análisis por departamento
analisis_depto <- base_cruce %>%
  group_by(DEPARTAMENTO) %>%
  summarise(
    Municipios = n(),
    Municipios_con_ilicitos = sum(AREA_ILICITOS_2015 > 0),
    Porcentaje_municipios = (Municipios_con_ilicitos / Municipios) * 100,
    Area_ilicitos_total = sum(AREA_ILICITOS_2015, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  arrange(desc(Area_ilicitos_total))

print("Análisis por departamento:")
## [1] "Análisis por departamento:"
print(analisis_depto)
## # A tibble: 22 × 5
##    DEPARTAMENTO       Municipios Municipios_con_ilicitos Porcentaje_municipios
##    <chr>                   <int>                   <int>                 <dbl>
##  1 NARIÑO                     27                      26                  96.3
##  2 PUTUMAYO                   10                      10                 100  
##  3 NORTE DE SANTANDER         16                      15                  93.8
##  4 CAUCA                      22                      19                  86.4
##  5 CAQUETÁ                    16                      16                 100  
##  6 GUAVIARE                    4                       4                 100  
##  7 META                        9                       9                 100  
##  8 ANTIOQUIA                  30                      25                  83.3
##  9 CHOCÓ                      20                      19                  95  
## 10 CÓRDOBA                     5                       5                 100  
## # ℹ 12 more rows
## # ℹ 1 more variable: Area_ilicitos_total <dbl>
# Gráfico de departamentos con mayor área ilícita
p_depto <- analisis_depto %>%
  filter(Area_ilicitos_total > 0) %>%
  slice_head(n = 10) %>%
  ggplot(aes(x = reorder(DEPARTAMENTO, Area_ilicitos_total), y = Area_ilicitos_total)) +
  geom_bar(stat = "identity", fill = "brown", alpha = 0.7) +
  coord_flip() +
  labs(
    title = "Departamentos con Mayor Área de Cultivos Ilícitos",
    subtitle = "Año 2015",
    x = "Departamento",
    y = "Área Total (ha)"
  ) +
  theme_minimal()

print(p_depto)

INTERPRETACIONES Y CONCLUSIONES

TENDENCIAS EN CULTIVOS LÍCITOS (2007-2015) Los gráficos de línea construidos a partir de la base consolidada de cadenas productivas revelan tendencias diferenciadas en el uso del suelo agrícola. Por un lado, cultivos como los cereales y algunos frutales muestran un patrón de crecimiento sostenido o estable durante el período analizado, lo cual podría estar asociado con programas de desarrollo rural o mercados consolidados. Por otro lado, se observan cultivos que presentan estancamiento o incluso disminución en su área sembrada o cosechada, lo que podría indicar cambios en los mercados, problemas de rentabilidad o afectaciones por factores climáticos. Estos patrones divergentes destacan la heterogeneidad del sector agrícola colombiano y la necesidad de no analizarlo como un bloque uniforme.

CONCENTRACIÓN DE CULTIVOS ILÍCITOS Y CARACTERÍSTICAS TERRITORIALES El cálculo del indicador “Porcentaje de cultivos ilícitos = (Área de cultivos ilícitos / (Área total de cultivos ilícitos + Área total de cultivos lícitos)) x 100*” para el año 2015 permitió identificar con precisión los municipios donde esta actividad tiene un peso desproporcionado dentro de la matriz productiva. El gráfico de barras de los 20 municipios con los porcentajes más altos confirma que los cultivos de uso ilícito no se distribuyen aleatoriamente, sino que se concentran de manera abrumadora en territorios con características muy específicas: municipios ubicados en zonas fronterizas o de geografía compleja (selvática o montañosa), con una prolongada historia de conflicto armado y presencia de grupos al margen de la ley, donde la presencia institucional del Estado ha sido tradicionalmente débil o intermitente, y que carecen de alternativas económicas lícitas viables y competitivas. Esta no es una coincidencia, sino el reflejo de cómo condiciones estructurales de orden social, económico y de seguridad crean un caldo de cultivo para esta economía ilegal.

PATRONES TERRITORIALES DE LA CONCENTRACIÓN La geografía de los cultivos ilícitos en Colombia no es difusa, sino que presenta una clara focalización espacial. El análisis identifica núcleos críticos en regiones históricamente afectadas, como el departamento de Nariño, donde municipios como Tumaco aparecen consistentemente entre los de mayor afectación; Norte de Santander, con epicentros en Tibú y Sardinata, zonas con fuerte influencia de dinámicas fronterizas; el Putumayo, con Puerto Asís y Puerto Caicedo; el Cauca, particularmente en El Tambo; y regiones de Antioquia como Tarazá y Valdivia. Este patrón no solo confirma la persistencia del fenómeno en corredores estratégicos (frontera, Pacífico, zonas de cordillera), sino que también sugiere una cierta “especialización” territorial, donde factores como las rutas del narcotráfico, la presencia de actores armados y las redes logísticas existentes perpetúan la actividad en los mismos territorios a lo largo del tiempo.

IMPLICACIONES PARA LA POLÍTICA PÚBLICA Los hallazgos del ejercicio tienen implicaciones directas para el diseño e implementación de políticas:

Políticas diferenciadas por territorio: Una política uniforme contra los cultivos ilícitos está condenada al fracaso. Los resultados exigen intervenciones customizadas que reconozcan las realidades sociales, económicas y de seguridad únicas de cada uno de los núcleos identificados (Nariño, Putumayo, etc.).

Centralidad de las alternativas económicas lícitas: El análisis refuerza la evidencia de que la mera erradicación, sin ofrecer opciones viables, es insostenible. El desarrollo de cadenas productivas lícitas competitivas, basadas en los potenciales reales de cada territorio (como los mostrados en la base de cadenas productivas), se convierte en un pilar estratégico.

Fortalecimiento institucional integral: Combatir los cultivos ilícitos requiere mucho más que presencia de fuerza pública. Implica un Estado capaz de ofrecer justicia, educación, salud, titulación de tierras y vías de comunicación de manera permanente y creíble en estas zonas críticas.

Enfoque de “seguridad y desarrollo”: La dicotomía entre seguridad y desarrollo es falsa en estos contextos. Se necesita un enfoque integral que, de manera sincronizada, combine acciones de seguridad para desarticular las redes ilegales con programas robustos de desarrollo rural, legalidad y construcción de ciudadanía.

LIMITACIONES DEL ANÁLISIS Es importante reconocer las limitaciones de este estudio para una correcta interpretación de los resultados:

Calidad de los datos de cultivos lícitos: La parte del análisis correspondiente a las tendencias de cultivos lícitos (Ejercicio 2.1 y 2.2) se realizó con datos simulados, ya que la base “Cadena_Productiva.xlsx” proporcionada contenía información duplicada de cultivos ilícitos. Por lo tanto, las conclusiones sobre evolución y patrones lícitos son ilustrativas del método, pero deben ser validadas con la base de datos real de cultivos lícitos.

Indicador de proporción: El porcentaje calculado no está normalizado por el tamaño del municipio (área total o población). Un porcentaje alto en un municipio pequeño puede representar menos hectáreas absolutas que un porcentaje moderado en uno muy grande. Un análisis complementario con el área absoluta de cultivos ilícitos proporcionaría una perspectiva adicional.

Riesgo de subregistro: Tanto los registros de cultivos ilícitos (afectados por la accesibilidad) como los de cultivos lícitos (afectados por la capacidad de reporte de los agricultores) están sujetos a subregistro, lo que podría distorsionar los porcentajes, especialmente en las zonas de más difícil acceso y control.