En este informe se analiza: - La evolución de la titularidad de cuentas en instituciones financieras (fiaccount_t_d). - El avance en la adopción de pagos digitales (g20_any). - Los patrones de ahorro en instituciones financieras (fin17a). - El acceso al crédito formal (fin22a).
En el reporte, me concentro en mostrar los códigos de las visualizaciones más que los de otros cálculos.
2. Selección de fuentes de datos3. Carga y exploración de datos
#Cargo las librerías a usar
library(readxl)
library(sf)
library(haven)
library(dplyr)
library(stringr)
library(countrycode)
library(readr)
library(ggplot2)
library(tidyverse)
library(scales)
library(forcats)
library(tidyr)
library(treemapify)
library(scales)
library(ggrepel)
library(treemapify)
# Cargo las bases para hacer los left joint
# Exploro las bases para saber como estan formadas
# ---shapefile de países
world <- st_read("C:/Descargas/CienciaDatos_UTDT/TP3/World_Countries_(Generalized)_8414823838130214587.gpkg")
## Reading layer `World_Countries_Generalized' from data source
## `C:\Descargas\CienciaDatos_UTDT\TP3\World_Countries_(Generalized)_8414823838130214587.gpkg'
## using driver `GPKG'
## Simple feature collection with 251 features and 4 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -20037510 ymin: -30240970 xmax: 20037510 ymax: 18418390
## Projected CRS: WGS 84 / Pseudo-Mercator
# Apagué varios comandos de estadística porque la base es muy grande
#str(world,1)
# Base Findex
findex <- read_dta("C:/Descargas/CienciaDatos_UTDT/TP3/GlobalFindexDatabase2025.dta")
# Los apago porque la base es muy grande
#summary(findex)
#str(findex,1)
# Base PIB per capita
gdp_pc <- read_csv("C:/Descargas/CienciaDatos_UTDT/TP3/gdp_pc.csv")
#str(gdp_pc)
# Genero claves ISO3 para poder hacer el left jont
world <- world %>%
mutate(iso3 = countrycode(ISO, origin = "iso2c", destination = "iso3c"))
findex <- findex %>%
mutate(iso3 = toupper(codewb))
gdp_pc <- gdp_pc %>%
rename(iso3 = country_code) %>%
mutate(
iso3 = toupper(iso3),
year = as.integer(year),
gdp_pc = as.numeric(gdp_pc)
)
class(basefindex2) # tipo de objeto (sf, data.frame, etc.)
## [1] "sf" "data.frame"
dim(basefindex2)
## [1] 8086 445
#names(basefindex2)
#head(basefindex2, 5)
#summary(basefindex2)
# para ver la estructura de columna
#str(basefindex2, 1)
# Histograma facetado
ggplot() +
geom_histogram(
data = hist_data,
aes(x = valor),
binwidth = 0.05,
fill = "#1f77b4",
color = "white"
) +
facet_wrap(~ serie, scales = "free_y") +
scale_x_continuous(labels = percent_format(accuracy = 1)) +
labs(
title = "Distribución de inclusión financiera (Mundo, 2024)",
subtitle = "Bancarización, pagos digitales, ahorro formal y crédito formal",
x = "% de adultos (15+)",
y = "Número de países",
caption = "Fuente: Global Findex 2025 (Banco Mundial)."
) +
theme_minimal(base_size = 12)
4. Gráficos exploratorios
4.1. Panorama global# Mapa coroplético
ggplot() +
geom_sf(data = accesomundo, aes(fill = mean_account), color = "white", size = 0.1) +
scale_fill_viridis_c(labels = percent_format(accuracy = 1),
na.value = "darkgrey") + # color para países sin dato
labs(
title = "Gráfico N°1 | Titularidad de la cuenta (% mayores de 15 años), 2024",
subtitle = "(Incuye cuentas en IF y dinero móvil)",
fill = "% con cuenta",
caption = "Fuente: Global Findex, Banco Mundial \nNota: IF = Institución Financiera \n Elaboración propia."
) +
theme_minimal() +
theme(legend.position = "right", plot.caption = element_text(hjust = 1.4, size = 9, face = "plain"))
# Mantengo todos los países (no filtro NA aquí)
acceso_ctafi_mundo <- basefindex2 %>%
filter(year == 2024) %>%
group_by(iso3) %>%
summarise(
mean_fiaccount = {
v <- fiaccount_t_d
w <- pop_adult
if (all(is.na(v)) || all(is.na(w))) NA_real_ else weighted.mean(v, w, na.rm = TRUE)
},
.groups = "drop"
) %>%
filter(!iso3 %in% c("ATA","GRL"))
# Mapa coroplético
ggplot() +
geom_sf(data = acceso_ctafi_mundo, aes(fill = mean_fiaccount), color = "white", size = 0.1) +
scale_fill_viridis_c(labels = percent_format(accuracy = 1), na.value = "darkgrey") +
labs(
title = "Gráfico N°2 | Bancarización, 2024",
subtitle = "Cuenta en una institución financiera",
fill = "% con cuenta",
caption = "Fuente: Global Findex, Banco Mundial | Elaboración propia.\nNota: IF= Institución Financiera"
) +
theme_minimal() +
theme(legend.position = "right")
Una comparación entre regiones del mundo.
# Gráfico de barras horizontales sobre acceso a cuentas por región y sexo
ggplot() +
geom_col(data = region_sex,
aes(x = region_es, y = mean_account, fill = sex),
position = position_dodge(width = 0.7), width = 0.6) +
coord_flip() +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
scale_fill_manual(values = c("Hombres"="#1f77b4","Mujeres"="#ff7f0e")) +
labs(
title = "Gráfico N°3 | Acceso a cuentas por región y sexo (2024)",
subtitle = "Promedio ponderado por población; excluye países de ingreso alto",
x = "Región",
y = "% con cuenta",
fill = "Sexo",
caption = "Fuente: Global Findex, Banco Mundial | Elaboración propia."
) +
theme_minimal() +
theme(legend.position = "top", axis.text.y = element_text(size = 11))
4.2. Zoom en América Latina y el Caribe (ALC)
# Gráfico de lineas para ver evolución de cuentas en IF de ALC
ggplot() +
geom_line(data = alc_evol,
aes(x = year, y = mean_fiaccount, color = sex, group = sex),
linewidth = 1) +
geom_point(data = alc_evol,
aes(x = year, y = mean_fiaccount, color = sex),
size = 2) +
scale_x_continuous(breaks = years_vec) +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
scale_color_manual(values = c("Hombres"="#1f77b4","Mujeres"="#ff7f0e")) +
labs(
title = "Gráfico N°4 | Evolución de cuentas en instituciones financieras en ALC \n(2011–2024) ",
subtitle = "En porcentajes",
x = "Año",
y = "% con cuenta en institución financiera",
color = "Sexo",
caption = "Fuente: Global Findex, Banco Mundial.\ Elaboración propia"
) +
theme_minimal(base_size = 12) +
theme(legend.position = "top")
# Gráfico de brechas de género
ggplot() +
geom_vline(xintercept = 0, linetype = "dashed", color = "grey60") +
geom_segment(data = alc_gap_wide,
aes(x = gap_2011, xend = gap_2024,
y = COUNTRY, yend = COUNTRY),
color = "grey55") +
geom_point(data = alc_gap_wide,
aes(x = gap_2011, y = COUNTRY),
shape = 21, fill = NA, color = "#1f77b4", size = 3, stroke = 1) +
geom_point(data = alc_gap_wide,
aes(x = gap_2024, y = COUNTRY),
shape = 16, color = "#ff7f0e", size = 3) +
scale_x_continuous(labels = percent_format(accuracy = 1)) +
labs(
title = "Gráfico N°5 | Brecha de acceso a cuentas en instituciones \nfinancieras en ALC",
subtitle = "2011 (○) vs 2024 (●). >0 favorece a hombres; <0 favorece a mujeres",
x = "Brecha de género (% puntos)",
y = "País",
caption = "Fuente: Global Findex, Banco Mundial.\nNota: Elaboración propia."
) +
theme_minimal() +
theme(panel.grid.major.y = element_blank())
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_segment()`).
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_segment()`).
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_point()`).
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_point()`).
4.3. Barreras para el acceso de servicios financieros
# Gráfico razones para no tener una cuenta
ggplot() +
geom_col(
data = graf_reasons,
aes(x = p, y = fct_rev(reason_es), fill = region_grp),
width = 0.7
) +
facet_wrap(~ region_grp, ncol = 2, scales = "free_y") +
scale_x_continuous(labels = percent_format(accuracy = 1)) +
scale_fill_brewer(palette = "Set1", name = "Región") +
labs(
title = "Gráfico N°6 | Razones para no tener una cuenta (2024)",
x = "% de adultos sin cuenta que menciona la razón",
y = NULL,
caption = "Fuente: Global Findex 2025 (Banco Mundial) \nElaboración propia."
) +
theme_minimal(base_size = 10) +
theme(
legend.position = "none",
panel.grid.major.y = element_blank(),
strip.text = element_text(size = 11, hjust = 0.5), # mantiene centrado el título de cada panel
plot.title = element_text(hjust = 0.5, size = 14)
)
# Gráfico heatmap de razones para no tener una cuenta por pais de ALC
ggplot() +
geom_tile(
data = alc_if_reasons,
aes(x = razon, y = COUNTRY, fill = valor),
color = "white", linewidth = 0.2
) +
scale_fill_viridis_c(
labels = percent_format(accuracy = 1),
na.value = "grey85",
name = "% de adultos\nsin cuenta que menciona la razón"
) +
labs(
title = "Gráfico N°7 | Barreras para no tener una cuenta en institución \nfinanciera (ALC, 2024)",
x = "Razón declarada",
y = "País",
caption = "Fuente: Global Findex 2025 (Banco Mundial)."
) +
theme_minimal(base_size = 11) +
theme(
axis.text.x = element_text(angle = 30, hjust = 1),
legend.position = "right",
legend.text = element_text(size = 10)
)
4.4. Uso de servicios financieros
# Gráfico Treemap de pagos digitales en ALC
ggplot() +
geom_treemap(
data = alc_treemap,
aes(area = pop_adult, fill = g20_any, label = COUNTRY),
color = "white"
) +
geom_treemap_text(
data = alc_treemap,
aes(area = pop_adult, label = COUNTRY),
colour = "white", place = "top",
grow = TRUE, reflow = TRUE
) +
geom_treemap_text(
data = alc_treemap,
aes(area = pop_adult,
label = scales::percent(g20_any, accuracy = 1)),
colour = "white", place = "bottom",
grow = FALSE, reflow = TRUE, min.size = 0.25
) +
scale_fill_viridis_c(labels = percent_format(accuracy = 1),
name = "% hizo/recibió pago digital") +
facet_wrap(~ year) +
labs(
title = "Gráfico N°8 | Pagos digitales en ALC: comparación 2014 vs 2024",
subtitle = "Tamaño: población adulta | (%, 15+)",
caption = "Fuente: Global Findex 2025 (Banco Mundial). \nNotas: Incluye países de ALC clasificados por el Banco Mundial como de alto ingreso (CHL, URY, PAN, CRI)"
) +
theme_minimal() +
theme(legend.position = "bottom")
## Warning in geom_treemap(data = alc_treemap, aes(area = pop_adult, fill =
## g20_any, : Ignoring unknown aesthetics: label
# Gráfico de pagos digitales por sexo, facet por país
ggplot() +
geom_line(data = evol_top9,
aes(x = year, y = pagos, color = sex, group = sex),
linewidth = 1) +
geom_point(data = evol_top9,
aes(x = year, y = pagos, color = sex),
size = 2) +
facet_wrap(~ COUNTRY, ncol = 3) +
scale_x_continuous(breaks = years_vec2) +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
scale_color_manual(values = c("Hombres"="#1f77b4","Mujeres"="#ff7f0e"), name = "Sexo") +
labs(
title = "Gráfico N°9 | Pagos digitales por sexo en los 9 países más poblados \nde ALC (2014–2024)",
subtitle = "(% de adultos 15+ que hicieron o recibieron un pago digital)",
x = "Año", y = "% de adultos",
caption = "Fuente: Global Findex 2014–2024 (Banco Mundial). Promedios ponderados por población adulta (15+)."
) +
theme_minimal(base_size = 11) +
theme(legend.position = "top")
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_line()`).
## Warning: Removed 24 rows containing missing values or values outside the scale range
## (`geom_point()`).
# Gráfico créditos: líneas por sexo, facet por país
ggplot() +
geom_col(data = evol_borrow_top9,
aes(x = factor(year), y = créditos, fill = sex),
position = "dodge") +
facet_wrap(~ COUNTRY, ncol = 3) +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
scale_fill_manual(values = c("Hombres"="#1f77b4", "Mujeres"="#ff7f0e"), name = "Sexo") +
labs(
title = "Gráfico N°10 | Créditos en IF por sexo en los 9 países más poblados \nde ALC (2014–2024)",
subtitle = "(% de adultos 15+)",
x = "Año", y = "% de adultos",
caption = "Fuente: Global Findex 2025 (Banco Mundial). Promedios ponderados por población adulta (15+)."
) +
theme_minimal(base_size = 11) +
theme(
legend.position = "top",
panel.spacing = unit(1, "lines") # más espacio vertical y horizontal entre facetas
)
## Warning: Removed 10 rows containing missing values or values outside the scale range
## (`geom_col()`).
# Gráfico ahorros: líneas por sexo, facet por país
ggplot() +
geom_col(data = evol_save_top9,
aes(x = factor(year), y = ahorros, fill = sex),
position = "dodge") +
facet_wrap(~ COUNTRY, ncol = 3) +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
scale_fill_manual(values = c("Hombres"="#1f77b4", "Mujeres"="#ff7f0e"), name = "Sexo") +
labs(
title = "Gráfico N°11 | Ahorros en IF por sexo en los 9 países más poblados \nde ALC (2014–2024)",
subtitle = "(% de adultos 15+)",
x = "Año", y = "% de adultos",
caption = "Fuente: Global Findex 2025 (Banco Mundial). \nNotas: Promedios ponderados por población adulta (15+)."
) +
theme_minimal(base_size = 11) +
theme(
legend.position = "top",
panel.spacing = unit(1, "lines"))
## Warning: Removed 18 rows containing missing values or values outside the scale range
## (`geom_col()`).
4.5. Vinculación al PIB per capita
# Mapa: coroplético + puntos (geometrías superpuestas) sobre bancarización y PIB p.c.
ggplot() +
geom_sf(
data = alc_2024,
aes(fill = fiaccount_t_d),
color = "white", linewidth = 0.2
) +
geom_point(
data = puntos,
aes(x = lon, y = lat, size = gdp_pc),
alpha = 0.5, color = "#ff7f0e"
) +
scale_fill_gradient(
low = "#f7fbff", high = "#1f77b4",na.value = "grey80",
labels = percent_format(accuracy = 1),
name = "Bancarización (FI)"
) +
scale_size_continuous(
labels = comma, name = "PIB per cápita (US$)"
) +
coord_sf() +
labs(
title = "Gráfico N°12 | ALC (2024): Bancarización y PIB per cápita",
subtitle = "Relleno = % con cuenta en IF. Puntos = centroides, tamaño ∝ PIB pc.",
caption = "Fuente: Global Findex | Banco Mundial \nNotas: IF= Institución Financiera",
x = NULL, y = NULL
) +
theme_minimal(base_size = 11) +
theme(legend.position = "right")
# Gráfico scatter sobre bancarización y PIB p.c.
ggplot() +
# puntos
geom_point(
data = scatter_df,
aes(x = gdp_pc, y = fiaccount_t_d, color = ALC),
size = 2.2, alpha = 0.9
) +
# etiquetas solo para ALC
geom_text_repel(
data = dplyr::filter(scatter_df, ALC == "ALC"),
aes(x = gdp_pc, y = fiaccount_t_d, label = iso3),
size = 3, color = "black", max.overlaps = Inf, min.segment.length = 0
) +
# tendencia global
geom_smooth(
data = scatter_df,
aes(x = gdp_pc, y = fiaccount_t_d),
method = "loess", se = FALSE, linetype = "dotted", color = "red"
) +
scale_color_manual(values = c("ALC" = "darkorange", "Resto del mundo" = "steelblue"),
name = "Grupo") +
scale_x_continuous(labels = comma) +
scale_y_continuous(labels = percent_format(accuracy = 1), limits = c(0, 1)) +
labs(
title = "Gráfico N°13 | Bancarización y PIB per cápita (2024)",
subtitle = "Cuenta en institución financiera vs. PIB per cápita; ALC resaltado",
x = "PIB per cápita (USD constantes del 2015)",
y = "% con cuenta en institución financiera",
caption = "Fuente: WDI Database, Global Findex 2025 (Banco Mundial)"
) +
theme_minimal(base_size = 11) +
theme(
legend.position = "right",
panel.grid.major = element_line(linewidth = 0.4, colour = "grey85"),
panel.grid.minor = element_line(linewidth = 0.25, colour = "grey92")
)
## `geom_smooth()` using formula = 'y ~ x'
5. Conclusión general