1 INTRODUCCIÓN

El banco de datos del Banco Mundial agrupa actualmente más de 80 bases de datos que incluyen información sobre una multitud de temas para muchos países del mundo. La base de datos de Indicadores de Desarrollo Mundial (WDI) es probablemente la más popular y un recurso muy utilizado, tanto por expertos como estudiantes.

Hay varias formas de acceder al WDI. Una forma es visitar el portal de datos del Banco Mundial, que permite a los usuarios no solo el acceso a los indicadores de WDI, sino también segmentar los datos por años, países, etc. El portal también permite a los usuarios crear diferentes tipos de gráficos, que se pueden descargar y pegar en sus documentos. Además, los usuarios pueden descargar los datos asociados a sus consultas en muchos formatos diferentes. Puede utilizarse el siguiente link para acceder a un tutorial que permite conocer los procedimientos de desgarga de la información:

link a tutorial

Sin embargo, en la asignatura Estadística para las Ciencias Sociales se usará el paquete WDI de R, desarrollado por Vincent Arel-Bundock, para descargar, analizar y representar gráficamente los datos del Banco Mundial.

2 DESCARGA DE LA INFORMACIÓN PROCEDENTE DEL BANCO MUNDIAL

#if(!require("WDI")) install.packages("WDI")   # Verificamos que está instalado el packete en el disco duro
library(WDI)                                  # Instalamos la librería que permite la extracción de los datos

Extracción de la variable de interés: en este caso “SP.POP.TOTL.FE.ZS”.

datos <- WDI(country="all",                                                     # Todos los paises del mundo
             indicator = c("tasa_fem" = "SP.POP.TOTL.FE.ZS"),                   # Código de la variable y denominación particular 
             extra = TRUE,                                                      # Variables adicionales (region, iso3c code ...)
             start = 2021,                                                      # Año de comienzo
             end = 2021)                                                        # Año de fin

Comprobamos la estructura del fichero.

str(datos)
## 'data.frame':    266 obs. of  13 variables:
##  $ country    : chr  "Afghanistan" "Africa Eastern and Southern" "Africa Western and Central" "Albania" ...
##  $ iso2c      : chr  "AF" "ZH" "ZI" "AL" ...
##  $ iso3c      : chr  "AFG" "AFE" "AFW" "ALB" ...
##  $ year       : int  2021 2021 2021 2021 2021 2021 2021 2021 2021 2021 ...
##  $ tasa_fem   : num  49.5 50.5 49.7 50 49.1 ...
##   ..- attr(*, "label")= chr "Population, female (% of total population)"
##  $ status     : chr  "" "" "" "" ...
##  $ lastupdated: chr  "2023-10-26" "2023-10-26" "2023-10-26" "2023-10-26" ...
##  $ region     : chr  "South Asia" "Aggregates" "Aggregates" "Europe & Central Asia" ...
##  $ capital    : chr  "Kabul" "" "" "Tirane" ...
##  $ longitude  : chr  "69.1761" "" "" "19.8172" ...
##  $ latitude   : chr  "34.5228" "" "" "41.3317" ...
##  $ income     : chr  "Low income" "Aggregates" "Aggregates" "Upper middle income" ...
##  $ lending    : chr  "IDA" "Aggregates" "Aggregates" "IBRD" ...

3 PROCESAMIENTO INICIAL DE LA INFORMACIÓN PROCEDENTE DEL BANCO MUNDIAL

Eliminamos todos los casos (filas) sin datos.

datos <- subset(datos,
                !(tasa_fem=="NA"))                

Selección de un subconjunto de datos en los que la variable “region no es igual a”Aggregates”. Esto supone eliminar los casos (filas) que no pertenecen a ningún país concreto (agregados espaciales).

datos <- subset(datos, 
                !(region=="Aggregates"))           # Subconjunto de datos en los que region no es igual a "Aggregates"     

Eliminación de variables (4 columnas) supérfluas.

datos <- datos[ , -c(4,6:7,9:11,13)]
names (datos)
## [1] "country"  "iso2c"    "iso3c"    "tasa_fem" "region"   "income"

Cambiamos los nombres de algunas variables. La sintaxis es la siguiente:

  • names(datos) examina todos los nombres en el dataframe datos

  • [names(datos) == old.var.name] extrae el nombre de la variable que desea modificar.

  • “new.var.name” asigna el nuevo nombre de variable.

Traducción de etiquetas en inglés al español.

names(datos)[names(datos) == "income"] <- "ingresos"
names(datos)[names(datos) == "country"] <- "pais"
  • Según ingresos
datos$ingresos[datos$ingresos == "Low income"] <- "BA"
datos$ingresos[datos$ingresos == "Lower middle income"] <- "BA_ME"
datos$ingresos[datos$ingresos == "Upper middle income"] <- "ME_AL"
datos$ingresos[datos$ingresos == "High income"] <- "AL"
datos$ingresos[datos$ingresos == "Not classified"] <- "NO"
  • Según localización
datos$region[datos$region=="Middle East & North Africa"] <- "MENA"
datos$region[datos$region=="South Asia"] <- "ASMER"
datos$region[datos$region=="Latin America & Caribbean"] <- "AMCAR"
datos$region[datos$region=="Europe & Central Asia"] <- "EUR"
datos$region[datos$region=="Sub-Saharan Africa"] <- "AFSS"
datos$region[datos$region=="East Asia & Pacific"] <- "AOPAC"
datos$region[datos$region=="North America"] <- "AMNOR"

Comprobamos que los cambios introducidos son correctos

View(datos)                                    

Grabación de la información original

  • En formato R como dataframe.
save(datos, file = "datos_wdi.RData") 

4 REPRESENTACIÓN CARTOGRÁFICA INICIAL

El paquete rnaturalearth proporciona un mapa con los límites administrativos de todo el mundo. La función ne_countries extrae los datos y la escala (el paquete rnaturalearthhires es necesario para scale = “large”). El resultado es un objeto de la clase sp (predeterminada), que se puede transformar en la clase sf con el argumento returnclass():

library("sf")
library("rnaturalearth")
paises <- ne_countries(scale = "medium", 
                      returnclass = "sf")
class(paises)
## [1] "sf"         "data.frame"

Para poder realizar la unión entre el objeto paises y el objeto datos, es necesario que una variable tenga el mismo nombre en ambos objetos.

names(paises)[names(paises) == 'iso_a3'] <- 'iso3c'                               
paises <- paises[  ,45]  

Unión (Join) del objeto paises (soporte gráfico=mapa) con el objeto datos (datos estadísticos a representar)

paises <- merge(paises, 
               datos, 
               all.y = TRUE)

Cambio de proyección

robinson <- "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"
paises <- st_transform(paises, robinson)

Finalmente, se representa gráficamente la variable en cuestión:

plot(paises["tasa_fem"],
     breaks="jenks",
     graticule = TRUE,
     pal=colorRampPalette(c("navy", "gray", "red")),
     key.pos = 1, 
     axes = TRUE, 
     key.width = lcm(1.3), 
     key.length = 1.0)