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:
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.
#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”.
<- WDI(country="all", # Todos los paises del mundo
datos 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" ...
Eliminamos todos los casos (filas) sin datos.
<- subset(datos,
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).
<- subset(datos,
datos !(region=="Aggregates")) # Subconjunto de datos en los que region no es igual a "Aggregates"
Eliminación de variables (4 columnas) supérfluas.
<- datos[ , -c(4,6:7,9:11,13)]
datos 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"
$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" 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" datos
Comprobamos que los cambios introducidos son correctos
View(datos)
Grabación de la información original
save(datos, file = "datos_wdi.RData")
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")
<- ne_countries(scale = "medium",
paises 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[ ,45] paises
Unión (Join) del objeto paises
(soporte gráfico=mapa)
con el objeto datos
(datos estadísticos a representar)
<- merge(paises,
paises
datos, all.y = TRUE)
Cambio de proyección
<- "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"
robinson <- st_transform(paises, robinson) paises
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)