En 2022, Paraguay concluyó el Censo Agropecuario Nacional (CAN 2022), una operación estadística que actualiza—por primera vez en 14 años—el inventario de fincas, cultivos, sistemas de producción y uso del suelo en los 218 distritos del país. El microdato completo, liberado por el Ministerio de Agricultura y Ganadería a través de su geo-portal institucional, representa más de 210 000 registros censales con detalle a nivel de finca, constituyendo la base empírica más robusta para la formulación de políticas agro-ambientales en la última década.
El objetivo de este análisis es doble:
Integración espacial: vincular los microdatos del CAN 2022 con la cartografía distrital oficial (GADM v4) mediante una llave numérica única—DSTO_PROC—para garantizar correspondencia uno-a-uno sin ambigüedades de nombres o tildes.
Exploración temática inicial
Estructura de tenencia: clasificación de la conducción de la finca (productor individual, productor asociado o entidad colectiva).
Cobertura de bosque nativo: estimación de la proporción de superficie con montes naturales dentro de cada distrito.
La entrega combina técnicas de tidy data y análisis geoespacial en R (dplyr, sf, tmap), produciendo un heat-map nacional que evidencia los contrastes en la conservación forestal, y un panel descriptivo sobre la forma de gestión de las explotaciones. Estos resultados preliminares buscan ilustrar cómo la unión de microdatos censales y SIG facilita diagnósticos territoriales precisos, insumos clave para iniciativas de ordenamiento, sostenibilidad y planificación sectorial.
¿De dónde vienen los datos? Fuente primaria: Microdatos del Censo Agropecuario Nacional 2022 publicados por el Ministerio de Agricultura y Ganadería (MAG).
Se descargan desde su geo‐portal oficial: https://portal.gis.mag.gov.py/arcgis/apps/sites/#/geoportal/pages/microdatos
Complementariamente utilizo la cartografía administrativa de GADM v4 (nivel 2, distritos).
Cobertura: 218 distritos, ~210 000 fincas agropecuarias.
#install.packages("maps", "tmaptools", "tmap")
library("maps")
library("tmaptools")
#library("rgdal")
#library("OpenStreetMap")
library("sf")
library("raster")
library("dplyr")
library("spData")
library("tmap") # for static and interactive maps
library("leaflet") # for interactive maps
library("ggplot2") # tidyverse data visualization package
#library("spDataLarge")
# can<- read_dta("G:/Mi unidad/CAN2022/BASE_CAN2022_DATOS_GENERALES_P2.dta")
# names(can)
#
# # 3. Guardar como CSV
# write_csv(
# can,
# "G:/Mi unidad/CAN2022/BASE_CAN2022_DATOS_GENERALES_P2.csv"
# )
# cargar la base
library(readr)
can <- read_delim(
"G:/Mi unidad/CAN2022/BASE_CAN2022_DATOS_GENERALES_P2.csv",
delim = ",",
show_col_types = FALSE
)
## [1] "ID_FCA_ALEATORIO" "CLASIFICANEW" "DPTO_PROC"
## [4] "DSTO_PROC" "tipoi" "tipofinca"
## [7] "p5000" "menores_total" "mayores_total"
## [10] "p7001_sn" "p7021p" "p7021p_nosabe"
## [13] "p7033p" "p7033p_nosabe" "p7221t"
## [16] "p7221t_nosabe" "p7223t" "p7223t_nosabe"
## [19] "p8000_1" "p8000_3" "p9001"
## [22] "p9000_total" "p10001" "p10002"
## [25] "p10003" "p10004" "p10005"
## [28] "p10006" "p10007" "p10008"
## [31] "p10009" "p10000_total" "p12000_sn"
## [34] "p12000_total" "p12000b_total" "p13300_total"
## [37] "p14000_sn" "p14000_total" "p15000_sn"
## [40] "p15000_total" "p16000_sn" "p16000_total"
## [43] "p18000_sn" "p18002" "XP18003_1"
## [46] "XP18003_2" "XP18003_3" "p18003_esp"
## [49] "p18003_0" "p18003_1" "p18003_2"
## [52] "p18003_3" "p19100_sn" "p19101"
## [55] "p19102" "p19103" "p19104"
## [58] "p19105" "p19106" "p19107"
## [61] "p19108" "p19109" "p19110"
## [64] "p19111" "p19112" "p19119"
## [67] "p19121" "p19122" "p19123"
## [70] "p19123_nosabe" "xp19124_1" "xp19124_2"
## [73] "xp19124_3" "xp19124_4" "p19125_1"
## [76] "p19131" "p19132" "p19133"
## [79] "p19135_1_sn" "p19136_sn" "p19139_sn"
## [82] "p19140_sn" "p19300_sn" "p19303_total"
## [85] "raza_oveja_total" "p19400_sn" "p19405_total"
## [88] "raza_cabra_total" "p19500_sn" "p19509_total"
## [91] "p19700_sn" "p19701" "p19710"
## [94] "p19800_sn" "p19802" "p19802_nosabe"
## [97] "p210051_sn" "p21010_sn" "p21011_sn"
## [100] "p21013_sn" "p21014_sn" "p21016_sn"
## [103] "p21017_sn" "p21018_sn" "p21018_1"
## [106] "XP21018_2_1" "XP21018_2_2" "XP21018_2_3"
## [109] "XP21018_2_4" "p22000_sn" "p23100_sn"
## [112] "XP23101_1" "XP23101_2" "XP23101_3"
## [115] "XP23101_4" "XP23101_5" "XP23101_6"
## [118] "XP23101_7" "XP23102_1_1" "XP23102_1_2"
## [121] "XP23102_1_3" "XP23102_1_4" "XP23102_1_5"
## [124] "XP23102_1_6" "XP23102_1_7" "XP23102_1_8"
## [127] "XP23102_1_9" "XP23102_1_10" "XP23102_1_11"
## [130] "XP23102_1_12" "XP23102_3_1" "XP23102_3_2"
## [133] "XP23102_3_3" "XP23102_3_4" "XP23102_3_5"
## [136] "XP23102_3_6" "XP23102_3_7" "XP23102_3_8"
## [139] "XP23102_3_9" "XP23102_3_10" "XP23102_3_11"
## [142] "XP23102_3_12" "p23150_sn" "p23200_sn"
## [145] "XP23201_1" "XP23201_2" "XP23201_3"
## [148] "XP23201_4" "XP23201_5" "XP23201_6"
## [151] "XP23202_1_1" "XP23202_1_2" "XP23202_1_3"
## [154] "XP23202_1_4" "XP23202_1_5" "XP23202_1_6"
## [157] "XP23202_1_7" "XP23202_31" "XP23202_32"
## [160] "XP23202_33" "XP23202_34" "XP23202_35"
## [163] "XP23202_36" "XP23202_37" "p23250_sn"
## [166] "XP23251_1" "XP23251_2" "XP23251_3"
## [169] "XP23251_4" "XP23251_5" "XP23251_6"
## [172] "XP23252_11" "XP23252_12" "XP23252_13"
## [175] "XP23252_14" "XP23252_15" "XP23252_16"
## [178] "XP23252_17" "XP23252_31" "XP23252_32"
## [181] "XP23252_33" "XP23252_34" "XP23252_35"
## [184] "XP23252_36" "p23300_sn" "p24000_1_sn"
## [187] "p24000_2_sn" "p24000_3_sn" "p24000_4_sn"
## [190] "p24000_5_sn" "p24000_13_sn" "p26002_sn"
## [193] "p26101_sn" "p26102_sn" "p26103_sn"
## [196] "p27000_sn" "p28100_sn" "XP28100_1"
## [199] "XP28100_2" "XP28100_3" "XP28100_4"
## [202] "XP28100_5" "XP28100_6" "XP28100_7"
## [205] "XP28100_9" "p28200_sn" "XP29000_1"
## [208] "XP29000_2" "XP29000_3" "XP29000_4"
## [211] "XP29000_5" "XP29000_6" "XP29000_9"
## [214] "p29000_esp" "p30000_sn" "p30000_1"
## [217] "SEMBRAMANUAL" "PULVEMOCHILA" "PULVEMOTO"
## [220] "ARADOS" "MOTOCULTOR" "MOTOSIERRA"
## [223] "CARRETA" "PICADORA" "TRACTOR"
## [226] "SEMBRADIRECTA" "PULVEARRASTRE" "COSEAUTOMOTRIZ"
## [229] "ACOPLADOS" "CAMIONES" "AERONAVES"
## [232] "TRACTORGPS" "SEMBRASENSOR" "PULVECONTROL"
## [235] "COSECHASENSOR" "DRONES"
Identificador de la finca: ID_FCA_ALEATORIO Departamento:
“DPTO_PROC”
Distrito: “DSTO_PROC”
Tipo de finca:“tipoi”
camposseleccionados=c("ID_FCA_ALEATORIO", "DPTO_PROC", "DSTO_PROC", "tipofinca","p10004", "p8000_1" )
can <- read_delim(
"G:/Mi unidad/CAN2022/BASE_CAN2022_DATOS_GENERALES_P2.csv",
delim = ",",
col_select =camposseleccionados,
show_col_types = FALSE
)
# Vector key → nombre de distrito para los 218 distritos (códigos DSTO_PROC)
dept_map <- c(
`0` = "Asunción",
`1` = "Concepción",
`2` = "San Pedro",
`3` = "Cordillera",
`4` = "Guairá",
`5` = "Caaguazú",
`6` = "Caazapá",
`7` = "Itapúa",
`8` = "Misiones",
`9` = "Paraguarí",
`10` = "Alto Paraná",
`11` = "Central",
`12` = "Ñeembucú",
`13` = "Amambay",
`14` = "Canindeyú",
`15` = "Presidente Hayes",
`16` = "Boquerón",
`17` = "Alto Paraguay"
)
distrito_labels <- c(
# ── Capital ────────────────────────────────────────────
`0` = "Asunción",
# ── Concepción (10x) ───────────────────────────────────
`101` = "Concepción",
`102` = "Belén",
`103` = "Horqueta",
`104` = "Loreto",
`105` = "San Carlos del Apa",
`106` = "San Lázaro",
`107` = "Yby Ya'u",
`108` = "Azote'y",
`109` = "Sargento José Félix López",
`110` = "San Alfredo",
`111` = "Paso Barreto",
`112` = "Arroyito",
`113` = "Paso Horqueta",
# ── San Pedro (20x) ───────────────────────────────────
`201` = "San Pedro del Ycuamandyyú",
`202` = "Antequera",
`203` = "Choré",
`204` = "General Elizardo Aquino",
`205` = "Itacurubí del Rosario",
`206` = "Lima",
`207` = "Nueva Germania",
`208` = "San Estanislao",
`209` = "San Pablo",
`210` = "Tacuatí",
`211` = "Unión",
`212` = "25 de Diciembre",
`213` = "Villa del Rosario",
`214` = "General Francisco Isidoro Resquín",
`215` = "Yataity del Norte",
`216` = "Guajayví",
`217` = "Capiibary",
`218` = "Santa Rosa del Aguaray",
`219` = "Yrybucuá",
`220` = "Liberación",
`221` = "San Vicente Pancholo",
`222` = "San José del Rosario",
# ── Cordillera (30x) ──────────────────────────────────
`301` = "Caacupé",
`302` = "Altos",
`303` = "Arroyos y Esteros",
`304` = "Atyrá",
`305` = "Caraguatay",
`306` = "Emboscada",
`307` = "Eusebio Ayala",
`308` = "Isla Pucú",
`309` = "Itacurubí de la Cordillera",
`310` = "Juan de Mena",
`311` = "Loma Grande",
`312` = "Mbocayaty del Yhaguy",
`313` = "Nueva Colombia",
`314` = "Piribebuy",
`315` = "Primero de Marzo",
`316` = "San Bernardino",
`317` = "Santa Elena",
`318` = "Tobatí",
`319` = "Valenzuela",
`320` = "San José Obrero",
# ── Guairá (40x) ──────────────────────────────────────
`401` = "Villarrica",
`402` = "Borja",
`403` = "Capitán Mauricio José Troche",
`404` = "Coronel Martínez",
`405` = "Félix Pérez Cardozo",
`406` = "General Eugenio A. Garay",
`407` = "Independencia",
`408` = "Itapé",
`409` = "Iturbe",
`410` = "José Fassardi",
`411` = "Mbocayaty",
`412` = "Natalicio Talavera",
`413` = "Ñumí",
`414` = "San Salvador",
`415` = "Yataity",
`416` = "Doctor Botrell",
`417` = "Paso Yobai",
`418` = "Tebicuary",
# ── Caaguazú (50x) ────────────────────────────────────
`501` = "Coronel Oviedo",
`502` = "Caaguazú",
`503` = "Carayaó",
`504` = "Doctor Cecilio Báez",
`505` = "Santa Rosa del Mbutuy",
`506` = "Doctor Juan Manuel Frutos",
`507` = "Repatriación",
`508` = "Nueva Londres",
`509` = "San Joaquín",
`510` = "San José de los Arroyos",
`511` = "Yhú",
`512` = "Doctor J. Eulogio Estigarribia",
`513` = "R.I. 3 Corrales",
`514` = "Raúl Arsenio Oviedo",
`515` = "José Domingo Ocampos",
`516` = "Mariscal Francisco Solano López",
`517` = "La Pastora",
`518` = "3 de Febrero",
`519` = "Simón Bolívar",
`520` = "Vaquería",
`521` = "Tembiaporá",
`522` = "Nueva Toledo",
# ── Caazapá (60x) ─────────────────────────────────────
`601` = "Caazapá",
`602` = "Abai",
`603` = "Buena Vista",
`604` = "Doctor Moisés S. Bertoni",
`605` = "General Higinio Morínigo",
`606` = "Maciel",
`607` = "San Juan Nepomuceno",
`608` = "Tavaí",
`609` = "Yegros",
`610` = "Yuty",
`611` = "3 de Mayo",
# ── Itapúa (70x) ──────────────────────────────────────
`701` = "Encarnación",
`702` = "Bella Vista",
`703` = "Cambyretá",
`704` = "Capitán Meza",
`705` = "Capitán Miranda",
`706` = "Nueva Alborada",
`707` = "Carmen del Paraná",
`708` = "Coronel Bogado",
`709` = "Carlos Antonio López",
`710` = "Natalio",
`711` = "Fram",
`712` = "General Artigas",
`713` = "General Delgado",
`714` = "Hohenau",
`715` = "Jesús",
`716` = "José Leandro Oviedo",
`717` = "Obligado",
`718` = "Mayor Julio Dionisio Otaño",
`719` = "San Cosme y Damián",
`720` = "San Pedro del Paraná",
`721` = "San Rafael del Paraná",
`722` = "Trinidad",
`723` = "Edelira",
`724` = "Tomás Romero Pereira",
`725` = "Alto Vera",
`726` = "La Paz",
`727` = "Yatytay",
`728` = "San Juan del Paraná",
`729` = "Pirapó",
`730` = "Itapúa Poty",
# ── Misiones (80x) ────────────────────────────────────
`801` = "San Juan Bautista de las Misiones",
`802` = "Ayolas",
`803` = "San Ignacio",
`804` = "San Miguel",
`805` = "San Patricio",
`806` = "Santa María",
`807` = "Santa Rosa",
`808` = "Santiago",
`809` = "Villa Florida",
`810` = "Yabebyry",
# ── Paraguarí (90x) ───────────────────────────────────
`901` = "Paraguarí",
`902` = "Acahay",
`903` = "Caapucú",
`904` = "Caballero",
`905` = "Carapeguá",
`906` = "Escobar",
`907` = "La Colmena",
`908` = "Mbuyapey",
`909` = "Pirayú",
`910` = "Quiindy",
`911` = "Quyquyhó",
`912` = "Roque González de Santa Cruz",
`913` = "Sapucái",
`914` = "Tebicuary-mi",
`915` = "Yaguarón",
`916` = "Ybycuí",
`917` = "Ybytymi",
`918` = "María Antonia",
# ── Alto Paraná (100x) ────────────────────────────────
`1001` = "Ciudad del Este",
`1002` = "Presidente Franco",
`1003` = "Domingo Martínez de Irala",
`1004` = "Doctor Juan León Mallorquín",
`1005` = "Hernandarias",
`1006` = "Itakyry",
`1007` = "Juan E. O'Leary",
`1008` = "Ñacunday",
`1009` = "Yguazú",
`1010` = "Los Cedrales",
`1011` = "Minga Guazú",
`1012` = "San Cristóbal",
`1013` = "Santa Rita",
`1014` = "Naranjal",
`1015` = "Santa Rosa del Monday",
`1016` = "Minga Porã",
`1017` = "Mbaracayú",
`1018` = "San Alberto",
`1019` = "Iruña",
`1020` = "Santa Fe del Paraná",
`1021` = "Tavapy",
`1022` = "Doctor Raúl Peña",
# ── Central (110x) ────────────────────────────────────
`1101` = "Areguá",
`1102` = "Capiatá",
`1103` = "Fernando de la Mora",
`1104` = "Guarambaré",
`1105` = "Itá",
`1106` = "Itauguá",
`1107` = "Lambaré",
`1108` = "Limpio",
`1109` = "Luque",
`1110` = "Mariano Roque Alonso",
`1111` = "Nueva Italia",
`1112` = "Ñemby",
`1113` = "San Antonio",
`1114` = "San Lorenzo",
`1115` = "Villa Elisa",
`1116` = "Villeta",
`1117` = "Ypacaraí",
`1118` = "Ypané",
`1119` = "J. Augusto Saldívar",
# ── Ñeembucú (120x) ───────────────────────────────────
`1201` = "Pilar",
`1202` = "Alberdi",
`1203` = "Cerrito",
`1204` = "Desmochados",
`1205` = "General José Eduvigis Díaz",
`1206` = "Guazú-Cuá",
`1207` = "Humaitá",
`1208` = "Isla Umbú",
`1209` = "Laureles",
`1210` = "Mayor José de Jesús Martínez",
`1211` = "Paso de la Patria",
`1212` = "San Juan Bautista de Ñeembucú",
`1213` = "Tacuaras",
`1214` = "Villa Franca",
`1215` = "Villa Oliva",
`1216` = "Villalbín",
# ── Amambay (130x) ───────────────────────────────────
`1301` = "Pedro Juan Caballero",
`1302` = "Bella Vista",
`1303` = "Capitán Bado",
`1304` = "Zanja Pytá",
`1305` = "Karapaí",
`1306` = "Cerro Corá",
# ── Canindeyú (140x) ─────────────────────────────────
`1401` = "Salto del Guairá",
`1402` = "Corpus Christi",
`1403` = "Curuguaty",
`1404` = "Ygatimí",
`1405` = "Itanará",
`1406` = "Ypejhú",
`1407` = "Francisco Caballero Álvarez",
`1408` = "Katueté",
`1409` = "La Paloma del Espíritu Santo",
`1410` = "Nueva Esperanza",
`1411` = "Yasy Cañy",
`1412` = "Ybyrarobana",
`1413` = "Yby Pytá",
`1414` = "Maracaná",
`1415` = "Puerto Adela",
`1416` = "Laurel",
# ── Presidente Hayes (150x) ───────────────────────────
`1502` = "Benjamín Aceval",
`1503` = "Puerto Pinasco",
`1504` = "Villa Hayes",
`1505` = "Nanawa",
`1506` = "José Falcón",
`1507` = "Teniente 1.º Manuel Irala Fernández",
`1508` = "Teniente Esteban Martínez",
`1509` = "General José María Bruguez",
`1510` = "Campo Aceval",
# ── Boquerón (160x) ──────────────────────────────────
`1602` = "Mariscal José Félix Estigarribia",
`1604` = "Filadelfia",
`1605` = "Loma Plata",
`1606` = "Boquerón",
# ── Alto Paraguay (170x) ─────────────────────────────
`1701` = "Fuerte Olimpo",
`1702` = "Puerto Casado",
`1704` = "Bahía Negra",
`1705` = "Carmelo Peralta"
)
# 5. Asignar etiqueta a cada fila según DSTO_PROC
can <- can %>%
mutate(
DSTO_PROC = as.integer(DSTO_PROC), # asegurarse de tipo entero
distrito_nombre = recode(DSTO_PROC, !!!distrito_labels)
)
can <- can %>%
mutate(
DPTO_PROC = as.integer(DPTO_PROC),
depto_nombre = recode(as.character(DPTO_PROC), !!!dept_map)
)
## [,1]
## Alto Paraguay 968
## Alto Paraná 11725
## Amambay 2604
## Boquerón 2029
## Caaguazú 30825
## Caazapá 14065
## Canindeyú 11570
## Central 2872
## Concepción 12083
## Cordillera 15539
## Guairá 13044
## Itapúa 24470
## Misiones 5696
## Ñeembucú 5618
## Paraguarí 13973
## Presidente Hayes 3273
## San Pedro 39480
1.¿La finca es manejada por un solo productor/a? 2.¿o es manejada por dos o más productores asociados de hecho (como socio)? 3. Otros (Empresa, Estado, Comunidad Religiosa, Cooperativa, etc.)
# 4. Recodificar tipoi en tipofinca_label
can <- can %>%
mutate(
tipofinca = as.integer(tipofinca), # asegurar tipo entero
tipofinca_label = recode(
tipofinca,
`1` = "Manejada por un solo productor/a",
`2` = "Manejada por dos o más productores",
`3` = "Otros (Empresa, Estado, etc.)"
)
)
cbind(table(can$tipofinca_label))
## [,1]
## Manejada por dos o más productores 6699
## Manejada por un solo productor/a 199978
## Otros (Empresa, Estado, etc.) 3157
# 4. Calcular recuento y porcentaje por tipo de finca
df_pct <- can %>%
count(tipofinca_label) %>%
mutate(pct = n / sum(n) * 100,
pct_label = sprintf("%.1f%%", pct))
df_pct
## # A tibble: 3 × 4
## tipofinca_label n pct pct_label
## <chr> <int> <dbl> <chr>
## 1 Manejada por dos o más productores 6699 3.19 3.2%
## 2 Manejada por un solo productor/a 199978 95.3 95.3%
## 3 Otros (Empresa, Estado, etc.) 3157 1.50 1.5%
# 5. Gráfico circular (pie chart)
ggplot(df_pct, aes(x = "", y = pct, fill = tipofinca_label)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y", start = 0) +
geom_text(aes(label = pct_label),
position = position_stack(vjust = 0.5),
size = 4) +
labs(
title = "Distribución porcentual de fincas por tipo",
fill = "Tipo de finca"
) +
theme_void(base_size = 12) +
theme(
plot.title = element_text(face = "bold", hjust = 0.5),
legend.position = "right"
)
8000_1 ¿Qué superficie de la tierra MANEJA en total (INCLUIR todas las superficies de las PARCELAS SEPARADAS, pero SIN INCLUIR aquella tierra que alquila a otra persona)? p8000_1
## num [1:209834] 2010 2 7.4 1 10 1 10 2 0.5 6 ...
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0 2.0 5.0 100.9 12.3 49500.0
10000_4 ¿Qué superficie de tierra tiene con montes naturales?____ha
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 0.00 0.00 23.61 1.00 26096.00
library(dplyr)
# 1. Resumen estadístico de superficie manejada por departamento
area_depto <- can %>%
group_by(DPTO_PROC, depto_nombre) %>%
summarise(
mean_superficie = mean(p8000_1, na.rm = TRUE),
median_superficie = median(p8000_1, na.rm = TRUE),
n_fincas = n(),
.groups = "drop"
) %>%
arrange(desc(mean_superficie))
# 2. Mostrar la tabla
area_depto
## # A tibble: 17 × 5
## DPTO_PROC depto_nombre mean_superficie median_superficie n_fincas
## <int> <chr> <dbl> <dbl> <int>
## 1 17 Alto Paraguay 3849. 510 968
## 2 16 Boquerón 1616. 340 2029
## 3 15 Presidente Hayes 1554. 100 3273
## 4 13 Amambay 328. 15 2604
## 5 12 Ñeembucú 121. 15 5618
## 6 8 Misiones 95.4 6 5696
## 7 1 Concepción 76.9 8 12083
## 8 10 Alto Paraná 75.4 8 11725
## 9 14 Canindeyú 71.0 10 11570
## 10 7 Itapúa 38.6 6.9 24470
## 11 9 Paraguarí 36.6 3 13973
## 12 6 Caazapá 35.9 5 14065
## 13 2 San Pedro 29.5 5 39480
## 14 5 Caaguazú 24.6 5 30825
## 15 3 Cordillera 17.3 3 15539
## 16 4 Guairá 14.6 3 13044
## 17 11 Central 10.2 1 2872
## Warning: package 'kableExtra' was built under R version 4.3.3
library(dplyr)
# tabla de porcbosquesnat por cada departamento , oredenado de mayor a menor
tabla_dept <- can %>%
group_by(DPTO_PROC, depto_nombre) %>%
summarise(
mean_porcbosques = mean(porcbosquesnat, na.rm = TRUE),
n_fincas = n(),
.groups = "drop"
) %>%
arrange(desc(mean_porcbosques))
# Mostrar la tabla completa
# imprime todas las filas
kable(tabla_dept)
DPTO_PROC | depto_nombre | mean_porcbosques | n_fincas |
---|---|---|---|
17 | Alto Paraguay | 0.3025367 | 968 |
16 | Boquerón | 0.2583499 | 2029 |
15 | Presidente Hayes | 0.1962933 | 3273 |
3 | Cordillera | 0.0968266 | 15539 |
7 | Itapúa | 0.0862719 | 24470 |
6 | Caazapá | 0.0851304 | 14065 |
13 | Amambay | 0.0835870 | 2604 |
1 | Concepción | 0.0759639 | 12083 |
10 | Alto Paraná | 0.0742863 | 11725 |
9 | Paraguarí | 0.0678487 | 13973 |
5 | Caaguazú | 0.0641544 | 30825 |
14 | Canindeyú | 0.0639906 | 11570 |
2 | San Pedro | 0.0586954 | 39480 |
4 | Guairá | 0.0536424 | 13044 |
8 | Misiones | 0.0503941 | 5696 |
12 | Ñeembucú | 0.0495954 | 5618 |
11 | Central | 0.0413898 | 2872 |
La tabla resume, para cada uno de los 17 departamentos de Paraguay, la proporción media de superficie de cada finca dedicada a bosques naturales (mean_porcbosques) junto al número de fincas censadas (n_fincas), ordenados de mayor a menor cobertura forestal:
Puntos clave de la interpretación:
Región Occidental/Chaco
Región Oriental
Departamentos con menor cobertura
Relación cobertura – número de fincas
Heterogeneidad interna
En conjunto, el ejercicio confirma un gradiente marcadamente descendente de la cobertura forestal al pasar del Chaco (altura >20 %) a la Región Oriental (4–10 %), información esencial para diseñar estrategias regionales de conservación y manejo sostenible del suelo.
## Reading layer `gadm40_PRY_2' from data source
## `G:\Mi unidad\CAN2022\paraguay\gadm40_PRY_2.shp' using driver `ESRI Shapefile'
## Simple feature collection with 218 features and 12 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -62.64652 ymin: -27.60586 xmax: -54.25863 ymax: -19.29137
## Geodetic CRS: WGS 84
library(sf)
library(dplyr)
library(tmap)
# 1. Agrupar geometría a nivel departamental (NAME_1)
py_depto <- py %>%
group_by(NAME_1) %>%
summarise(geometry = st_union(geometry), .groups = "drop")
# 2. Unir la estadística de bosques por departamento
py_depto <- py_depto %>%
left_join(
tabla_dept,
by = c("NAME_1" = "depto_nombre")
)
# 3. Dibujar heatmap departamental
tmap_mode("plot")
tm_shape(py_depto) +
tm_polygons(
col = "mean_porcbosques",
palette = "Greens",
title = "Bosque natural (%)\n(promedio)",
border.col = "grey30",
border.alpha = 0.4,
textNA = "Sin dato"
) +
tm_layout(
main.title = "Cobertura promedio de bosque natural\npor departamento",
main.title.position = "center",
legend.outside = TRUE,
frame = FALSE
)
# Librerías necesarias
library(sf)
library(dplyr)
library(tmap)
# 1. Resumir la proporción promedio de bosques por distrito
bosques_distrito <- can %>%
group_by(distrito_nombre) %>%
summarise(
mean_porcbosques = mean(porcbosquesnat, na.rm = FALSE)
)
bosques_distrito
## # A tibble: 244 × 2
## distrito_nombre mean_porcbosques
## <chr> <dbl>
## 1 25 de Diciembre 0.129
## 2 3 de Febrero 0.0446
## 3 3 de Mayo 0.101
## 4 Abai 0.0707
## 5 Acahay 0.0434
## 6 Alberdi 0.0750
## 7 Alto Vera 0.108
## 8 Altos 0.134
## 9 Antequera 0.0121
## 10 Areguá 0.00990
## # ℹ 234 more rows
library(stringi)
# 2. Normalizar nombres en el resumen de bosques
bosques_distrito <- bosques_distrito %>%
mutate(
join_name = distrito_nombre %>%
stringi::stri_trans_general("Latin-ASCII") %>% # elimina tildes
toupper() # mayúsculas
# trim de espacios
)
# 3. Normalizar nombres en el objeto espacial San Pedro
py <- py %>%
mutate(
join_name = NAME_2 %>%
stringi::stri_trans_general("Latin-ASCII") %>%
toupper()
)
# 3. Vincular el resumen estadístico al objeto espacial
# Unimos por el nombre del distrito (NAME_2 en el shapefile vs distrito_nombre)
pybosques <- py %>%
left_join(bosques_distrito,
by = c("join_name" = "join_name"))
library(dplyr)
library(sf)
library(tmap)
# 1. Sustituir los NA por 0
pybosques <- pybosques %>% # objeto sf con mean_porcbosques
mutate(
mean_porcbosques = tidyr::replace_na(mean_porcbosques, 0)
)
# 2. Calcular centroides (ya con el dato imputado)
centroides <- st_centroid(pybosques)
# 3. Dibujar el heat-map
tmap_mode("plot")
tm_shape(pybosques) +
tm_polygons(
col = "mean_porcbosques",
palette = "Greens",
title = "Bosques naturales\n(%, promedio)",
border.alpha = 0.5
) +
tm_shape(centroides)
tm_layout(
main.title = "Proporción promedio de bosques naturales\npor distrito",
main.title.position = "center",
legend.outside = TRUE
)
En este choropleth de Paraguay, cada distrito está coloreado según el porcentaje medio de su superficie dedicada a bosques naturales, clasificado en cortes de 5 puntos porcentuales:
- Chaco Occidental y Alto Paraguay (departamentos Boquerón, Alto Paraguay y Presidente Hayes) presentan los valores más altos, con varios distritos en el rango 30–35 % (tonos verdes oscuros). Esto refleja la persistencia de grandes remanentes forestales de bosque chaqueño y vegetación ribereña.
- Chaco Central (Concepción y parte norte de San Pedro) muestra rangos intermedios, entre 15–25 % (verdes medios), lo cual indica un equilibrio entre actividades agropecuarias y áreas naturales.
- Región Oriental (al este del río Paraguay) exhibe mayor heterogeneidad:
- En la franja central (Cordillera, Central, parte de Paraguarí) predominan valores bajos, 0–5 % o 5–10 % (tonos muy claros), coincidiendo con zonas de alta densidad de población y agricultura intensiva.
- Algunos distritos de Misiones y Alto Paraná evidencian porcentajes moderados, 10–15 % o 15–20 %, asociados a remanentes de bosque en áreas protegidas y linderos de ríos.
- Los polígonos en gris (“Missing”) corresponden a entidades no previstas en el censo de fincas (por ejemplo, cuerpos de agua o áreas sin datos) y no deben interpretarse como ausencia de bosque.
En conjunto, el mapa evidencia un claro gradiente de cobertura forestal: * Mayor en el Chaco, donde la presión agrícola es menor y la vegetación nativa se mantiene relativamente intacta. * Menor en la Región Oriental, donde la expansión de la frontera agrícola y urbana ha reducido drásticamente los bosques originales, salvo en corredores y áreas protegidas. Este patrón espacial subraya la necesidad de políticas diferenciadas de conservación y uso sostenible del suelo, priorizando tanto la protección de remanentes en la región Oriental como la gestión responsable de los bosques del Chaco.
Estructura de tenencia predominante Más del 97 % de las explotaciones rurales en Paraguay son manejadas por un único productor o productora, lo cual refuerza la importancia de los programas de apoyo directo al agricultor familiar para mejorar la productividad y sostenibilidad.
Baja cobertura forestal promedio A nivel nacional, la proporción media de superficie bajo bosques naturales en la finca es cercana al 6 %. Esto refleja una profunda transformación del paisaje original en buena parte del país.
Gradiente espacial muy marcado
Región Oriental (departamentos Central, Cordillera, Paraguarí, Guairá, Caaguazú) presenta porcentajes promedio inferiores al 10 %, con distritos punta de baja cobertura (< 5 %) en áreas de agricultura intensiva y expansión urbana.
Chaco (Presidente Hayes, Alto Paraguay, Boquerón) mantiene remanentes significativos de bosque chaqueño (30–35 % en varios distritos), aunque con presiones crecientes de ganadería extensiva y tala.
Heterogeneidad intra‐departamental Incluso dentro de un mismo departamento, existen distritos con contrastes de 0 % hasta > 25 % de cobertura forestal, lo que demanda intervenciones focalizadas a escala local.
Calidad y robustez del enlace espacial La implementación de una llave numérica única (dstocode) demostró ser fiable para casar sin ambigüedades los microdatos censales con la cartografía distrital oficial, evitando errores de coincidencia de texto.
Políticas diferenciadas por región Diseñar y priorizar estrategias distintas en la Región Oriental (enfocadas en restauración y agroforestería) frente al Chaco (orientadas a manejo sostenible y control de deforestación).
Incentivos para agroforestería y conservación
Establecer líneas de crédito verdes y certificaciones para productores que mantengan o amplíen la cobertura de bosque natural.
Apoyar técnicas de silvopastura que integren árboles nativos en sistemas ganaderos.
Monitoreo continuo y evaluación espacial Integrar los microdatos censales con imágenes satelitales e índices de vegetación (NDVI) para llevar un seguimiento periódico de la cobertura forestal y detectar rápidamente deforestación ilegal.
Corredores de conectividad en la Región Oriental Identificar distritos críticos con < 5 % de cobertura y promover proyectos de reforestación y restauración de corredores biológicos, especialmente en cuencas compartidas entre distritos.
Fortalecimiento institucional y transferencia de tecnología SIG Capacitar a equipos técnicos regionales en el uso de R, sf y tmap para que puedan replicar y actualizar esta metodología con los datos de continuidad (encuestas posteriores, inventarios forestales).
Participación y sensibilización de comunidades locales Incorporar las organizaciones de productores en el diseño de las acciones de conservación, reconociendo sus saberes tradicionales y generando beneficios directos (ingresos adicionales por eco‐servicios).