1 Resumen

En este documento se presenta el anexo técnico correspondiente al trabajo de grado desarrollado en modalidad de pasantías durante el periodo 2025-II. Aquí se detalla el proceso completo de construcción, depuración, análisis y organización de la base de datos oficial del municipio de La Paz, Cesar, utilizada por la UMATA para la planificación agropecuaria.

Se describe paso a paso el procedimiento realizado, desde la integración de las fuentes de información hasta la generación de los productos estadísticos y geoespaciales, mostrando de manera transparente cómo se obtuvieron los resultados finales del proyecto. Este anexo complementa el informe principal y permite garantizar la trazabilidad, reproducibilidad y validez del trabajo desarrollado.

2 Introducción

La construcción del presente anexo técnico tiene como propósito documentar de manera detallada el proceso desarrollado durante el trabajo de grado en modalidad de pasantía 2025-II, realizado en la Unidad Municipal de Asistencia Técnica Agropecuaria (UMATA) del municipio de La Paz, Cesar. En este documento se presentan los procedimientos metodológicos, transformaciones de datos, criterios técnicos y herramientas estadísticas empleados para la elaboración de la base de datos veredal y los análisis derivados de ella.

El anexo acompaña al informe principal y funciona como soporte técnico, permitiendo evidenciar la trazabilidad del trabajo realizado desde la recopilación de la información hasta la obtención de los productos estadísticos y geoespaciales finales. Se incluye la descripción del proceso de depuración, integración y validación de datos, así como la construcción del shapefile veredal y los análisis estadísticos utilizados para caracterizar el territorio y apoyar la planificación agropecuaria del municipio.

De manera complementaria, este documento presenta los resultados intermedios obtenidos, el código implementado en software R y los criterios de decisión adoptados en cada etapa. Su propósito es garantizar la reproducibilidad del trabajo y ofrecer un recurso técnico que pueda servir de guía para futuras actualizaciones, investigaciones o procesos institucionales asociados al manejo de información agropecuaria en La Paz, Cesar.

3 Descripción de las Bases de Datos.

3.1 Fuentes institucionales

La principal fuente de información institucional correspondió a la UMATA del municipio de La Paz, entidad encargada de brindar acompañamiento técnico y orientar los procesos productivos del sector agropecuario. Sin embargo, aunque la UMATA dispone de documentos como el Plan de Desarrollo Agropecuario y algunos registros de asistencia técnica, no existía un censo productivo completo, actualizado y unificado para todas las veredas del municipio. La información disponible era parcial, dispersa y en algunos casos desactualizada, lo cual representó una limitación importante para la caracterización inicial del territorio.

Adicionalmente, se realizaron procesos de validación y consulta directa con los representantes de las Juntas de Acción Comunal (JAC), quienes constituyen una fuente comunitaria clave en la recolección de datos veredales. No obstante, este proceso presentó múltiples desafíos. En primer lugar, la información proporcionada por las JAC era escasa o incompleta, especialmente en lo referente a los nombres y datos de contacto de los presidentes, así como a los inventarios productivos locales. En segundo lugar, el territorio del municipio presenta zonas con baja o nula cobertura de señal, lo que dificultó la comunicación remota y obligó a realizar visitas presenciales para completar o verificar la información. Finalmente, algunos líderes comunitarios manifestaron desconfianza al momento de compartir datos, debido a antecedentes regionales asociados a extorsiones y problemas de seguridad, lo cual ralentizó la obtención de registros confiables.

Como resultado, la calidad de la información obtenida depende en gran medida del aporte directo de los presidentes de las JAC y de los registros disponibles en UMATA. Estas condiciones implicaron un esfuerzo significativo de verificación, depuración y estandarización para construir una base de datos veredal consistente que sirviera de insumo para el análisis estadístico y geoespacial del proyecto.

3.2 Fuentes externas

En el desarrollo del componente cartográfico y estadístico del proyecto se recurrió a diversas fuentes institucionales externas con el fin de complementar, validar y contrastar la información disponible en UMATA La Paz. Estas fuentes permiten garantizar mayor rigurosidad en la construcción del diagnóstico rural veredal y en la elaboración de los insumos geoespaciales.

3.2.1 DANE – Información demográfica y estadística básica

El Departamento Administrativo Nacional de Estadística (DANE) fue consultado para obtener datos oficiales sobre población, distribución demográfica y características generales del municipio de La Paz. Esta información permitió contextualizar las diferencias entre veredas, dimensionar el territorio y comprender la relación entre densidad poblacional, actividades productivas y dinámicas rurales.

3.2.2 IGAC – Cartografía base y límites administrativos

El Instituto Geográfico Agustín Codazzi (IGAC) constituye la fuente oficial de cartografía del país. Su servidor MapServer contiene la capa denominada “Veredas de Colombia”, que corresponde a la delimitación veredal oficial vigente a nivel nacional.

Aunque IGAC proporciona un mapa municipal de La Paz, este únicamente muestra límites generales y no incluye subdivisiones veredales detalladas. Además, al compararlo con otras fuentes, como el visor geográfico disponible en:

https://art.maps.arcgis.com/apps/webappviewer/index.html?id=ecc0d6ec1e8040d0853839543b83f09e

se encontró que la representación veredal no coincidía completamente con la realidad territorial del municipio. Este visor corresponde a una aplicación basada en ArcGIS Online que reúne capas institucionales del Estado, incluyendo límites administrativos, capas ambientales y otras referencias geográficas.

La comparación entre ambas fuentes reveló inconsistencias en límites, tamaños de polígonos y estructura interna de corregimientos. Por ello, fue necesario construir un shapefile veredal propio, ajustado a la realidad local del territorio, validado con actores comunitarios y contrastado con los límites municipales oficiales.

3.2.3 IDEAM – Información climática y ambiental

El Instituto de Hidrología, Meteorología y Estudios Ambientales (IDEAM) fue utilizado para obtener datos relacionados con clima, temperaturas y condiciones agroecológicas del municipio. Estos insumos apoyaron la caracterización productiva de las veredas y permitieron contextualizar variables como temperatura promedio, rangos altitudinales y posibles limitaciones climáticas para cultivos.

Otras fuentes consultadas

Dependiendo de la variable analizada, se revisaron otros repositorios institucionales y plataformas públicas, entre ellos:

Visores ambientales y de riesgos (SIAC, IDEAM).

Mapas catastrales y rurales complementarios.

Documentos de planificación municipal y departamental.

Estas fuentes apoyaron la corrección de límites veredales, la validación de información geográfica y la caracterización integral del territorio rural.

# Establecer codificación regional para evitar errores de caracteres
Sys.setlocale("LC_ALL", "es_CO.UTF-8")
## [1] "LC_COLLATE=es_CO.UTF-8;LC_CTYPE=es_CO.UTF-8;LC_MONETARY=es_CO.UTF-8;LC_NUMERIC=C;LC_TIME=es_CO.UTF-8"
library(sf)
## Warning: package 'sf' was built under R version 4.5.2
## Linking to GEOS 3.13.1, GDAL 3.11.4, PROJ 9.7.0; sf_use_s2() is TRUE
library(ggplot2)
library(rnaturalearth)
library(rnaturalearthdata) # contiene directamente como objetos espaciales (sf o sp), listos para ser usados en grC!ficos o anC!lisis espaciales.
## 
## Adjuntando el paquete: 'rnaturalearthdata'
## The following object is masked from 'package:rnaturalearth':
## 
##     countries110
library(ggspatial)
## Warning: package 'ggspatial' was built under R version 4.5.2
library(viridis)
## Cargando paquete requerido: viridisLite
library(readxl)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(sf)

library(geodata)
## Cargando paquete requerido: terra
## terra 1.8.54
library(sf)
# =====================================================
# 1. Cargar librerías
# =====================================================
library(sf)
library(dplyr)
library(janitor)
## 
## Adjuntando el paquete: 'janitor'
## The following object is masked from 'package:terra':
## 
##     crosstab
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
# =====================================================
# 2. Establecer directorio de trabajo
# =====================================================
setwd("C:/Users/marce/OneDrive/Documentos/Pasantias/Mapa Por Vereda")

# =====================================================
# 3. Leer el archivo GeoJSON
# =====================================================
veredas_raw <- st_read("Veredas.geojson", quiet = TRUE) %>%
  janitor::clean_names()

# =====================================================
# 4. Filtrar únicamente CESAR → LA PAZ
# =====================================================
la_paz_veredas <- veredas_raw %>%
  filter(nom_dep == "CESAR",
         nomb_mpio == "LA PAZ")

# =====================================================
# 5. Mostrar resumen
# =====================================================
print(la_paz_veredas)
## Simple feature collection with 7 features and 31 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -73.62468 ymin: 9.757212 xmax: -72.8961 ymax: 10.46193
## Geodetic CRS:  WGS 84
##     fid name description timestamp begin  end altitude_mode tessellate extrude
## 1 25329 <NA>        <NA>      <NA>  <NA> <NA>          <NA>         NA      NA
## 2 25330 <NA>        <NA>      <NA>  <NA> <NA>          <NA>         NA      NA
## 3 25331 <NA>        <NA>      <NA>  <NA> <NA>          <NA>         NA      NA
## 4 25332 <NA>        <NA>      <NA>  <NA> <NA>          <NA>         NA      NA
## 5 25333 <NA>        <NA>      <NA>  <NA> <NA>          <NA>         NA      NA
## 6 25334 <NA>        <NA>      <NA>  <NA> <NA>          <NA>         NA      NA
## 7 25335 <NA>        <NA>      <NA>  <NA> <NA>          <NA>         NA      NA
##   visibility draw_order icon objectid dptompio codigo_ver nom_dep nomb_mpio
## 1         NA       <NA> <NA>    25297    20621   20621000   CESAR    LA PAZ
## 2         NA       <NA> <NA>    25298    20621   20621001   CESAR    LA PAZ
## 3         NA       <NA> <NA>    25299    20621   20621003   CESAR    LA PAZ
## 4         NA       <NA> <NA>    25300    20621   20621002   CESAR    LA PAZ
## 5         NA       <NA> <NA>    25301    20621   20621006   CESAR    LA PAZ
## 6         NA       <NA> <NA>    25302    20621   20621004   CESAR    LA PAZ
## 7         NA       <NA> <NA>    25303    20621   20621005   CESAR    LA PAZ
##             nombre_ver vigencia          fuente descripcio seudonimos   area_ha
## 1            MINGUILLO     INDF UNIDAD VICTIMAS       NULL          1 19186.425
## 2 LAGUNA DE LOS INDIOS     INDF UNIDAD VICTIMAS       NULL          1 20431.891
## 3            GUAYMARAL     INDF UNIDAD VICTIMAS       NULL          1 20035.757
## 4           EL MILAGRO     INDF UNIDAD VICTIMAS       NULL          1  4933.667
## 5         LOS ENCANTOS     INDF UNIDAD VICTIMAS       NULL          1 18582.329
## 6 SAN JOSÉ DEL ORIENTE     INDF UNIDAD VICTIMAS       NULL          1 10547.468
## 7         VARASBLANCAS     INDF UNIDAD VICTIMAS       NULL          1 13298.376
##   cod_dpto observacio conseje orig_fid shape_leng  shape_area          layer
## 1       20       <NA>       0    79299  0.9910862 0.015814428 CRVeredas_2020
## 2       20       <NA>       0    79300  1.1894926 0.016848368 CRVeredas_2020
## 3       20       <NA>       0    79301  0.6192170 0.016525543 CRVeredas_2020
## 4       20       <NA>       0    79302  0.3099386 0.004070969 CRVeredas_2020
## 5       20       <NA>       0    79303  0.7037340 0.015332662 CRVeredas_2020
## 6       20       <NA>       0    79304  0.5110420 0.008699765 CRVeredas_2020
## 7       20       <NA>       0    79305  0.8109525 0.010976151 CRVeredas_2020
##                                                                                                             path
## 1 C:/Users/matmo/OneDrive/Documentos/DANE/2024/Veredas/CRVeredas_2020_ShapeFile (1)/ShapeFile/CRVeredas_2020.shp
## 2 C:/Users/matmo/OneDrive/Documentos/DANE/2024/Veredas/CRVeredas_2020_ShapeFile (1)/ShapeFile/CRVeredas_2020.shp
## 3 C:/Users/matmo/OneDrive/Documentos/DANE/2024/Veredas/CRVeredas_2020_ShapeFile (1)/ShapeFile/CRVeredas_2020.shp
## 4 C:/Users/matmo/OneDrive/Documentos/DANE/2024/Veredas/CRVeredas_2020_ShapeFile (1)/ShapeFile/CRVeredas_2020.shp
## 5 C:/Users/matmo/OneDrive/Documentos/DANE/2024/Veredas/CRVeredas_2020_ShapeFile (1)/ShapeFile/CRVeredas_2020.shp
## 6 C:/Users/matmo/OneDrive/Documentos/DANE/2024/Veredas/CRVeredas_2020_ShapeFile (1)/ShapeFile/CRVeredas_2020.shp
## 7 C:/Users/matmo/OneDrive/Documentos/DANE/2024/Veredas/CRVeredas_2020_ShapeFile (1)/ShapeFile/CRVeredas_2020.shp
##                         geometry
## 1 MULTIPOLYGON (((-73.46676 9...
## 2 MULTIPOLYGON (((-73.14451 1...
## 3 MULTIPOLYGON (((-73.11209 1...
## 4 MULTIPOLYGON (((-73.07366 1...
## 5 MULTIPOLYGON (((-73.04679 1...
## 6 MULTIPOLYGON (((-72.95717 1...
## 7 MULTIPOLYGON (((-73.1694 10...
# Ver cuántas veredas quedaron
cat("Número de veredas encontradas en La Paz, Cesar:", nrow(la_paz_veredas), "\n")
## Número de veredas encontradas en La Paz, Cesar: 7
# =====================================================
# 6. Graficar para verificar
# =====================================================
#plot(st_geometry(la_paz_veredas),
#     col = "lightgreen",
 #    border = "darkgreen",
 #    main = "Veredas del Municipio de La Paz, IGAC")
library(sf)
library(dplyr)
library(rmapshaper)
library(janitor)
library(lwgeom)   # REQUERIDO PARA st_make_valid()
## Linking to liblwgeom 3.0.0beta1 r16016, GEOS 3.13.1, PROJ 9.7.0
## 
## Adjuntando el paquete: 'lwgeom'
## The following objects are masked from 'package:sf':
## 
##     st_minimum_bounding_circle, st_perimeter
# Desactivar s2 (IMPORTANTE)
sf::sf_use_s2(FALSE)
## Spherical geometry (s2) switched off
# Cambia el directorio
setwd("C:/Users/marce/OneDrive/Documentos/Pasantias/Mapa Por Vereda/poligonos de las veredas")

# Leer shapefile
La_Paz <- st_read("veredas_con_datos.shp", quiet = TRUE) %>% 
  janitor::clean_names()

# --- Reparación correcta ---

# 1. Reparar geometrías corruptas
La_Paz <- sf::st_make_valid(La_Paz)   # usa el del paquete sf

# 2. Quitar auto-intersecciones menores
La_Paz <- st_buffer(La_Paz, 0)
## dist is assumed to be in decimal degrees (arc_degrees).
# 3. Simplificar sin romper polígonos
La_Paz <- rmapshaper::ms_simplify(La_Paz, keep_shapes = TRUE)

# 4. Eliminar cualquier geometría que siga dañada
La_Paz <- La_Paz[st_is_valid(La_Paz), ]

# 5. Asegurar EPSG
La_Paz <- st_transform(La_Paz, 4326)
# Librerías
library(sf)
library(ggplot2)
library(patchwork)
## 
## Adjuntando el paquete: 'patchwork'
## The following object is masked from 'package:terra':
## 
##     area
library(viridis)

# ------------------------------
# 🔵 MAPA 1: Croquis por corregimiento (GGPlot)
# ------------------------------
mapa_correg <- ggplot() +
  geom_sf(data = La_Paz, aes(fill = crrgmnt), color = NA) +
 scale_fill_brewer(palette = "Blues", name = "Corregimiento") +
  labs(
    title = "Croquis por Corregimiento – La Paz, Cesar",
    caption = "Fuente: UMATA La Paz, 2025, creado desde cero"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    legend.position = "right",
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank()
  )

# ------------------------------
# 🔵 MAPA 2: Veredas sin líneas (GGPlot)
# ------------------------------
mapa_igac_gg <- ggplot() +
  geom_sf(data = la_paz_veredas,aes(fill = nombre_ver), color = NA) +
  scale_fill_brewer(palette = "Blues", name = "Corregimiento") +
  labs(
    title = "Croquis de los Corregimientos del Municipio de La Paz, IGAC",
    caption = "Fuente: IGAC – actualizado 2016"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank()
  )


# ------------------------------
# 🟩 🔗 JUNTAR MAPAS (lado a lado)
# ------------------------------
mapa_correg +
mapa_igac_gg

library(ggplot2)
library(patchwork)

# ------------------------------
# Guardar imagen 4K del mapa combinado
# ------------------------------
ggsave(
  filename = "mapas_lapaz_4k.png",
  plot = mapa_correg + mapa_igac_gg,
  width = 3840 / 300,    # ancho en pulgadas (4K)
  height = 2160 / 300,   # alto en pulgadas (4K)
  dpi = 300              # resolución alta
)

El análisis cartográfico desarrollado permitió comparar dos representaciones clave del territorio del municipio de La Paz, Cesar:
(1) el croquis de veredas clasificado por corregimientos construido a partir del insumo veredal consolidado, y
(2) la cartografía oficial proveniente del IGAC.

La primera figura evidencia un producto geográfico actualizado y adaptado específicamente al contexto de la UMATA, el cual permite visualizar con mayor claridad la organización territorial interna, resaltando la relación entre veredas y corregimientos. Este insumo fue posible gracias al proceso de verificación comunitaria y al trabajo de depuración de la base geoespacial realizado durante la práctica.

Por su parte, el mapa del IGAC refleja la estructura cartográfica oficial, aunque presenta discrepancias en límites y contornos respecto a la realidad veredal. La comparación entre ambos mapas muestra la necesidad de fortalecer la cartografía local, especialmente en un municipio donde no existían insumos veredales actualizados y donde la información oficial no siempre coincide con la organización territorial reconocida por la comunidad.

En conjunto, los resultados permiten concluir que la construcción del shapefile veredal no solo aporta precisión al diagnóstico agropecuario, sino que también constituye un avance significativo para la planificación territorial de la UMATA. Este insumo facilitará futuros análisis estadísticos y geoespaciales, y será un soporte fundamental para estudios, proyectos y procesos de toma de decisiones en el municipio de La Paz, Cesar.

3.3 Estructura del dataset final

El dataset final consolidado para el análisis agropecuario del municipio de La Paz, Cesar, está compuesto por información procedente de diversas fuentes institucionales, comunitarias y cartográficas. El objetivo de esta estructura fue integrar variables físicas, productivas, ambientales y socioeconómicas a nivel veredal, con el fin de construir una base analítica consistente y utilizable en los modelos estadísticos y geoespaciales del proyecto.

3.3.1 Diccionario preliminar de variables

A continuación, se describe el conjunto de variables disponibles en la base final (veredas_con_datos.shp). Este diccionario será depurado y ampliado en el documento final.

  • fuentes: Fuente principal de la información veredal.
  • tipo_su: Tipo de suelo reportado o dominante.
  • tempera: Temperatura promedio estimada para la vereda.
  • altitud: Altitud general reportada antes de normalizar.
  • precipi: Precipitación promedio (mm).
  • mpio_fi: Código o identificador municipal.
  • crrgmnt: Corregimiento al que pertenece la vereda.
  • area_ha: Área de la vereda en hectáreas.
  • morfolo: Morfología del terreno o tipo de relieve.
  • num_con: Número de contacto de JAC o representante veredal.
  • poblaci: Estimación de población rural.
  • cedula: Identificación del representante veredal.
  • humedad: Nivel de humedad predominante.
  • destino: Uso principal del suelo (agrícola, ganadero, mixto, conservación).
  • tipo_te: Tipo de asistencia técnica recibida.
  • alt_min y alt_max: Altitud mínima y máxima por vereda.
  • riesgo: Nivel de riesgo ambiental o productivo reportado.
  • cobertu: Tipo de cobertura predominante.
  • nom_mpi: Nombre del municipio.
  • nom_dpt: Nombre del departamento.
  • clima: Clasificación climática general.
  • vereda: Nombre oficial de la vereda.
  • cod_dan: Código DANE asociado.
  • preside: Nombre del presidente de la JAC.
  • producto_p: Producto agrícola principal.
  • producto_s: Producto secundario.
  • producto_t: Producto terciario.
  • producc: Nivel de producción (si aplica).
  • rendimi: Rendimiento estimado del cultivo principal.
  • sistema: Sistema productivo predominante.
  • precio: Precio promedio de venta reportado.
  • hogares: Número de hogares rurales.
  • asisten: Tipo o frecuencia de asistencia técnica.
  • acceso: Tipo de acceso vial a la vereda.
  • geometry: Geometría espacial asociada (polígonos).

Nota: Varios campos provienen de encuestas realizadas a presidentes de JAC, por lo que la calidad de la información depende de su disponibilidad, exactitud y grado de actualización.

3.3.2 Transformaciones aplicadas

Para garantizar consistencia estadística y cartográfica, se realizaron las siguientes transformaciones generales:

  • Estandarización de nombres de veredas, departamentos y corregimientos.
  • Conversión de variables numéricas (alt_min, alt_max, area_ha, tempera) a formato numérico.
  • Corrección de valores faltantes mediante revisión directa con JAC o fuentes institucionales.
  • Normalización de categorías (productos agrícolas, tipo de suelo, clima).
  • Eliminación de duplicados provenientes de registros institucionales anteriores.
  • Generación de nuevas variables derivadas (p. ej., rango altitudinal, índice de diversidad productiva).
  • Conversión del CRS original a EPSG:4326 para compatibilidad con herramientas SIG y Shiny.

3.3.3 Unificación con la cartografía oficial

La integración entre la base estadística y la cartografía veredal requirió:

  1. Construcción del shapefile oficial de veredas del municipio de La Paz, ante la ausencia de una cartografía validada por IGAC.
  2. Corrección manual de límites y polígonos mediante QGIS, tomando como referencia:
    • Planos veredales entregados por la UMATA.
    • Información espacial disponible bajo la pagina web.
  3. Unión de la base estadística con el “shapefile creado mediante el campo único vereda o, cuando no existía, mediante normalización del nombre de la vereda.
  4. Validación visual del ajuste espacial mediante inspección de polígonos y verificación con actores locales.

El resultado es una base espacial estandarizada, utilizable para análisis descriptivos, modelos geoespaciales y para la visualización interactiva desarrollada utilizando R, creando poligonos bajo un raster, que utilizamos en Qgis, bajo esa linea fue creado como se ve anteriormente, teniendo encuenta que se hizo lo anterior dicho.

3.4 Construcción del Shapefile Veredal

bajo las indicaciones esta fue la forma de creacion de dicho shapefile con copiar este codigo y teniendo encuenta el objetivi se creo los poligonos bajo la pagina web lo mas exacto.

# ============================================================
# Librerías necesarias
# ============================================================
library(shiny)
library(leaflet)
library(leaflet.extras)
library(sf)
library(dplyr)
library(DT)
library(terra)
library(elevatr)

# =======================
# Interfaz de usuario
# =========================
ui <- fluidPage(
  titlePanel("Mapa interactivo - Veredas, Altitud y Capas adicionales"),
  
  fluidRow(
    column(8,
           leafletOutput("mapa", height = "800px"),
           br(),
           downloadButton("descargar", "Descargar polígonos creados")
    ),
    column(4,
           h4("Información del polígono"),
           textInput("municipio", "Municipio:", ""),
           textInput("corregimiento", "Corregimiento:", ""),
           textInput("vereda", "Vereda:", ""),
           actionButton("guardar", "Guardar polígono"),
           br(), br(),
           h4("Datos guardados"),
           DTOutput("tabla")
    )
  )
)

# ============================
# Servidor
# ===========================
server <- function(input, output, session) {
  
  # 1️⃣ Cargar shapefiles base
  lapaz <- st_read("lapaz_corregimientos.shp", quiet = TRUE)
  capa_extra <- st_read("veredas_altitud.shp", quiet = TRUE)
  
  lapaz <- st_transform(lapaz, 4326)
  capa_extra <- st_transform(capa_extra, 4326)
  
  lapaz <- st_make_valid(lapaz)
  capa_extra <- st_make_valid(capa_extra)
  
  # 2️⃣ Inicializar mapa
  output$mapa <- renderLeaflet({
    leaflet() %>%
      addProviderTiles(providers$Esri.WorldImagery) %>%
      addPolygons(
        data = lapaz,
        color = "blue",
        weight = 2,
        opacity = 1,
        fillOpacity = 0.2,
        label = ~paste("Corregimiento:", CORREGI),
        group = "La Paz"
      ) %>%
      addPolygons(
        data = capa_extra,
        color = "green",
        weight = 2,
        opacity = 1,
        fillOpacity = 0.25,
        label = ~paste("Vereda:", vereda),
        group = "Capa adicional"
      ) %>%
      addDrawToolbar(
        targetGroup = "dibujos",
        polygonOptions = drawPolygonOptions(shapeOptions = drawShapeOptions(color = "red")),
        editOptions = editToolbarOptions(edit = TRUE, remove = TRUE)
      ) %>%
      addLayersControl(
        overlayGroups = c("La Paz", "Capa adicional", "dibujos"),
        options = layersControlOptions(collapsed = FALSE)
      )
  })
  
  # 3️⃣ Polígonos creados por el usuario
  poligonos <- reactiveVal(st_sf(geometry = st_sfc(), crs = 4326))
  nuevo_poligono <- reactiveVal(NULL)
  
  # 4️⃣ Al dibujar un polígono nuevo
  observeEvent(input$mapa_draw_new_feature, {
    feature <- input$mapa_draw_new_feature
    coords <- feature$geometry$coordinates[[1]]
    lon <- sapply(coords, function(x) x[[1]])
    lat <- sapply(coords, function(x) x[[2]])
    nuevo <- st_polygon(list(cbind(lon, lat))) |> st_sfc(crs = 4326) |> st_sf()
    nuevo_poligono(nuevo)
    
    try({
      dem <- get_elev_raster(nuevo, z = 10, src = "aws")
      dem_crop <- crop(rast(dem), vect(nuevo))
      alt_min <- min(values(dem_crop), na.rm = TRUE)
      alt_max <- max(values(dem_crop), na.rm = TRUE)
      
      nuevo_poligono(
        nuevo %>%
          mutate(
            alt_min = round(alt_min, 1),
            alt_max = round(alt_max, 1)
          )
      )
      
      showNotification(
        paste0("Altitud mínima: ", round(alt_min, 1),
               " m | máxima: ", round(alt_max, 1), " m"),
        type = "message"
      )
    }, silent = TRUE)
    
    showNotification("Polígono dibujado. Completa los datos y presiona 'Guardar'.",
                     type = "message")
  })
  
  # 5️⃣ Guardar polígono con atributos
  observeEvent(input$guardar, {
    req(nuevo_poligono())
    actual <- poligonos()
    
    nuevo <- nuevo_poligono() %>%
      mutate(
        municipio = input$municipio,
        corregimiento = input$corregimiento,
        vereda = input$vereda
      )
    
    poligonos(rbind(actual, nuevo))
    nuevo_poligono(NULL)
    
    updateTextInput(session, "municipio", value = "")
    updateTextInput(session, "corregimiento", value = "")
    updateTextInput(session, "vereda", value = "")
    
    showNotification("✅ Polígono guardado correctamente.", type = "message")
  })
  
  # 6️⃣ Mostrar tabla editable
  output$tabla <- renderDT({
    datatable(poligonos(), editable = TRUE)
  }, server = FALSE)
  
  # 7️⃣ Editar tabla manualmente
  observeEvent(input$tabla_cell_edit, {
    info <- input$tabla_cell_edit
    datos <- poligonos()
    datos[info$row, info$col] <- info$value
    poligonos(datos)
  })
  
  # 8️⃣ Descargar shapefile
  output$descargar <- downloadHandler(
    filename = function() { "veredas_altitud.zip" },
    content = function(file) {
      tmpdir <- tempdir()
      st_write(poligonos(), dsn = file.path(tmpdir, "veredas_altitud.shp"), delete_dsn = TRUE)
      files <- list.files(tmpdir, pattern = "veredas_altitud", full.names = TRUE)
      zip(file, files)
    },
    contentType = "application/zip"
  )
}

# Ejecutar la app
shinyApp(ui, server)

##Problema inicial: ausencia de cartografía oficial

La principal problemática identificada es la ausencia de una cartografía oficial actualizada y validada para el municipio de La Paz, Cesar. Esta carencia limita significativamente la posibilidad de comprender con precisión cómo está distribuido el territorio, pues la información existente suele estar dispersa, incompleta o únicamente disponible en documentos impresos, lo que impide una representación espacial confiable.

Durante el desarrollo de las pasantías en la UMATA, esta situación se evidenció especialmente en el análisis de la distribución de la producción agrícola. Sin una base cartográfica formal, estandarizada y georreferenciada, resulta difícil identificar zonas productivas, superponer información agropecuaria, evaluar el uso del suelo o planificar la intervención técnica en cada vereda o corregimiento.

La elaboración de una cartografía oficial constituye, por tanto, un paso fundamental para:

  • Ordenar y visualizar adecuadamente el territorio.
  • Comprender la distribución espacial de las actividades agrícolas.
  • Fortalecer la toma de decisiones basada en información precisa y verificable.
  • Facilitar la planeación de proyectos agropecuarios, tanto los que desarrolla la administración municipal como aquellos que puedan llegar al territorio a futuro.
  • Identificar áreas estratégicas para la implementación de mejores prácticas agrícolas.
  • Optimizar la focalización de recursos y asistencia técnica.

En este sentido, la construcción del insumo cartográfico no solo resuelve la necesidad inmediata de representación espacial, sino que también se convierte en una herramienta clave para el diseño, seguimiento y evaluación de estrategias orientadas al desarrollo agropecuario del municipio.

3.4.1 Proceso técnico

El proceso técnico para la construcción de la cartografía oficial del municipio de La Paz se desarrolló mediante una serie de etapas metodológicas que garantizaron la calidad geométrica y la validez territorial de la información generada. Estas fases integraron herramientas SIG, revisión técnica y la participación de las comunidades locales.

3.4.1.1 Construcción en QGIS

La elaboración inicial de la cartografía se realizó en R, donde se integraron diversas fuentes de información disponibles —mapas preliminares, límites administrativos y referencias espaciales— con el objetivo de construir una base geográfica unificada. En esta etapa se digitalizaron las veredas y sectores de interés, se estandarizaron los sistemas de coordenadas y se organizó la estructura de capas necesarias para el análisis territorial posterior.

3.4.1.2 Corrección de límites

Posteriormente, se llevó a cabo un proceso de corrección de límites, ajustando las geometrías para garantizar coherencia espacial entre veredas, corregimientos y el límite municipal. Esta fase incluyó la revisión de inconsistencias, la eliminación de superposiciones y la corrección de discontinuidades que pudieran afectar el análisis territorial y la interpretación de la información.

3.4.1.3 Revisión topológica

Una vez definidas las geometrías, se aplicaron reglas de topología en QGIS para detectar y corregir errores comunes como huecos, vértices mal conectados, polígonos duplicados o fronteras no coincidentes. La revisión topológica garantizó que la cartografía final cumpliera con estándares técnicos adecuados para futuros análisis espaciales, modelamientos y procesos de planificación.

3.4.1.4 Validación comunitaria con JAC

Finalmente, se realizó un proceso de validación comunitaria con las Juntas de Acción Comunal (JAC) de cada vereda. Esta etapa permitió contrastar la cartografía construida con el conocimiento territorial de los habitantes, corregir límites según la percepción comunitaria y confirmar la veracidad de la delimitación presentada. La participación de las JAC fue fundamental para asegurar que la cartografía reflejara fielmente la realidad territorial y contara con legitimidad social dentro del municipio.

3.4.2 Exportación final

Con esta linea de codigo ya se descarga en R, el shapefile directamente

# 4. Guardar el shapefile resultante
# st_write(shp_filtrado, "shapefile_filtrado.shp", delete_dsn = TRUE)

Aqui solo tenemos lo basico, como es el mapa pero vacio, sin datos lo cual debemos introducirle datos. los poligonos, municipio, corregimiento, vereda, minimo y maximo altitud como se muestra aqui abajo

# Leer shapefile
veredas <- st_read("shapefile_filtrado.shp", quiet = TRUE) %>% 
  janitor::clean_names()

names(veredas )
## [1] "alt_min"  "alt_max"  "municip"  "crrgmnt"  "vereda"   "geometry"

3.4.2.1 Estructura y atributos.

Ya aqui es la union de shapefile en conjunto con la base de datos de cada uno de los municipios lo cual se muestra de la siguiente manera.


library(readr)

datos <- read_delim("datos.txt", delim = "\t")

shp_final <- shp_union %>%
  left_join(datos, by = c("vereda"= "NOM_VERE" ))
names(shp_finL)
##  [1] "fuentes"    "tipo_su"    "tempera"    "altitud"    "precipi"   
##  [6] "mpio_fi"    "crrgmnt"    "area_ha"    "morfolo"    "num_con"   
## [11] "poblaci"    "cedula"     "humedad"    "destino"    "tipo_te"   
## [16] "alt_min"    "riesgo"     "alt_max"    "cobertu"    "municip"   
## [21] "nombre"     "nom_mpi"    "estado"     "cod_ver"    "nom_sub"   
## [26] "nom_dpt"    "clima"      "vereda"     "cod_dan"    "fuente"    
## [31] "preside"    "id_ubp"     "producto_p" "producc"    "producto_s"
## [36] "producto_t" "area_cu"    "rendimi"    "sistema"    "precio"    
## [41] "hogares"    "asisten"    "acceso"     "geometry"

4 Procesamiento Estadístico

4.1 Depuración de datos

La depuración de la base de datos constituyó un paso fundamental para garantizar la calidad y coherencia de la información utilizada en el análisis territorial. Este proceso incluyó:

4.1.1 Manejo de datos faltantes

Se identificaron y revisaron los registros con valores faltantes, evaluando su impacto sobre las variables clave del estudio. Dependiendo del caso, se aplicaron estrategias como: - Eliminación de registros incompletos cuando su proporción era mínima. - Imputación basada en valores coherentes con la distribución de los datos disponibles. - Revisión manual de registros inconsistentes a partir de fuentes secundarias o información suministrada por UMATA.

4.1.2 Estandarización de nombres y códigos

Con el fin de asegurar la correcta vinculación con la cartografía oficial y evitar duplicaciones, se realizó un proceso de estandarización que incluyó: - Normalización ortográfica de nombres de veredas, corregimientos y sectores productivos. - Homologación de códigos administrativos siguiendo la estructura utilizada por el municipio. - Corrección de inconsistencias generadas por variaciones en la digitación, abreviaturas o formatos no uniformes.

Estas acciones permitieron construir un conjunto de datos limpio, estructurado y apto para su posterior análisis espacial y estadístico.

4.2 Análisis exploratorio inicial

Distribuciones de temperatura, altitud, área, productos.

library(sf)
library(dplyr)
library(DT)

# 1. Cargar shapefile
La_Paz <- st_read("veredas_con_datos.shp")
## Reading layer `veredas_con_datos' from data source 
##   `C:\Users\marce\OneDrive\Documentos\Pasantias\Mapa Por Vereda\veredas_con_datos.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 75 features and 43 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: -73.6247 ymin: 9.757202 xmax: -72.89611 ymax: 10.46193
## Geodetic CRS:  WGS 84
# 2. Quitar geometría
datos <- La_Paz %>% st_drop_geometry()

# 3. Fórmula de temperatura
calcular_temp <- function(altitud) {
  30 - 0.006 * altitud
}

# 4. Construcción de tabla completa
tabla_temp <- datos %>%
  group_by(crrgmnt, vereda) %>%
  summarise(
    `Altitud m` = mean(alt_min, na.rm = TRUE),
    `Altitud M` = mean(alt_max, na.rm = TRUE),

    # === Productos (nombres reales en mayúsculas) ===
    Producto_Principal = first(PRODUCTO_P),
    Producto_Secundario = first(PRODUCTO_S),
    Producto_Tercero = first(PRODUCTO_T),
    Produccion = first(PRODUCC),

    # === Vías / Acceso ===
    Acceso = first(ACCESO_),

    # === Hogares ===
    Hogares = first(HOGARES),

    # === Presidente ===
    Presidente = first(PRESIDE),

    .groups = "drop"
  ) %>%
  mutate(
    `Temperatura m` = round(calcular_temp(`Altitud M`)),
    `Temperatura M` = round(calcular_temp(`Altitud m`))
  ) %>%
  rename(
    Corregimiento = crrgmnt,
    Vereda = vereda
  ) %>%
  arrange(Corregimiento, Vereda)

# 5. Mostrar tabla
datatable(
  tabla_temp,
  rownames = FALSE,
  options = list(
    pageLength = 15,
    autoWidth = TRUE
  )
)
# -----------------------------
# 0. Cargar librerías
# -----------------------------
library(sf)
library(dplyr)
library(tidyr)
## 
## Adjuntando el paquete: 'tidyr'
## The following object is masked from 'package:terra':
## 
##     extract
# -----------------------------
# 1. Asegurar que tu objeto La_Paz es sf
# -----------------------------
# (Tú ya lo cargaste antes, si no, cargar así:)
# La_Paz <- st_read("veredas_con_datos.shp")

# -----------------------------
# 2. Eliminar geometría del sf
# -----------------------------
veredas_df <- La_Paz %>% 
  st_drop_geometry()   # <- Esto elimina columnas geometry

# -----------------------------
# 3. Crear la tabla final
# -----------------------------
tabla <- veredas_df %>%
  arrange(crrgmnt, vereda) %>%     # Ordena por corregimiento y vereda
  group_by(crrgmnt) %>%            # Agrupa por corregimiento
  mutate(n = row_number()) %>%     # Crea índice interno
  ungroup() %>%
  select(n, crrgmnt, vereda) %>%   # Mantiene columnas relevantes
  pivot_wider(
    names_from = crrgmnt,          # Los corregimientos serán columnas
    values_from = vereda,          # Las veredas quedarán listadas abajo
    values_fill = ""               # Rellena vacíos con "" para mejor visualización
  )

# -----------------------------
# 4. Ver la tabla
# -----------------------------
tabla

4.2.1 descargar imagenes

library(dplyr)
library(tidyr)
library(ggplot2)
library(gridExtra)
library(sf)

# --------------------------------------------
# 1. Convertir tu sf a data frame (sin geometría)
# --------------------------------------------
veredas_df <- La_Paz |> 
  sf::st_drop_geometry()

# --------------------------------------------
# 2. Crear tabla estilo "corregimiento arriba, veredas abajo"
# --------------------------------------------
tabla <- veredas_df %>%
  arrange(crrgmnt, vereda) %>% 
  group_by(crrgmnt) %>% 
  mutate(n = row_number()) %>% 
  ungroup() %>%
  select(n, crrgmnt, vereda) %>%
  tidyr::pivot_wider(
    names_from = crrgmnt,
    values_from = vereda
  )

# --------------------------------------------
# 3. Convertir la tabla a formato para gridExtra
# --------------------------------------------
tabla_grafica <- tableGrob(tabla)

# --------------------------------------------
# 4. Guardar como imagen (PNG) con título
# --------------------------------------------
png("Tabla_Corregimientos_Veredas.png",
    width = 4000, height = 3000, res = 300)

grid::grid.newpage()
grid::grid.text(
  "Corregimientos del Municipio de La Paz y sus Veredas",
  x = 0.5, y = 0.95, gp = grid::gpar(fontsize = 28, fontface = "bold")
)
grid::grid.draw(tabla_grafica)

dev.off()

Tablas y gráficos descriptivos.

library(dplyr)
library(sf)
library(tidyr)
library(ggplot2)
library(stringr)

# Quitar geometría
datos <- La_Paz %>% st_drop_geometry()

# Convertir a formato largo con nombres REALES
cultivos_long <- datos %>%
  pivot_longer(
    cols = c(PRODUCTO_P, PRODUCTO_S, PRODUCTO_T),
    names_to = "categoria",
    values_to = "cultivo"
  ) %>%
  filter(
    !is.na(cultivo),
    cultivo != "SIN DATOS",
    cultivo != ""
  )

# Normalizar nombres de cultivos
cultivos_long <- cultivos_long %>%
  mutate(
    cultivo = str_to_lower(cultivo),
    cultivo = str_to_title(cultivo)
  )

# Contar cultivos por categoría
conteo_categorias <- cultivos_long %>%
  count(cultivo, categoria)

# Gráfica de barras apiladas
g2 <- ggplot(conteo_categorias, aes(x = cultivo, y = n, fill = categoria)) +
  geom_col() +
  scale_fill_manual(
    values = c(
      "PRODUCTO_P" = "#003366",
      "PRODUCTO_S" = "#336699",
      "PRODUCTO_T" = "#cce6ff"
    ),
    labels = c(
      "PRODUCTO_P" = "Primario",
      "PRODUCTO_S" = "Secundario",
      "PRODUCTO_T" = "Terciario"
    )
  ) +
  labs(
    title = "Cantidad de cultivos por categoría (Prim., Sec., Terc.)",
    x = "Cultivo",
    y = "Cantidad",
    fill = "Categoría"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

A partir del análisis preliminar, se observa que existe una distribución desigual de veredas entre los corregimientos. San José de Oriente y Varas Blancas concentran el mayor número, con 19 y 18 veredas respectivamente, lo que sugiere que poseen una mayor extensión territorial o una población más amplia y dispersa. Por el contrario, Guaymaral cuenta únicamente con 5 veredas, reflejando un territorio con menor división administrativa y posiblemente con menos presencia poblacional. Esta variación entre corregimientos evidencia diferencias que podrían influir en el acceso a servicios públicos, infraestructura y en las actividades productivas desarrolladas en cada zona.

En cuanto a la producción agrícola, los datos muestran una alta diversidad de cultivos distribuidos en categorías primarias, secundarias y terciarias. Esta variedad indica que los territorios no dependen exclusivamente de un solo cultivo, lo que favorece la estabilidad económica local y reduce riesgos ante cambios climáticos o fluctuaciones del mercado. Algunos cultivos presentan una mayor representación dentro de la categoría primaria, lo que evidencia su relevancia como base económica y alimentaria del territorio. La presencia de productos en categorías secundarias y terciarias sugiere que existen actividades adicionales orientadas al complemento económico y, en algunos casos, a la transformación productiva.

Asimismo, es posible inferir que aquellos corregimientos con mayor cantidad de veredas podrían tener un desarrollo agrícola más diversificado, debido a la mayor disponibilidad de tierras cultivables o a una mayor cantidad de familias productoras. En consecuencia, estas diferencias territoriales deben ser consideradas al momento de planificar estrategias de intervención institucional, asignación de recursos o programas de apoyo agrícola. Finalmente, los resultados permiten identificar zonas con mayor potencial productivo, así como otras que podrían requerir un acompañamiento prioritario para fortalecer su actividad económica y mejorar la calidad de vida de la población rural.

library(dplyr)
library(sf)
library(ggplot2)

# Base sin geometría
datos <- La_Paz %>% st_drop_geometry()

# Altitud promedio para clasificar la vereda
datos_alt <- datos %>%
  mutate(
    alt_prom = (alt_min + alt_max) / 2,
    rango_alt = cut(
      alt_prom,
      breaks = c(-Inf, 500, 1000, 1500, 2000, Inf),
      labels = c("0–500 m", "500–1000 m", "1000–1500 m", "1500–2000 m", ">2000 m")
    )
  )
a1 <- ggplot(datos_alt, aes(x = rango_alt)) +
  geom_bar(fill = "#336699") +
  geom_text(
    stat = "count",
    aes(label = ..count..),
    vjust = -0.5,
    size = 5
  ) +
  labs(
    title = "Cantidad de veredas por rango de altitud",
    x = "Rango de altitud (m)",
    y = "Número de veredas"
  ) +
  theme_minimal()
df_alt <- datos_alt %>%
  group_by(crrgmnt, rango_alt) %>%
  summarise(N = n(), .groups = "drop")
a2 <- ggplot(df_alt, aes(x = crrgmnt, y = N, fill = rango_alt)) +
  geom_bar(stat = "identity", color = "black") +
  scale_fill_manual(
    values = c(
      "0–500 m"      = "#bfbfbf",   # gris claro
      "500–1000 m"   = "#8da0c8",   # gris-azulado
      "1000–1500 m"  = "#5f85c8",   # azul medio
      "1500–2000 m"  = "#3b6bb2",   # azul intenso
      ">2000 m"      = "#1f4e8c"    # azul oscuro
    ),
    name = "Rango de Altitud"
  ) +
  labs(
    title = "Distribución de Veredas por Rango de Altitud",
    x = "Corregimiento",
    y = "Número de Veredas"
  ) +
  theme_minimal(base_size = 14) +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

El análisis de la distribución de veredas según rangos altitudinales evidencia que la mayor concentración se encuentra entre los 0 y 500 metros sobre el nivel del mar, con un total de 25 veredas. Esto confirma que buena parte del territorio analizado corresponde a zonas bajas, lo cual puede influir en factores como el clima, las dinámicas productivas y las condiciones de acceso a los servicios básicos. A medida que aumenta la altitud, la cantidad de veredas disminuye de manera variable, destacándose aún una presencia representativa en el rango mayor a 2000 metros, donde se registran 15 veredas. Lo anterior sugiere que las zonas de montaña también tienen un papel relevante en el poblamiento rural del municipio.

Al observar la distribución por corregimientos, se identifica que no todos los territorios presentan veredas en todos los rangos de altitud, lo que refleja diferencias en la configuración geográfica de cada uno. Corregimientos como San José de Oriente y Varas Blancas muestran una fuerte presencia en alturas superiores, lo que indica que su desarrollo rural está vinculado a territorios de montaña. Por el contrario, corregimientos como Minguillo y Guaymaral se ubican mayoritariamente en altitudes bajas, lo que podría asociarse a economías agrícolas diferentes y a una mayor accesibilidad territorial. Laguna de los Indios y Los Encantos presentan una distribución más equilibrada en los diferentes rangos, lo que sugiere una transición geográfica más amplia en sus áreas rurales.

Estos resultados permiten inferir que las características altitudinales juegan un papel fundamental en la planificación territorial, el uso del suelo y la vocación productiva de cada corregimiento. La diversidad de alturas implica también la necesidad de estrategias diferenciadas en asistencia técnica, infraestructura y manejo ambiental. Finalmente, la identificación de estas dinámicas preliminares ofrece una base para profundizar en la relación entre geografía, actividad económica y calidad de vida de la población rural en la región.

4.3 Métodos Estadísticos Avanzados

En esta sección se describen los métodos estadísticos avanzados empleados para el análisis integral de las veredas, sus condiciones productivas, ambientales y socioeconómicas. Estos procedimientos permiten identificar patrones, realizar comparaciones y obtener modelos explicativos útiles para la toma de decisiones de la UMATA.

4.3.1 Pruebas de hipótesis

Se aplicaron pruebas de hipótesis para contrastar diferencias significativas entre grupos de veredas o corregimientos. Entre las pruebas empleadas destacan:

\(\bullet\) Prueba t de Student para comparar medias de variables como altitud, productividad o número de hogares entre corregimientos.

\(\bullet\) Pruebas no paramétricas (Mann–Whitney y Kruskal–Wallis) cuando las distribuciones no cumplían supuestos de normalidad.

\(\bullet\) Prueba Chi-cuadrado para contrastar diferencias en la proporción de veredas por tipo de cultivo, sistema productivo o nivel de riesgo.

Estas pruebas permitieron verificar si las diferencias observadas en los datos son estadísticamente significativas o se deben al azar.

4.3.1.1 Prueba t de Student

library(dplyr)
library(purrr)
library(tidyr)
library(sf)

# Base con altitud promedio
datos <- La_Paz %>%
  st_drop_geometry() %>%
  mutate(alt_prom = (alt_min + alt_max) / 2) %>%
  filter(!is.na(alt_prom))

# Lista de corregimientos
cors <- unique(datos$crrgmnt)

# Crear todas las parejas posibles
pares <- t(combn(cors, 2)) %>% as.data.frame()
colnames(pares) <- c("cor1", "cor2")

# Aplicar t.test a cada par
resultado_t <- pares %>%
  mutate(
    t_test = pmap(
      list(cor1, cor2),
      ~ {
        g1 <- datos %>% filter(crrgmnt == ..1) %>% pull(alt_prom)
        g2 <- datos %>% filter(crrgmnt == ..2) %>% pull(alt_prom)

        if(length(g1) < 2 | length(g2) < 2){
          return(NA)   # evitar errores por pocas observaciones
        }

        broom::tidy(t.test(g1, g2))
      }
    )
  ) %>%
  unnest(t_test)

resultado_t
anova_alt <- aov(alt_prom ~ crrgmnt, data = datos)
summary(anova_alt)
##             Df   Sum Sq Mean Sq F value Pr(>F)    
## crrgmnt      5 39588216 7917643   37.23 <2e-16 ***
## Residuals   69 14674053  212667                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Los resultados de la prueba t-Student por pares (pairwise t-test) muestran comparaciones de altitud promedio entre todos los corregimientos del municipio. Cada fila corresponde a una comparación entre dos corregimientos, e incluye el valor de la diferencia de medias (estimate), la media de cada grupo (estimate1 y estimate2), el estadístico t (statistic), los grados de libertad ajustados (parameter), el p-value y el intervalo de confianza. Cuando el p-value es muy pequeño (por ejemplo 4.4e−08 o 1.2e−08), indica que las altitudes entre esos dos corregimientos son significativamente diferentes. En contraste, cuando el p-value es grande (por ejemplo 0.80 o 0.73), significa que no hay evidencia estadística para afirmar que sus altitudes difieren.

El número total de comparaciones depende del número de corregimientos analizados. Si hay 6 corregimientos, entonces existen 15 comparaciones posibles (combinatoria 6 choose 2 = 15). Si tu tabla muestra 12 o 15 filas, significa que realizó todas las comparaciones que tenían suficientes datos (algunas veredas pueden tener un solo dato y se excluyen). Esto explica por qué tu primer t-test falló: un corregimiento tenía una sola vereda, por eso decía “not enough ‘y’ observations”. El procedimiento automático elimina esos casos y solo calcula las comparaciones válidas.

El análisis ANOVA complementa la interpretación global. El modelo (F = 37.23, p < 2e−16) indica que, considerando simultáneamente todos los corregimientos, sí existen diferencias altamente significativas en la altitud promedio. El valor F tan alto y un p-value extremadamente pequeño señalan que la variación entre corregimientos es mucho mayor que la variación dentro de ellos. Esto confirma que la altitud es un factor diferenciador entre corregimientos, lo cual es relevante para UMATA porque determina variaciones productivas, climáticas y de aptitud del territorio.

4.3.2 Pruebas no paramétricas (Mann–Whitney y Kruskal–Wallis)

library(dplyr)
library(sf)

# Base
datos <- La_Paz %>% 
  st_drop_geometry() %>% 
  mutate(alt_prom = (alt_min + alt_max) / 2)

# Función para Wilcoxon entre TODOS los corregimientos
wilcox_all <- function(df) {
  corrs <- unique(df$crrgmnt)
  resultados <- data.frame()

  for (i in 1:(length(corrs)-1)) {
    for (j in (i+1):length(corrs)) {
      g1 <- df %>% filter(crrgmnt == corrs[i]) %>% pull(alt_prom)
      g2 <- df %>% filter(crrgmnt == corrs[j]) %>% pull(alt_prom)

      test <- wilcox.test(g1, g2)

      resultados <- rbind(resultados, data.frame(
        cor1 = corrs[i],
        cor2 = corrs[j],
        statistic = test$statistic,
        p.value = test$p.value,
        method = test$method
      ))
    }
  }
  return(resultados)
}

wilcox_resultados <- wilcox_all(datos)
## Warning in wilcox.test.default(g1, g2): cannot compute exact p-value with ties
## Warning in wilcox.test.default(g1, g2): cannot compute exact p-value with ties
## Warning in wilcox.test.default(g1, g2): cannot compute exact p-value with ties
## Warning in wilcox.test.default(g1, g2): cannot compute exact p-value with ties
## Warning in wilcox.test.default(g1, g2): cannot compute exact p-value with ties
## Warning in wilcox.test.default(g1, g2): cannot compute exact p-value with ties
## Warning in wilcox.test.default(g1, g2): cannot compute exact p-value with ties
wilcox_resultados
kruskal.test(alt_prom ~ crrgmnt, data = datos)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  alt_prom by crrgmnt
## Kruskal-Wallis chi-squared = 54.173, df = 5, p-value = 1.931e-10

Las pruebas de Mann–Whitney (o Wilcoxon de rangos) se aplicaron para comparar la altitud promedio entre corregimientos sin asumir normalidad en los datos. Cada fila del análisis representa una comparación par a par entre dos corregimientos, mostrando el estadístico W y su respectivo p-valor. Valores de p < 0.05 indican diferencias estadísticamente significativas entre las dos localidades analizadas. De esta forma, se identificó qué corregimientos presentan distribuciones altitudinales distintas entre sí sin necesidad de suponer homogeneidad de varianzas o distribución normal.

Los resultados muestran que algunas comparaciones no presentan diferencias significativas, por ejemplo: Guaymaral vs Lagunas de los Indios (p = 0.159) o San José de Oriente vs Los Encantos (p = 0.967). Esto significa que, aunque existan diferencias en promedio, estas no son suficientemente grandes respecto a la variabilidad interna de las veredas para ser consideradas estadísticamente distintas. Por el contrario, comparaciones como Varas Blanca vs San José de Oriente, Varas Blanca vs Los Encantos y Laguna de los Indios vs Minguillo presentan valores p muy pequeños (< 0.001), lo cual indica diferencias marcadas en la distribución de altitudes entre estos corregimientos.

Finalmente, la prueba global de Kruskal–Wallis (χ² = 54.17, p = 1.93e-10) confirma que al menos un corregimiento difiere significativamente de los demás en su distribución de altitudes. Este resultado valida el uso posterior de comparaciones múltiples para identificar qué pares generan esas diferencias. Mientras que Kruskal–Wallis muestra una diferencia general entre los seis corregimientos, el análisis par a par permite localizar específicamente cuáles corregimientos presentan altitudes significativamente distintas y cuáles comparten patrones similares. Esto aporta una visión integral para describir la variabilidad altitudinal dentro del territorio analizado.

4.3.3 Prueba Chi-cuadrado

chi_variable <- function(var){
  tabla <- table(datos$crrgmnt, datos[[var]])
  resultado <- chisq.test(tabla)

  list(
    Variable = var,
    Tabla = tabla,
    Chi_Square = resultado$statistic,
    gl = resultado$parameter,
    p_value = resultado$p.value
  )
}
vars_chi <- c("PRODUCTO_P", "PRODUCTO_S", "PRODUCTO_T",
              "RIESGO_", "SISTEMA", "ACCESO_", "CLIMA")

resultados <- lapply(vars_chi, chi_variable)
## Warning in stats::chisq.test(x, y, ...): Chi-squared approximation may be
## incorrect
## Warning in stats::chisq.test(x, y, ...): Chi-squared approximation may be
## incorrect
## Warning in stats::chisq.test(x, y, ...): Chi-squared approximation may be
## incorrect
## Warning in stats::chisq.test(x, y, ...): Chi-squared approximation may be
## incorrect
## Warning in stats::chisq.test(x, y, ...): Chi-squared approximation may be
## incorrect
## Warning in stats::chisq.test(x, y, ...): Chi-squared approximation may be
## incorrect
## Warning in stats::chisq.test(x, y, ...): Chi-squared approximation may be
## incorrect
resultados
## [[1]]
## [[1]]$Variable
## [1] "PRODUCTO_P"
## 
## [[1]]$Tabla
##                       
##                        AGUACATE AREA PROTEGIDA CACAO CAFÉ CEBOLLA MORA platano
##   Guaymaral                   0              0     0    1       0    2       0
##   Laguna de los Indios        0              0     1    2       0    0       0
##   Los Encantos                0              0     1    2       0    1       0
##   Minguillo                   0              0     1    0       0    0       0
##   San Jose De Oriente         1              1     3    6       1    1       0
##   Varas Blanca                0              0     0    0       0    0       1
##                       
##                        SIN DATOS YUCA ZONA INDIGENA ZONA PROTEGIDA
##   Guaymaral                    0    0             0              0
##   Laguna de los Indios         1    0             1              2
##   Los Encantos                 0    0             0              0
##   Minguillo                    0    4             0              0
##   San Jose De Oriente          0    0             0              0
##   Varas Blanca                 0    1             0              0
## 
## [[1]]$Chi_Square
## X-squared 
##  71.27639 
## 
## [[1]]$gl
## df 
## 50 
## 
## [[1]]$p_value
## [1] 0.02567211
## 
## 
## [[2]]
## [[2]]$Variable
## [1] "PRODUCTO_S"
## 
## [[2]]$Tabla
##                       
##                        AGUACATE AREA PROTEGIDA CACAO CAFÉ CEBOLLA LULO melon
##   Guaymaral                   1              0     0    0       0    1     0
##   Laguna de los Indios        0              0     0    0       0    0     0
##   Los Encantos                2              0     1    1       0    0     0
##   Minguillo                   1              0     0    0       0    0     0
##   San Jose De Oriente         3              1     1    2       1    0     0
##   Varas Blanca                0              0     0    0       0    0     1
##                       
##                        MELON MORA PLATANO SIN DATOS TOMATE DE ARBOL YUCA
##   Guaymaral                0    0       0         0               1    0
##   Laguna de los Indios     0    1       2         1               0    0
##   Los Encantos             0    0       0         0               0    0
##   Minguillo                1    0       3         0               0    0
##   San Jose De Oriente      0    2       3         0               0    0
##   Varas Blanca             0    0       0         0               0    1
##                       
##                        ZONA INDIGENA ZONA PROTEGIDA
##   Guaymaral                        0              0
##   Laguna de los Indios             1              2
##   Los Encantos                     0              0
##   Minguillo                        0              0
##   San Jose De Oriente              0              0
##   Varas Blanca                     0              0
## 
## [[2]]$Chi_Square
## X-squared 
##  94.94158 
## 
## [[2]]$gl
## df 
## 70 
## 
## [[2]]$p_value
## [1] 0.02533131
## 
## 
## [[3]]
## [[3]]$Variable
## [1] "PRODUCTO_T"
## 
## [[3]]$Tabla
##                       
##                        AGUACATE AREA PROTEGIDA CAFÉ CILANTRO FRESA LULO MELON
##   Guaymaral                   0              0    1        0     0    1     0
##   Laguna de los Indios        1              0    0        0     0    0     0
##   Los Encantos                2              0    1        0     0    0     0
##   Minguillo                   0              0    0        0     0    0     1
##   San Jose De Oriente         3              1    1        1     1    2     0
##   Varas Blanca                0              0    0        0     0    0     0
##                       
##                        MORA PLATANO sandia SANDIA SIN DATOS TOMATE
##   Guaymaral               1       0      0      0         0      0
##   Laguna de los Indios    0       1      0      0         1      0
##   Los Encantos            0       1      0      0         0      0
##   Minguillo               0       1      0      3         0      0
##   San Jose De Oriente     0       2      0      0         0      1
##   Varas Blanca            0       0      2      0         0      0
##                       
##                        TOMATE DE ARBOL YUCA ZONA INDIGENA ZONA PROTEGIDA
##   Guaymaral                          0    0             0              0
##   Laguna de los Indios               0    1             1              1
##   Los Encantos                       0    0             0              0
##   Minguillo                          0    0             0              0
##   San Jose De Oriente                1    0             0              0
##   Varas Blanca                       0    0             0              0
##                       
##                        ZONA PROTEGINDA
##   Guaymaral                          0
##   Laguna de los Indios               1
##   Los Encantos                       0
##   Minguillo                          0
##   San Jose De Oriente                0
##   Varas Blanca                       0
## 
## [[3]]$Chi_Square
## X-squared 
##  107.1668 
## 
## [[3]]$gl
## df 
## 85 
## 
## [[3]]$p_value
## [1] 0.05245135
## 
## 
## [[4]]
## [[4]]$Variable
## [1] "RIESGO_"
## 
## [[4]]$Tabla
##                       
##                        leve
##   Guaymaral               0
##   Laguna de los Indios    0
##   Los Encantos            0
##   Minguillo               0
##   San Jose De Oriente     0
##   Varas Blanca           16
## 
## [[4]]$Chi_Square
## X-squared 
##        80 
## 
## [[4]]$gl
## df 
##  5 
## 
## [[4]]$p_value
## [1] 8.391825e-16
## 
## 
## [[5]]
## [[5]]$Variable
## [1] "SISTEMA"
## 
## [[5]]$Tabla
##                       
##                        GRAVEDAD Riego por Gravedad
##   Guaymaral                   3                  0
##   Laguna de los Indios        3                  0
##   Los Encantos                4                  0
##   Minguillo                   1                  0
##   San Jose De Oriente        11                  0
##   Varas Blanca                0                 16
## 
## [[5]]$Chi_Square
## X-squared 
##        38 
## 
## [[5]]$gl
## df 
##  5 
## 
## [[5]]$p_value
## [1] 3.773239e-07
## 
## 
## [[6]]
## [[6]]$Variable
## [1] "ACCESO_"
## 
## [[6]]$Tabla
##                       
##                        vial terciaria VIAL TERCIARIA VIAL TERCIARIO
##   Guaymaral                         3              0              0
##   Laguna de los Indios              2              0              5
##   Los Encantos                      1              3              0
##   Minguillo                         2              3              0
##   San Jose De Oriente               5              6              2
##   Varas Blanca                     16              0              0
## 
## [[6]]$Chi_Square
## X-squared 
##  43.19165 
## 
## [[6]]$gl
## df 
## 10 
## 
## [[6]]$p_value
## [1] 4.595573e-06
## 
## 
## [[7]]
## [[7]]$Variable
## [1] "CLIMA"
## 
## [[7]]$Tabla
##                       
##                        Tropical seco cálido (Aw?BSh)
##   Guaymaral                                        0
##   Laguna de los Indios                             0
##   Los Encantos                                     0
##   Minguillo                                        0
##   San Jose De Oriente                              0
##   Varas Blanca                                    16
## 
## [[7]]$Chi_Square
## X-squared 
##        80 
## 
## [[7]]$gl
## df 
##  5 
## 
## [[7]]$p_value
## [1] 8.391825e-16

Las pruebas Chi-cuadrado aplicadas a las variables categóricas permitieron evaluar si la distribución de categorías (por ejemplo, cultivos principales, secundarios, terciarios, tipo de riesgo, sistema de riego, acceso vial o clima) es independiente del corregimiento al que pertenece cada vereda. En la mayoría de los casos, los valores de p obtenidos fueron muy pequeños (p < 0.05), lo que indica que sí existen diferencias estadísticamente significativas entre corregimientos respecto a estas características. Esto significa que la selección de cultivos, las condiciones de riesgo, los sistemas productivos o las características climáticas no se distribuyen al azar, sino que varían claramente entre corregimientos, lo cual refleja patrones territoriales, ambientales y productivos específicos.

En algunos casos particulares, como PRODUCTO_T (p ≈ 0.052), la evidencia es menos contundente, situándose cerca del umbral de significancia, lo que sugiere que la diferencia entre corregimientos es moderada pero no tan marcada. Otros resultados, como RIESGO_ y CLIMA, muestran valores de Chi-cuadrado extremadamente altos y p-values casi nulos, indicando diferencias rotundas entre corregimientos: por ejemplo, Varas Blanca concentra todas las veredas con riesgo o clima categorizado, mientras que los demás corregimientos no presentan registros clasificados en esas categorías. En conjunto, las pruebas Chi-cuadrado muestran que la estructura espacial del territorio influye notablemente en los sistemas de producción, las condiciones ambientales y las características socioeconómicas de las veredas.

4.4 Pruebas de hipótesis.

Hipótesis 5 – Relación entre altitud y productividad

H₀: La altitud no influye en la hogares agrícola. H₁: La altitud sí influye en la hogares agrícola.

library(dplyr)
library(sf)

# El objeto es La_Paz (tu shapefile cargado)
datos <- La_Paz %>%
  st_drop_geometry()

# Convertir todas las columnas que sean números posibles
datos_num <- datos %>%
  mutate(across(everything(), ~ suppressWarnings(as.numeric(.x))))
library(dplyr)

datos_reg <- datos_num %>%
  select(ALTITUD, HOGARES, TEMPERA) %>%      # solo las variables necesarias
  mutate(
    ALTITUD = as.numeric(ALTITUD),
    HOGARES = as.numeric(HOGARES),
    TEMPERA = as.numeric(TEMPERA)
  ) %>%
  filter(!is.na(ALTITUD), !is.na(HOGARES), !is.na(TEMPERA))  # eliminar NA solo de estas 2
modelo_alt_hog <- lm(HOGARES ~ ALTITUD + TEMPERA, data = datos_reg)
summary(modelo_alt_hog)
## 
## Call:
## lm(formula = HOGARES ~ ALTITUD + TEMPERA, data = datos_reg)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -48.49 -22.26  -5.60  13.26  91.22 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.816e+01  1.739e+02  -0.104    0.918
## ALTITUD      9.979e-05  2.008e-02   0.005    0.996
## TEMPERA      2.777e+00  5.297e+00   0.524    0.604
## 
## Residual standard error: 33.56 on 29 degrees of freedom
## Multiple R-squared:  0.08007,    Adjusted R-squared:  0.01663 
## F-statistic: 1.262 on 2 and 29 DF,  p-value: 0.2982

Se ajustó un modelo de regresión lineal múltiple para evaluar si la altitud y la temperatura tienen un efecto significativo sobre el número de hogares registrados por vereda. El modelo utilizó como variables dependientes HOGARES, y como variables explicativas ALTITUD y TEMPERA, obteniendo los siguientes resultados generales.

Los residuos del modelo presentan una variabilidad moderada (desviación estándar ≈ 33.56), distribuyéndose de manera relativamente simétrica alrededor de cero, lo que sugiere un ajuste razonable, aunque con alta dispersión. Sin embargo, el análisis de los coeficientes indica que ninguna de las variables explicativas resulta estadísticamente significativa. En particular, la variable ALTITUD muestra un coeficiente extremadamente pequeño (β = 0.000099), con un valor p = 0.996, lo que implica que la altitud no tiene relación lineal con el número de hogares. Del mismo modo, TEMPERA muestra un valor p = 0.604, lo que indica que la temperatura tampoco influye de manera significativa sobre la variable hogares.

El coeficiente de determinación (R² = 0.080) señala que solo el 8 % de la variabilidad en el número de hogares es explicada por altitud y temperatura. El R² ajustado, aún más bajo (0.016), confirma que el modelo tiene una capacidad explicativa muy limitada. El estadístico F del modelo (F = 1.262; p = 0.298) también sugiere que, en conjunto, las variables independientes no mejoran de forma significativa la predicción de hogares en comparación con un modelo sin predictores.

En conclusión, se falla en rechazar la hipótesis nula (H₀): según este modelo, la altitud no influye significativamente en el número de hogares de las veredas del municipio. Esto sugiere que otros factores —sociales, geográficos, históricos o económicos— podrían explicar mejor la distribución de hogares, por lo que sería conveniente considerar modelos ampliados o incluir otras variables relevantes disponibles en la base de datos.

library(ggplot2)

ggplot(datos_reg, aes(x = ALTITUD, y = HOGARES)) +
  geom_point() +
  geom_smooth(method = "lm", se = TRUE) +
  labs(
    title = "Relación entre Altitud con tempertura  y Número de Hogares",
    x = "Altitud (m)",
    y = "Número de hogares"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

El análisis de la relación entre la altitud y el número de hogares muestra una tendencia moderadamente negativa: a medida que aumenta la altura sobre el nivel del mar, el número de hogares tiende a disminuir. Aunque existe una variabilidad considerable en los datos, el comportamiento general indica que las veredas ubicadas en zonas más elevadas tienden a presentar menor concentración poblacional. Esto puede explicarse por las condiciones propias de la montaña, donde los climas más fríos, la mayor pendiente del terreno y el acceso limitado a servicios, infraestructura y vías de comunicación generan un menor atractivo para el asentamiento humano. En contraste, las veredas situadas en altitudes bajas mantienen mayor densidad de hogares, probablemente debido a mejores condiciones de accesibilidad, desarrollo agrícola más intensivo y cercanía a centros de comercio o actividades económicas. En este sentido, la altitud se configura como un factor geográfico determinante en la distribución de la población rural, pudiendo ser un elemento clave para orientar políticas públicas relacionadas con inversión social, infraestructura y planificación del territorio.

4.5 Indicadores estadísticos relevantes para la UMATA

A partir del análisis estadístico realizado sobre las veredas y corregimientos del municipio de La Paz, se identificaron varios indicadores clave que pueden orientar la toma de decisiones de la UMATA en materia de planificación rural, evaluación productiva y gestión del riesgo agropecuario.

4.5.0.1 Variabilidad altitudinal y sus implicaciones productivas

Los análisis de altitud muestran una amplia variabilidad entre las veredas, con rangos que superan los 3.000 metros. Este gradiente altitudinal está vinculado a cambios en variables agroclimáticas como temperatura y humedad, lo cual determina la aptitud agrícola de cada zona. Aunque la regresión aplicada no mostró efecto estadísticamente significativo de la altitud sobre el número de hogares (p > 0.05), el indicador sigue siendo relevante para definir zonas de vida y potenciales productivos.

4.5.0.2 Composición demográfica rural

La variable Hogares evidencia fuertes diferencias entre corregimientos. Algunos poseen concentraciones altas de población rural, mientras que otros están compuestos por asentamientos dispersos. Este indicador es fundamental para la UMATA, pues define la demanda de asistencia técnica, la priorización de programas y los costos logísticos de intervención en el territorio.

4.5.0.3 Condiciones agroclimáticas locales

Temperatura, humedad y altitud permiten caracterizar las condiciones agroecológicas. Aunque en el modelo de regresión ninguna resultó significativa para predecir el número de hogares, sí constituyen insumos esenciales para:

  • Zonificación agrícola.
  • Identificación de riesgo climático.
  • Selección de cultivos adecuados por piso térmico.

Estos indicadores tienen relevancia estratégica para la planificación de la producción y el acompañamiento técnico.

4.5.0.4 Resultados de pruebas de hipótesis

Las pruebas no paramétricas (Mann–Whitney y Kruskal–Wallis) mostraron diferencias significativas entre corregimientos para variables como altitud y características productivas. Esto confirma que el territorio es heterogéneo y que la UMATA debe diseñar estrategias diferenciadas según cada zona.

4.5.0.5 Indicadores productivos

Aunque la base de datos presenta vacíos en variables como rendimiento y producción, se identifican:

  • Áreas cultivadas muy variables entre veredas.
  • Presencia de múltiples productos agrícolas principales, secundarios y terciarios, lo cual evidencia sistemas de producción diversificados.
  • Diferencias claras por corregimiento en el tipo de sistemas productivos y manejo tecnológico.

Estos indicadores permiten priorizar asistencia técnica según rubro, fortalecer cadenas de valor y orientar políticas de sostenibilidad productiva.

4.5.0.6 Indicadores de riesgo rural

Variables como cobertura, morfología, riesgo, acceso, y fuentes de agua ayudan a identificar la vulnerabilidad productiva y socioambiental de cada vereda. La UMATA puede emplear estos indicadores para:

  • Programas de mitigación de riesgo agropecuario.
  • Mejoramiento de infraestructura rural.
  • Gestión de recursos hídricos.

4.5.1 Conclusión general

Los indicadores estadísticos analizados ofrecen una visión integral del territorio rural del municipio. Aunque los modelos de regresión no mostraron relaciones significativas entre variables agroclimáticas y hogares, las pruebas de hipótesis revelaron diferencias importantes entre corregimientos. Estos resultados resaltan que la UMATA debe trabajar con enfoques territorializados, priorizando zonas según su altitud, capacidad productiva, número de hogares, y vulnerabilidad agroclimática. La información obtenida cons

4.6 Visualización

library(leaflet)
library(sf)
library(dplyr)

# ============================================================
# 📌 Ruta del shapefile (ajusta según tu PC)
# ============================================================
BASE_DIR <- "C:/Users/marce/OneDrive/Documentos/Pasantias/Mapa Por Vereda"
SHP_BASE_PATH <- file.path(BASE_DIR, "poligonos de las veredas", "veredas_con_datos.shp")

# ============================================================
# 📌 Cargar shapefile
# ============================================================
shp <- st_read(SHP_BASE_PATH, quiet = TRUE)

# ============================================================
# 📌 Crear POPUP con los datos reales del shapefile
# ============================================================
shp <- shp %>%
  mutate(
    popup_info = paste0(
      "<b>Vereda:</b> ", vereda, "<br>",
      "<b>Corregimiento:</b> ", crrgmnt, "<br>",
      "<b>Área (ha):</b> ", AREA_HA, "<br>",
      "<b>Altitud mínima:</b> ", alt_min, " m<br>",
      "<b>Altitud máxima:</b> ", alt_max, " m<br>",
      "<b>Temperatura (°C):</b> ", TEMPERA, "<br>",
      "<b>Producto principal:</b> ", PRODUCTO_P, "<br>",
      "<b>Producto secundario:</b> ", PRODUCTO_S, "<br>",
      "<b>Producto terciario:</b> ", PRODUCTO_T, "<br>",
      "<b>Hogares rurales:</b> ", HOGARES
    )
  )

# ============================================================
# 🌍 MAPA SOLO DE VEREDAS
# ============================================================
mapa_veredas <- leaflet(shp) %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "Satélite") %>%
  addProviderTiles(providers$CartoDB.Positron, group = "Base clara") %>%

  addPolygons(
    color = "darkgreen",
    weight = 2,
    opacity = 1,
    fillOpacity = 0.35,
    fillColor = "lightgreen",
    label = ~vereda,
    popup = ~popup_info,
    group = "Veredas",
    highlightOptions = highlightOptions(
      color = "orange",
      weight = 4,
      bringToFront = TRUE
    )
  ) %>%

  addLayersControl(
    baseGroups = c("Satélite", "Base clara"),
    overlayGroups = c("Veredas"),
    options = layersControlOptions(collapsed = FALSE)
  )

# Mostrar mapa
mapa_veredas

5 Conclusión

El desarrollo del presente trabajo permitió demostrar la importancia del uso integrado de herramientas estadísticas y geoespaciales para fortalecer la gestión agropecuaria en el municipio de La Paz, Cesar. A partir de la recopilación, depuración y organización de información institucional —combinada con la construcción de cartografía propia— fue posible consolidar una base territorial veredal que no existía previamente y que constituye un insumo fundamental para la planificación local.

La elaboración del shapefile oficial de veredas y su comparación con los insumos del IGAC evidenciaron inconsistencias históricas en la delimitación territorial, lo cual justificó la necesidad de crear una cartografía ajustada a la realidad socioterritorial del municipio. El croquis final elaborado en R, que contrapone los corregimientos y veredas según la información validada con Juntas de Acción Comunal, permitió visualizar con mayor precisión la estructura territorial y facilitar la interpretación espacial de los datos.

En el proceso de recolección y validación se identificaron dificultades importantes, como la falta de registros actualizados, la escasa disponibilidad de información en algunas JAC, la desconfianza de ciertos líderes comunales y las limitaciones de comunicación por la ausencia de señal en zonas rurales dispersas. Estas situaciones resaltan la necesidad de fortalecer los sistemas locales de información, así como los canales institucionales para el reporte y actualización de datos comunitarios.

El análisis estadístico aplicado a la base consolidada permitió caracterizar aspectos productivos, sociales y ambientales de las veredas, aportando evidencia concreta sobre dinámicas agrícolas, disponibilidad de recursos, condiciones del territorio y necesidades de asistencia técnica. La integración del análisis geoespacial permitió complementar estos hallazgos, generando mapas temáticos y comparativos que facilitan la toma de decisiones en materia de planificación agropecuaria, diseño de proyectos y focalización de servicios.

En conjunto, los resultados obtenidos demuestran que la combinación de estadística, SIG y validación comunitaria constituye una estrategia eficaz para mejorar la gestión institucional de la UMATA. El proyecto no solo entrega una cartografía depurada y una base de datos robusta, sino también una metodología replicable para futuras actualizaciones. Finalmente, este trabajo aporta herramientas concretas que fortalecen la capacidad del municipio para planificar, evaluar y priorizar intervenciones en el territorio, contribuyendo a una gestión pública más informada, eficiente y ajustada a las realidades rurales de La Paz, Cesar.

6 Discusión

Los resultados obtenidos en este proyecto permiten reflexionar sobre el estado actual de la información agropecuaria y territorial del municipio de La Paz, Cesar, así como sobre los retos que enfrenta la UMATA en la consolidación de un sistema de información veredal robusto y confiable. El proceso de integración entre datos estadísticos y cartografía rural evidenció vacíos históricos en la disponibilidad de información oficial, especialmente en lo relacionado con la delimitación precisa de veredas y la caracterización socio-productiva de sus habitantes.

El análisis espacial permitió visualizar con claridad la heterogeneidad territorial existente entre los corregimientos, así como las diferencias en condiciones ambientales, distribución de cultivos y acceso a asistencia técnica. Estas variaciones territoriales se vuelven especialmente relevantes al momento de priorizar proyectos agropecuarios, asignar recursos o diseñar estrategias de intervención institucional. La construcción del shapefile veredal —un insumo inexistente previamente— se convierte en un aporte central, no solo para el presente trabajo, sino para los procesos futuros de planificación municipal.

En el trabajo evidencia dificultades estructurales relacionadas con el acceso a la información comunitaria. La limitada conectividad de algunas veredas, la falta de registros actualizados y la desconfianza inicial de ciertos líderes comunales ante fenómenos como la extorsión, influyeron en el ritmo del levantamiento de datos. Aun así, la participación de las Juntas de Acción Comunal contribuyó de manera decisiva a la validación de la base de datos y a la comprensión de la dinámica productiva local desde una perspectiva social.

Desde el punto de vista estadístico, la integración de métodos descriptivos con visualización espacial permitió obtener una lectura más completa del territorio, superando enfoques tradicionales que analizan los datos únicamente de manera tabulada. Esto refuerza la importancia de utilizar metodologías mixtas en contextos rurales, especialmente en municipios donde los sistemas de información institucional son fragmentados o incompletos.

generalmente , los hallazgos muestran que la gestión agropecuaria del municipio se beneficia significativamente cuando la información está organizada, validada y representada espacialmente. El trabajo realizado demuestra que la articulación entre análisis estadístico y cartografía no solo mejora la comprensión del territorio, sino que también fortalece la capacidad de UMATA para planificar, evaluar y priorizar intervenciones de manera más estratégica y sustentada en evidencia.

7 Reflexiones

El desarrollo de este proyecto evidenció la importancia de contar con información estadística y geoespacial actualizada para comprender la realidad agropecuaria del municipio de La Paz. La integración entre bases de datos veredales, registros institucionales y cartografía oficial permitió construir una visión más precisa de la distribución territorial, las dinámicas productivas y las condiciones técnicas del territorio.

El trabajo también puso de manifiesto que, aunque la UMATA posee información valiosa, esta se encontraba dispersa, sin estandarización y con vacíos geográficos importantes. La consolidación del shapefile veredal y la organización de la base de datos permitieron superar estas limitaciones, fortaleciendo la capacidad analítica y operativa de la entidad.

Asimismo, la experiencia demostró que la articulación entre métodos estadísticos, herramientas SIG y conocimiento local proporcionado por los líderes comunitarios es esencial para construir diagnósticos territoriales confiables. Este proceso resaltó la necesidad de fortalecer las capacidades técnicas del municipio en gestión de datos y análisis espacial para mejorar la formulación de estrategias rurales.

8 Propuestas Futuras

Con base en los avances logrados, se plantean una serie de acciones que pueden potenciar el uso de la información construida y ampliar su impacto institucional:

  1. Actualización periódica de la base de datos veredal
    Establecer un protocolo anual o semestral de actualización que incluya visitas territoriales, recolección de datos productivos y verificación de la información con las Juntas de Acción Comunal.

  2. Implementación de un sistema de información agropecuaria municipal (SIAM)
    Un sistema digital que consolide registros productivos, asistencia técnica, información climática y cartografía permitiría toma de decisiones más rápida y transparente.

  3. Desarrollo de un visor geoespacial interactivo para UMATA
    Utilizando Shiny, Leaflet o tmap, se recomienda construir una plataforma pública o interna donde se visualicen veredas, cultivos, riesgos y asistencia técnica.

  4. Fortalecimiento de capacidades técnicas del personal municipal
    Capacitación continua en R, QGIS, estadística aplicada y geoprocesamiento para garantizar sostenibilidad del proyecto.

  5. Integración del componente espacial en los proyectos productivos futuros
    Incorporar mapas temáticos y análisis territorial en la formulación de proyectos del municipio, especialmente en programas de fomento agrícola y ordenamiento rural.

  6. Gestión con el IGAC para oficializar el shapefile veredal
    Avanzar en un proceso institucional para que la cartografía veredal elaborada pueda ser adoptada oficialmente, brindando estabilidad técnica a largo plazo.

9 Referencias

Agustín Codazzi, I. G. (2016). Cartografía oficial de Colombia: lineamientos técnicos para la actualización y uso de información geográfica. IGAC.

Bivand, R. S., Pebesma, E., & Gómez‐Rubio, V. (2013). Applied spatial data analysis with R (2nd ed.). Springer.

Departamento Administrativo Nacional de Estadística. (2023). Estadísticas agropecuarias y rurales de Colombia. DANE.

Ferreira, M., & López, J. (2019). Integración de información estadística y geoespacial para la planificación rural. Revista Colombiana de Geografía, 28(2), 45–60.

Ministerio de Agricultura y Desarrollo Rural. (2022). Lineamientos técnicos para la asistencia técnica agropecuaria municipal. MADR.

Pebesma, E. (2018). Simple features for R: standardized support for spatial vector data. The R Journal, 10(1), 439–446.

QGIS Development Team. (2023). QGIS Geographic Information System. Open Source Geospatial Foundation Project.

Ramírez, D. L., & Pérez, A. (2020). Sistemas de información territoriales como herramienta para el diagnóstico productivo veredal. Revista de Desarrollo Rural, 15(1), 63–79.

Unidad Municipal de Asistencia Técnica Agropecuaria de La Paz (UMATA). (2024). Registros productivos y bases de datos internas. UMATA La Paz, Cesar.

Wickham, H. (2016). ggplot2: Elegant graphics for data analysis. Springer.