UNIVERSIDAD DE EL SALVADOR

FACULTAD DE CIENCIAS ECONÓMICAS

ESCUELA DE ECONOMÍA

“LABORATORIO 1”

DOCENTE: MSF. CARLOS ADEMIR PÉREZ

MATERIA: MÉTODOS PARA EL ANÁLISIS ECONÓMICO

GT: 02

Presentado por:

NOMBRE CARNET
LUIS DAVID CASTRO MARTINEZ CM16011
KEILY MARLENE CAMPOS ULLOA CU14003
LISBETH ESMERALDA MELCHOR REYES MR14076
RUTH ABIGAIL MARROQUIN SARAVIA MS17026

1. Explique ¿qué es un API?

Por sus siglas API significa “interfaz de programación de aplicaciones”. es una interfaz o zona de contacto de un conjunto de bibliotecas o paquetes de software capacitados para que otro software o programa pueda “verlos” y ejecutarlos. Es decir, una API es la herramienta que permite que un software se comunique o interactúe con otro. La importancia de las API es que permiten a diferentes programas, dispositivos y aplicaciones trabajar en conjunto, compartir información y así crear la verdadera conectividad que significa Internet.(de Bogotá, C. D. C. (2019). El mundo conectado por las API.)

Con las API abiertas se simplifican los procesos independientemente del banco, proveedor de tarjeta, dispositivo u otros factores que intervienen en una operación financiera digital. Es así que, al comprobar el balance de una cuenta, obtener historiales de gasto o gestionar pagos, las API permiten utilizar las mismas metodologías, eliminando la necesidad de procedimientos extras, repetitivos y costosos. En el mundo de los servicios financieros, que incluye préstamos, seguros, comercio electrónico, pagos, información bancaria de clientes, historiales de operaciones de clientes, autenticación, transferencias bancarias, entre otras, son las API abiertas las que permiten suministrar toda esta información a quien lo necesite y facilitar así los procesos de las operaciones.

Las API fueron un intento para controlar el caos mediante encapsular conceptos lógicos de negocio tales como datos centrales de entidades (piense en cliente o producto) o transacciones (por ejemplo, “coloque una orden” u “obtenga el precio”) como servicios. Las API podrían ser consumidas de manera amplias y en expansión. Aún más, el buen diseño de la API también introdujo controles para ayudar a administrar su propio ciclo de vida, incluyendo:

-Control de versiones. La capacidad para cambiar sin reproducir versiones viejas de la misma API inoperable. -Estandarización. Una manera uniforme para que las API sean expresadas y consumidas, desde distribuidores de objetos COM y CORBA hasta servicios hoy para los patrones RESTful de hot. -Control de la información de la API. Un medio construido-en para enriquecer y manejar la información inmersa en la API. Esta información incluye metadatos, enfoques para manejar lotes de registros, y ganchos para plataformas de software puente, agentes de mensajes, y buses de servicio. También define cómo las API comunican, enrutan, y manipulan la información que esté siendo intercambiada.( La empresa sinfónica. Deloitte Insights, pp. -111-130. Larry Calabro, Chris Purpura, Vishvershwara Vasa, y Arun Perinkolam. Recuperado de: https://www2.deloitte.com/content/dam/Deloitte/co/Documents/technology/Imperativo%20de%20API.pdf)

Arquitectura logica de la API

2. A través del uso del software R, investigue sobre el acceso a los datos disponibles mediante API, para las instituciones: Banco Mundial (wbstats), Fondo Monetario Internacional (imfr), Comtrade de Naciones Unidas (comtradr) y para Yahoo Finance (quantmod).

a. Prepare un documento en Rmardown Mostrando ejemplos de acceso a la información, para cada una de las API señaladas. Explicando en cada caso la sintaxis de los comandos empleados.

  • Banco Mundial (wbstats)

#Para cargar los datos del Banco Mundial, se debe cargar la libreria (wbstas)

library(wbstats)

# Versión en caché de información denominados wb_cachelist proporcionan una instantánea de los países disponibles, los indicadores y otra información relevante.  La estructura de wb_cachelist es la siguiente:

str(wb_cachelist, max.level = 1)
## List of 8
##  $ countries    : tibble [304 x 18] (S3: tbl_df/tbl/data.frame)
##  $ indicators   : tibble [16,649 x 8] (S3: tbl_df/tbl/data.frame)
##  $ sources      : tibble [63 x 9] (S3: tbl_df/tbl/data.frame)
##  $ topics       : tibble [21 x 3] (S3: tbl_df/tbl/data.frame)
##  $ regions      : tibble [48 x 4] (S3: tbl_df/tbl/data.frame)
##  $ income_levels: tibble [7 x 3] (S3: tbl_df/tbl/data.frame)
##  $ lending_types: tibble [4 x 3] (S3: tbl_df/tbl/data.frame)
##  $ languages    : tibble [23 x 3] (S3: tbl_df/tbl/data.frame)
# Para obtener la información más reciente sobre los datos disponibles de la API del Banco Mundial, wbcache() descarga una versión actualizada de la información. (El lenguaje predeterminado es en inglés)
library(wbstats)

new_cache <- wb_cache()
# De forma predeterminada, la búsqueda se realiza en los campos de indicador_id, indicador e indicador_desc y devuelve las 3 columnas de las filas coincidentes. Los valores de id_indicador son entradas en wb_data(), la función para descargar los datos. Para devolver todas las columnas para el marco de datos de los indicadores, puede establecer extra = TRUE.

library(wbstats)

unemploy_inds<- wb_search("unemployment")

head(unemploy_inds)
## # A tibble: 6 x 3
##   indicator_id indicator                                                 indic~1
##   <chr>        <chr>                                                     <chr>  
## 1 fin37.t.a    Received government transfers in the past year (% age 15~ The pe~
## 2 fin37.t.a.1  Received government transfers in the past year, male  (%~ The pe~
## 3 fin37.t.a.10 Received government transfers in the past year, in labor~ The pe~
## 4 fin37.t.a.11 Received government transfers in the past year, out of l~ The pe~
## 5 fin37.t.a.2  Received government transfers in the past year, female (~ The pe~
## 6 fin37.t.a.3  Received government transfers in the past year, young ad~ The pe~
## # ... with abbreviated variable name 1: indicator_desc
# Se pueden buscar otros campos simplemente cambiando el parámetro de campos.

library(wbstats)

blmbrg_vars <- wb_search("Bloomberg", fields = "source_org")
#Desde aquí puede seleccionar qué indicadores queremos y pasar su ID de indicador a la función wb

pop_vars <- wbsearch("Population Growth")

pop_var_ids <- pop_vars[1:3, "indicatorID"]


pop_data <- wb(country = "countries_only", indicator = pop_var_ids, startdate = 2018, enddate = 2020)

head(pop_data)
##    iso3c      date value        indicatorID                        indicator
## 4    IND      2011 17.70 IN.EC.POP.GRWTHRAT Decadal Growth of Population (%)
## 14   IND 2001-2011 17.64 IN.EC.POP.GRWTHRAT Decadal Growth of Population (%)
## 25   IND 1991-2001 21.54 IN.EC.POP.GRWTHRAT Decadal Growth of Population (%)
## 36   IND 1981-1991 23.86 IN.EC.POP.GRWTHRAT Decadal Growth of Population (%)
## 47   IND 1971-1981 24.66 IN.EC.POP.GRWTHRAT Decadal Growth of Population (%)
## 58   IND 1961-1971 24.80 IN.EC.POP.GRWTHRAT Decadal Growth of Population (%)
##    iso2c country
## 4     IN   India
## 14    IN   India
## 25    IN   India
## 36    IN   India
## 47    IN   India
## 58    IN   India
# Los datos almacenados en caché predeterminados en wb_cachelist están en inglés. Para buscar indicadores en un idioma diferente, puede descargar una copia actualizada de wb_cachelist usando wb_cache(), con el parámetro lang establecido en el idioma de interés y luego configurarlo como el parámetro de caché en wb_search(). Se admiten otros idiomas en la medida en que sean compatibles con las fuentes de datos originales. Algunas fuentes brindan soporte completo para otros idiomas, mientras que otras tienen un soporte muy limitado. Si la fuente de datos no tiene una traducción para un determinado campo o indicador, entonces el resultado es NA, esto puede resultar en un número variable de coincidencias según el idioma que seleccione. Para ver una lista de idiomas disponibles, llame a wb_languages()

library(wbstats)

wb_langs <- wb_languages()
#Este data.frame contiene toda la información geográfica de las ubicaciones que están disponibles. Esta información es útil para buscar códigos de países, así como para unirlos con cualquier dato que haya consultado para agrupar y visualizar por columnas, como región o grupo de ingresos.

wb_geo <- wb_cachelist$countries

head(wb_geo, n = 5)
## # A tibble: 5 x 18
##   iso3c iso2c country     capit~1 longi~2 latit~3 regio~4 regio~5 region admin~6
##   <chr> <chr> <chr>       <chr>     <dbl>   <dbl> <chr>   <chr>   <chr>  <chr>  
## 1 ABW   AW    Aruba       Oranje~   -70.0   12.5  LCN     ZJ      Latin~ <NA>   
## 2 AFG   AF    Afghanistan Kabul      69.2   34.5  SAS     8S      South~ SAS    
## 3 AFR   A9    Africa      <NA>       NA     NA    <NA>    <NA>    Aggre~ <NA>   
## 4 AGO   AO    Angola      Luanda     13.2   -8.81 SSF     ZG      Sub-S~ SSA    
## 5 ALB   AL    Albania     Tirane     19.8   41.3  ECS     Z7      Europ~ ECA    
## # ... with 8 more variables: admin_region_iso2c <chr>, admin_region <chr>,
## #   income_level_iso3c <chr>, income_level_iso2c <chr>, income_level <chr>,
## #   lending_type_iso3c <chr>, lending_type_iso2c <chr>, lending_type <chr>, and
## #   abbreviated variable names 1: capital_city, 2: longitude, 3: latitude,
## #   4: region_iso3c, 5: region_iso2c, 6: admin_region_iso3c
# Si está interesado solo en algún subconjunto de países o regiones, puede pasar los códigos específicos al parámetro de país. Los códigos y nombres de países y regiones que también se pueden pasar al parámetro de país, principalmente los valores codificados de iso2c e iso3c del marco de datos de países en wb_cachelist o el retorno de wb_cache(). Cualquier valor de las columnas anteriores se puede mezclar y pasar a la misma llamada

ejemplo_geos <- c("Germany","France", "Ukraine", "USA", "HiGh InCoMe")
pop_data <- wb_data("SP.POP.TOTL", country = ejemplo_geos,
                    start_date = 2018, end_date = 2020)

pop_data
## # A tibble: 15 x 9
##    iso2c iso3c country        date SP.POP.TOTL unit  obs_st~1 footn~2 last_upd~3
##    <chr> <chr> <chr>         <dbl>       <dbl> <chr> <chr>    <chr>   <date>    
##  1 DE    DEU   Germany        2018    82905782 <NA>  <NA>     <NA>    2022-09-16
##  2 DE    DEU   Germany        2019    83092962 <NA>  <NA>     <NA>    2022-09-16
##  3 DE    DEU   Germany        2020    83160871 <NA>  <NA>     <NA>    2022-09-16
##  4 FR    FRA   France         2018    67101930 <NA>  <NA>     Prelim~ 2022-09-16
##  5 FR    FRA   France         2019    67248926 <NA>  <NA>     Prelim~ 2022-09-16
##  6 FR    FRA   France         2020    67379908 <NA>  <NA>     Prelim~ 2022-09-16
##  7 UA    UKR   Ukraine        2018    44622518 <NA>  <NA>     Estima~ 2022-09-16
##  8 UA    UKR   Ukraine        2019    44386203 <NA>  <NA>     Estima~ 2022-09-16
##  9 UA    UKR   Ukraine        2020    44132049 <NA>  <NA>     Estima~ 2022-09-16
## 10 US    USA   United States  2018   326838199 <NA>  <NA>     <NA>    2022-09-16
## 11 US    USA   United States  2019   328329953 <NA>  <NA>     <NA>    2022-09-16
## 12 US    USA   United States  2020   331501080 <NA>  <NA>     <NA>    2022-09-16
## 13 <NA>  XD    High income    2018  1229836619 <NA>  <NA>     <NA>    2022-09-16
## 14 <NA>  XD    High income    2019  1234830048 <NA>  <NA>     <NA>    2022-09-16
## 15 <NA>  XD    High income    2020  1240684527 <NA>  <NA>     <NA>    2022-09-16
## # ... with abbreviated variable names 1: obs_status, 2: footnote,
## #   3: last_updated
# Si no sabe la última fecha en que un indicador que le interesa está disponible para su país, puede usar mrv en lugar de start_date y end_date. mrv representa el valor más reciente y toma un número entero correspondiente al número de valores más recientes que desea devolver.

library(wbstats)


gdp_capita <- wb_data("NY.GDP.PCAP.CD", mrv = 1)
# No todas las fuentes de datos admiten todos los idiomas. Si un indicador no tiene una traducción para un idioma en particular, los campos no admitidos se devolverán como NA. Esto podría resultar potencialmente en un número diferente de indicadores coincidentes de wb_search()

library(wbstats)

# english
cache_en <- wb_cache()
sum(is.na(cache_en$indicators$indicator))
## [1] 0
#> [1] 0

# spanish
cache_es <- wb_cache(lang = "es")
sum(is.na(cache_es$indicators$indicator))
## [1] 17154
#Este marco de datos contiene información como la descripción y la fuente de todos los indicadores que están disponibles para descargar.

wb_ind <- wb_cachelist$indicators

head(wb_ind, n = 5)
## # A tibble: 5 x 8
##   indicator_id         indicator     unit  indic~1 sourc~2 topics sourc~3 source
##   <chr>                <chr>         <lgl> <chr>   <chr>   <list>   <dbl> <chr> 
## 1 1.0.HCount.1.90usd   Poverty Head~ NA    The po~ LAC Eq~ <df>        37 LAC E~
## 2 1.0.HCount.2.5usd    Poverty Head~ NA    The po~ LAC Eq~ <df>        37 LAC E~
## 3 1.0.HCount.Mid10to50 Middle Class~ NA    The po~ LAC Eq~ <df>        37 LAC E~
## 4 1.0.HCount.Ofcl      Official Mod~ NA    The po~ LAC Eq~ <df>        37 LAC E~
## 5 1.0.HCount.Poor4uds  Poverty Head~ NA    The po~ LAC Eq~ <df>        37 LAC E~
## # ... with abbreviated variable names 1: indicator_desc, 2: source_org,
## #   3: source_id
#Anteriormente, cuando usamos la función wbsearch, en realidad está buscando a través de este indicador data.frame de wb_cachelist. Ahora que sabemos un poco más sobre lo que hace la función, tenemos algunas opciones más disponibles. Por ejemplo, podemos usar el parámetro de campos para cambiar qué campos en el data.frame de indicadores.

wbsearch(pattern = "unemployment", fields = "indicator")
#Para obtener la información más reciente sobre los datos disponibles de la API del Banco Mundial, wbcache() (cargada anteriormente) descarga una versión actualizada de la información almacenada en wb_cachelist. wb_cachelist es simplemente un retorno guardado de wbcache(lang = "en"). Para usar esta información actualizada en wbsearch() o wb(), establezca el parámetro de caché en la lista guardada devuelta por wbcache(). Siempre es una buena idea usar esta información actualizada para asegurarse de tener acceso a la información más reciente disponible, como indicadores o fuentes de datos recientemente agregados.

wb_search("gdp.*capita.*US\\$", cache = new_cache)
## # A tibble: 2 x 3
##   indicator_id   indicator                          indicator_desc              
##   <chr>          <chr>                              <chr>                       
## 1 NY.GDP.PCAP.CD GDP per capita (current US$)       GDP per capita is gross dom~
## 2 NY.GDP.PCAP.KD GDP per capita (constant 2015 US$) GDP per capita is gross dom~
# Una vez que haya encontrado el conjunto de indicadores que le gustaría explorar más a fondo, el siguiente paso es descargar los datos con wb_data(). Los siguientes ejemplos pretenden resaltar las diferentes formas en que se puede usar wb_data() y demostrar los principales parámetros opcionales y algunas gráficas que se pueden construir.



library(wbstats)

# PIB per cápita

gdp_data <- wb_data(country = "CL", indicator = "NY.GDP.PCAP.CD", start_date = 2012, end_date = 2022)
summary(gdp_data)
##     iso2c              iso3c             country               date     
##  Length:10          Length:10          Length:10          Min.   :2012  
##  Class :character   Class :character   Class :character   1st Qu.:2014  
##  Mode  :character   Mode  :character   Mode  :character   Median :2016  
##                                                           Mean   :2016  
##                                                           3rd Qu.:2019  
##                                                           Max.   :2021  
##  NY.GDP.PCAP.CD      unit            obs_status          footnote        
##  Min.   :13221   Length:10          Length:10          Length:10         
##  1st Qu.:13920   Class :character   Class :character   Class :character  
##  Median :14831   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :14808                                                           
##  3rd Qu.:15668                                                           
##  Max.   :16503                                                           
##   last_updated       
##  Min.   :2022-09-16  
##  1st Qu.:2022-09-16  
##  Median :2022-09-16  
##  Mean   :2022-09-16  
##  3rd Qu.:2022-09-16  
##  Max.   :2022-09-16

Ejemplo 01

head(gdp_data)
## # A tibble: 6 x 9
##   iso2c iso3c country  date NY.GDP.PCAP.CD unit  obs_status footnote last_upda~1
##   <chr> <chr> <chr>   <dbl>          <dbl> <chr> <chr>      <chr>    <date>     
## 1 CL    CHL   Chile    2012         15355. <NA>  <NA>       <NA>     2022-09-16 
## 2 CL    CHL   Chile    2013         15778. <NA>  <NA>       <NA>     2022-09-16 
## 3 CL    CHL   Chile    2014         14607. <NA>  <NA>       <NA>     2022-09-16 
## 4 CL    CHL   Chile    2015         13495. <NA>  <NA>       <NA>     2022-09-16 
## 5 CL    CHL   Chile    2016         13691. <NA>  <NA>       <NA>     2022-09-16 
## 6 CL    CHL   Chile    2017         14963. <NA>  <NA>       <NA>     2022-09-16 
## # ... with abbreviated variable name 1: last_updated

Ejemplo 02

tail(gdp_data)
## # A tibble: 6 x 9
##   iso2c iso3c country  date NY.GDP.PCAP.CD unit  obs_status footnote last_upda~1
##   <chr> <chr> <chr>   <dbl>          <dbl> <chr> <chr>      <chr>    <date>     
## 1 CL    CHL   Chile    2016         13691. <NA>  <NA>       <NA>     2022-09-16 
## 2 CL    CHL   Chile    2017         14963. <NA>  <NA>       <NA>     2022-09-16 
## 3 CL    CHL   Chile    2018         15772. <NA>  <NA>       <NA>     2022-09-16 
## 4 CL    CHL   Chile    2019         14699. <NA>  <NA>       <NA>     2022-09-16 
## 5 CL    CHL   Chile    2020         13221. <NA>  <NA>       <NA>     2022-09-16 
## 6 CL    CHL   Chile    2021         16503. <NA>  <NA>       <NA>     2022-09-16 
## # ... with abbreviated variable name 1: last_updated

Ejemplo 03

library(ggplot2)

ggplot(gdp_data, aes(x = date, y = NY.GDP.PCAP.CD)) +
  geom_point()

Ejemplo 04

ggplot(gdp_data, aes(x = date, y = NY.GDP.PCAP.CD)) +
  geom_col()

Ejemplo 05

ggplot(gdp_data, aes(x = date, y = NY.GDP.PCAP.CD)) +
  geom_col(fill = "pink") +
  geom_point(color = "blue")

Ejemplo 06

more_gdp_data <- wb_data(country = c("MX", "CR", "CO"),
                         indicator = "NY.GDP.PCAP.CD",
                         start_date = 2005, end_date = 2022)

ggplot(more_gdp_data, aes(x = date, y = NY.GDP.PCAP.CD, color = country, shape = country)) +
  geom_point()

Ejemplo 07

library(rnaturalearth)
library(tidyverse)
library(wbstats)

ind <- "NY.GDP.PCAP.PP.KD"
indicator_info <- filter(wb_cachelist$indicators, indicator_id == ind)

ne_countries(returnclass = "sf") %>%
  left_join(
    wb_data(
      c(gdp = ind), 
         mrnev = 1
          ),
    c("iso_a3" = "iso3c")
  ) %>%
  filter(iso_a3 != "ATA") %>% 
  ggplot(aes(fill = gdp)) +
  geom_sf() +
  scale_fill_viridis_c(labels = scales::percent_format(scale = 1)) +
  theme(legend.position="bottom") +
  labs(
    title = indicator_info$indicator,
    fill = NULL,
    caption = paste("Source:", indicator_info$source_org) 
  )

  • Fondo Monetario Internacional (imfr)

La API del FMI contiene la gama completa de todas las publicaciones estadisticas y financieras realizadas por el Fondo Monetario Internacional, en donde destaca el conjunto de datos establecida por una amplia gama de paises ampliadas en conjuntos de bases de datos que contienen variables de estadisticas internacionales contenidas en cada base de datos, permitiendo segun sea el objetivo acceder a las distintas bases de datos para seleccionar las variables objetivo y limitando a los paises a tratar y permitiendo hacer ajustes al como se desea recibir la informacion misma.

Carga del paquete “imfr”

#la descarga del paquete debe ser mediante el sitio de https://cran.r-project.org/src/contrib/Archive/imfr/ , debido a que el paquete “imfr” se elimino del repositorio de CRAN, por lo que debe ser descargado e instalada posteriormente en la libreria de R para acceder y utilizar el paquete.

library(curl)
library(imfr)
library(dplyr)
library(tidyr)

Primeros acercamientos a la base de datos del FMI

El API del FMI contiene una amplia gama de base de datos, para conocer las distintas bases de datos y la descripcion de las mismas, se utilizara la siguiente funcion:

base_datos_imf<-imf_ids() 
print(head(base_datos_imf))
##   database_id
## 1 BOP_2017M06
## 2  BOP_2020M3
## 3 BOP_2017M11
## 4  DOT_2020Q1
## 5  GFSMAB2016
## 6 BOP_2019M12
##                                                                        description
## 1                                              Balance of Payments (BOP), 2017 M06
## 2                                              Balance of Payments (BOP), 2020 M03
## 3                                              Balance of Payments (BOP), 2017 M11
## 4                                    Direction of Trade Statistics (DOTS), 2020 Q1
## 5 Government Finance Statistics Yearbook (GFSY 2016), Main Aggregates and Balances
## 6                                              Balance of Payments (BOP), 2019 M12

Creando un objeto en el environment llamado “base_datos_imf” que contendra las 259 bases de datos existentes en el paquete “imfr” y que dara una descripcion de cada una, como ejemplo solo se presentaran las primeras 6.

Para explorar una base de datos en especifico se debe seleccionar la misma a traves de su “ID” o codigo de identificacion, de igual forma para conocer el como esta constituida esta base de datos como sus escalas de dimension de cada variable, frecuencia de los datos y las areas geograficas se debe utilizar la siguiente funcion:

lista_codigos_IFS<-imf_codelist(database_id = ("IFS_2019M01"))
print(lista_codigos_IFS)
##                   codelist        description
## 1             CL_UNIT_MULT              Scale
## 2                  CL_FREQ          Frequency
## 3      CL_AREA_IFS_2019M01 Geographical Areas
## 4 CL_INDICATOR_IFS_2019M01          Indicator
## 5           CL_TIME_FORMAT        Time format

Se presentan como ejemplo la lista de codigos de dimension de la base de datos “IFS_2019M01” que hace referencia a las estadisticas financieras internacionales actualizadas a enero de 2019.

Al generar el listado de codigos de dimension de la libreria “IFS” esta presenta 5 dimensiones, en donde cada objeto presenta una lista de codigos o comandos que se pueden solicitar a la base de datos utilizada, para observarlos se utiliza la siguiente funcion:

IFS_AREA_codigos<-imf_codes(codelist = "CL_AREA_IFS")

Acceso a una base de datos especifica

La lista de codigos en donde se encuentran los indicadores economicos tiende a ser la mas utilizada en cada una de las bases de datos, ya que contiene la lista de todos los codigos de indicadores segun sea la base de datos que se esta utilizando puede variar el numero de indicadores dentro del paquete “imfr”.

IFS_INDICATOR_codigos<-imf_codes(codelist = "CL_INDICATOR_IFS")
print(head(IFS_INDICATOR_codigos))
##              codes
## 1       NFIAXD_XDC
## 2    NFIAXD_SA_XDC
## 3   NFIAXD_NSA_XDC
## 4     NFIAXD_R_XDC
## 5  NFIAXD_R_SA_XDC
## 6 NFIAXD_R_NSA_XDC
##                                                                                 description
## 1                      Acquisitions less Disposals of Valuables, Nominal, Domestic Currency
## 2 Acquisitions less Disposals of Valuables, Nominal, Seasonally Adjusted, Domestic Currency
## 3          Acquisitions less Disposals of Valuables, Nominal, Unadjusted, Domestic Currency
## 4                         Acquisitions less Disposals of Valuables, Real, Domestic Currency
## 5    Acquisitions less Disposals of Valuables, Real, Seasonally Adjusted, Domestic Currency
## 6             Acquisitions less Disposals of Valuables, Real, Unadjusted, Domestic Currency

El caso para la base de datos “IFS” presenta un total de 1679 indicadores siendo de las que mas indicadores poseen por ser una base de datos muy generalizada y poseer muchas series parecidas del mismo indicador.

Carga de los codigos ISO2 a traves de la libreria “countrycode” para descargar los paises con sus codigos respectivos

Para obtener los datos de la API, se necesitara presenta los paises con sus respectivos codigos (ISO2) para asi obtener facilmente los paises de interes, por lo cual se genera un registro de paies que contenga todos los paises que el FMI entrega informacion y los asocie con sus respectivos codigos ISO.

library(countrycode)
data(codelist)
registro_paises <- codelist
registro_paises<- registro_paises %>% 
  select(country.name.en , iso2c, iso3c, imf, continent, region) %>% filter(!is.na(imf) & !is.na(iso2c))

print(head(registro_paises))
## # A tibble: 6 x 6
##   country.name.en iso2c iso3c   imf continent region                    
##   <chr>           <chr> <chr> <dbl> <chr>     <chr>                     
## 1 Afghanistan     AF    AFG     512 Asia      South Asia                
## 2 Albania         AL    ALB     914 Europe    Europe & Central Asia     
## 3 Algeria         DZ    DZA     612 Africa    Middle East & North Africa
## 4 American Samoa  AS    ASM     859 Oceania   East Asia & Pacific       
## 5 Angola          AO    AGO     614 Africa    Sub-Saharan Africa        
## 6 Anguilla        AI    AIA     312 Americas  Latin America & Caribbean

Ejemplo 01. Visualizacion de indicadores economicos de paises de America Latina y el Caribe.

Como ejemplo registraremos de los paises aquellos que se encuentren en la region de America Latina y el Caribe, con el objetivo de evaluar como funcionan los indicadores y como se presenta la informacion

latin_caribbean_America_ISO2<- registro_paises$iso2c[registro_paises$region=="Latin America & Caribbean"]

Luego de crear la funcion que registra los paises de America Latina y el Caribe junto con sus codigos ISO, se presentaran 3 indicadores (Balanza de Pagos, Tenencia de Divisas en Dolares y Tipo de Cambio Real Efectivo en base al Consumo) para esta region, con una frecuencia anual y que el año de inicio sea el 2010 hasta las ultimas fechas disponibles:

IFS_latin_caribbean_America<-imf_data(database_id = "IFS",indicator = c("BG_BP6_USD" , "HPHC_USD"    , "EREER_IX" ), country = latin_caribbean_America_ISO2, freq = 'A', start = 2010 , end = current_year())
print(head(IFS_latin_caribbean_America))
##   iso2c year BG_BP6_USD  HPHC_USD  EREER_IX
## 1    AG 2010  -408.1682  51.93587 100.00000
## 2    AG 2011  -374.5695  62.12065  96.66617
## 3    AG 2012  -424.5054  88.12310 100.74107
## 4    AG 2013  -430.1833 118.18526  99.96000
## 5    AG 2014  -433.6443  94.07268 100.30884
## 6    AG 2015  -358.5371  71.26725 110.34592

Ejemplo 02. Destino de las exportaciones de paises del Oriente Asiatico hacia America Latina y el Caribe a traves de la base de datos “DOT”.

Se puede utilizar el paquete “imfr” para generar consultas a bases de datos complejas como las direcciones de comercio (DOT), en ese caso se sugiere devolver datos que no han sido procesados, lo que permita devolver listas que seran mas factibles de manejar en un marco de datos.

Se creara una funcion que recoga los codigos ISO de los paises del Oriente Asiatico (China. Japon, Korea del Sur), que luego se utilizara para reflejar cuanto de las exportaciones de estos paises terminan en America Latina y el Caribe.

Oriente_Asia_ISO2<- c("CN", "JP" , "KR")
DOT_Oriente_Asia <- imf_data(database_id = "DOT" , indicator = c("TXG_FOB_USD") , country = Oriente_Asia_ISO2 , start = 2010, end = current_year(), return_raw = TRUE)

El objeto creado servira como una lista anidada la cual se utilizara para generar el cuadro de las exportaciones, pero debe deshacerse el anidado o desatarlo, por lo cual se utiliza la siguiente funcion:

DOT_Oriente_Asia_Data <- DOT_Oriente_Asia$CompactData$DataSet$Series

DOT_Oriente_Asia_Data <- DOT_Oriente_Asia_Data %>% 
  filter(`@FREQ` == "A" & `@COUNTERPART_AREA` %in% latin_caribbean_America_ISO2) %>% unnest(Obs) %>% 
  arrange(`@REF_AREA`, `@COUNTERPART_AREA`) 

print(head(DOT_Oriente_Asia_Data))
## # A tibble: 6 x 8
##   `@FREQ` `@REF_AREA` `@INDICATOR` @COUNTERPAR~1 @UNIT~2 @TIME~3 @TIME~4 @OBS_~5
##   <chr>   <chr>       <chr>        <chr>         <chr>   <chr>   <chr>   <chr>  
## 1 A       CN          TXG_FOB_USD  AG            6       P1Y     2010    806.14~
## 2 A       CN          TXG_FOB_USD  AG            6       P1Y     2011    657.69~
## 3 A       CN          TXG_FOB_USD  AG            6       P1Y     2012    758.27~
## 4 A       CN          TXG_FOB_USD  AG            6       P1Y     2013    245.61~
## 5 A       CN          TXG_FOB_USD  AG            6       P1Y     2014    174.06~
## 6 A       CN          TXG_FOB_USD  AG            6       P1Y     2015    54.021~
## # ... with abbreviated variable names 1: `@COUNTERPART_AREA`, 2: `@UNIT_MULT`,
## #   3: `@TIME_FORMAT`, 4: `@TIME_PERIOD`, 5: `@OBS_VALUE`
library(CoordinateCleaner)
data(countryref)
Long_Lat <-countryref %>% 
  filter(type == "country" & iso2 %in% latin_caribbean_America_ISO2) %>% 
  select(iso2, "destination_lon" = centroid.lon , "destination_lat"= centroid.lat, capital.lon, capital.lat) %>%
  distinct(capital.lat, .keep_all = TRUE) %>% 
  mutate(China_Lat = 35.00000000, China_Long = 105.000) %>% rename("destination" = iso2)

Ejemplo 03.Mapa de visualizacion del destino de exportaciones de China a America Latina y el Caribe, en el periodo de 2015.

#A traves de la libreria “leaflet”, se permite crear un mapa interactivo de los principales destinos de las exportaciones para en este caso del pais asiatico China, teniendo como periodo de tiempo el año 2015.

China_Exportaciones_Lat <- DOT_Oriente_Asia_Data %>% 
  filter(`@REF_AREA`== "CN" & `@TIME_PERIOD` == 2015) %>% 
  select("origin" = `@REF_AREA`, "destination" = `@COUNTERPART_AREA`, "Export_Value" =`@OBS_VALUE`) %>% 
  left_join(. , Long_Lat)

China_Exportaciones_Lat$Export_Value <- as.numeric(China_Exportaciones_Lat$Export_Value)/1000
library(leaflet)
library(leaflet.minicharts)
leaflet() %>% 
  addTiles() %>%
  addFlows(lng0 = China_Exportaciones_Lat$China_Long , 
           lat0 = China_Exportaciones_Lat$China_Lat  , 
           lng1 = China_Exportaciones_Lat$destination_lon , 
           lat1 = China_Exportaciones_Lat$destination_lat , 
           flow = China_Exportaciones_Lat$Export_Value , 
           dir = 1, 
           minThickness = 0.1,
           maxThickness = 2.5)
  • Comtrade de Naciones Unidas (comtradr)

Extracción de códigos y descripciones de reporteros de la API Comtrade de la ONU

Esta es una forma rápida de leer la lista de códigos de país/área en R: se instala la libreria rjson que nos permite reducir el tamaño de los archivos y el volumen de datos que es necesario transferir, se continua asignandole nombre a la extracción de los datos a través de fromJSON el cual devuelve los datos extraidos por defecto en lista, pasamos a guardar el data.framer simplificando con SAPPLY a tres variables.

library(rjson)
API_ONU <- "http://comtrade.un.org/data/cache/partnerAreas.json"
reporters <- fromJSON(file=API_ONU)
reporters <- as.data.frame(t(sapply(reporters$results,rbind)))

Función para extraer datos de la API Comtrade de la ONU

Esta función, get.Comtrade()extrae datos de un Comtrade utilizando csv o el formato json. Especificamos las variables y como proceder si la API se trabaja en “cvs” o en “json”, adicional a esto validamos la información al imprimir cada asignación.

get.Comtrade <- function(url="http://comtrade.un.org/api/get?"
                         ,maxrec=50000
                         ,type="C"
                         ,freq="A"
                         ,px="HS"
                         ,ps="now"
                         ,r
                         ,p
                         ,rg="all"
                         ,cc="TOTAL"
                         ,fmt="json"
)
{
  string<- paste(url
                 ,"max=",maxrec,"&" #maximum no. of records returned
                 ,"type=",type,"&" #type of trade (c=commodities)
                 ,"freq=",freq,"&" #frequency
                 ,"px=",px,"&" #classification
                 ,"ps=",ps,"&" #time period
                 ,"r=",r,"&" #reporting area
                 ,"p=",p,"&" #partner country
                 ,"rg=",rg,"&" #trade flow
                 ,"cc=",cc,"&" #classification code
                 ,"fmt=",fmt        #Format
                 ,sep = ""
  )
  
  if(fmt == "csv") {
    raw.data<- read.csv(string,header=TRUE)
    return(list(validation=NULL, data=raw.data))
  } else {
    if(fmt == "json" ) {
      raw.data<- fromJSON(file=string)
      data<- raw.data$dataset
      validation<- unlist(raw.data$validation, recursive=TRUE)
      ndata<- NULL
      if(length(data)> 0) {
        var.names<- names(data[[1]])
        data<- as.data.frame(t( sapply(data,rbind)))
        ndata<- NULL
        for(i in 1:ncol(data)){
          data[sapply(data[,i],is.null),i]<- NA
          ndata<- cbind(ndata, unlist(data[,i]))
        }
        ndata<- as.data.frame(ndata)
        colnames(ndata)<- var.names
      }
      return(list(validation=validation,data =ndata))
    }
  }
}

EJEMPLOS DE ACCESO A LA INFORMACIÓN

Ejemplo 01

Uso de parámetros predeterminados (es decir, flujos recientes de datos comerciales totales anuales del EU, en json formato), especificando solo áreas de informes y socios, utilizamos get.Comtrade, paquete permite a los usuarios interactuar con la API directamente desde R y presenta funciones para realizar consultas e importar datos.

FORMATO1 <- get.Comtrade(r="842", p="124,484")
FORMATO1
## $validation
##                                                        status.name 
##                                                               "Ok" 
##                                                       status.value 
##                                                                "0" 
##                                                    status.category 
##                                                                "0" 
##                                                 status.description 
##                                                                 "" 
##                                                     status.helpUrl 
## "For more reference visit http://comtrade.un.org/data/dev/portal/" 
##                                                        count.value 
##                                                                "6" 
##                                                      count.started 
##                                "2022-10-20T03:51:03.0183468+02:00" 
##                                                     count.finished 
##                                "2022-10-20T03:51:03.5808063+02:00" 
##                                              count.durationSeconds 
##                                                        "0.5624595" 
##                                               datasetTimer.started 
##                                "2022-10-20T03:51:03.0183468+02:00" 
##                                              datasetTimer.finished 
##                                "2022-10-20T03:51:05.0051291+02:00" 
##                                       datasetTimer.durationSeconds 
##                                                        "1.9867823" 
## 
## $data
##   pfCode   yr period periodDesc aggrLevel IsLeaf rgCode    rgDesc rtCode
## 1     H5 2020   2020       2020         0      0      1    Import    842
## 2     H5 2020   2020       2020         0      0      2    Export    842
## 3     H5 2020   2020       2020         0      0      3 Re-Export    842
## 4     H5 2020   2020       2020         0      0      1    Import    842
## 5     H5 2020   2020       2020         0      0      2    Export    842
## 6     H5 2020   2020       2020         0      0      3 Re-Export    842
##   rtTitle rt3ISO ptCode ptTitle pt3ISO ptCode2 ptTitle2 pt3ISO2 cstCode cstDesc
## 1     USA    USA    124  Canada    CAN    <NA>                                 
## 2     USA    USA    124  Canada    CAN    <NA>                                 
## 3     USA    USA    124  Canada    CAN    <NA>                                 
## 4     USA    USA    484  Mexico    MEX    <NA>                                 
## 5     USA    USA    484  Mexico    MEX    <NA>                                 
## 6     USA    USA    484  Mexico    MEX    <NA>                                 
##   motCode motDesc cmdCode        cmdDescE qtCode      qtDesc qtAltCode
## 1                   TOTAL All Commodities      1 No Quantity      <NA>
## 2                   TOTAL All Commodities      1 No Quantity      <NA>
## 3                   TOTAL All Commodities      1 No Quantity      <NA>
## 4                   TOTAL All Commodities      1 No Quantity      <NA>
## 5                   TOTAL All Commodities      1 No Quantity      <NA>
## 6                   TOTAL All Commodities      1 No Quantity      <NA>
##   qtAltDesc TradeQuantity AltQuantity NetWeight GrossWeight   TradeValue
## 1                       0        <NA>         0        <NA> 276195545882
## 2                       0        <NA>         0        <NA> 255021619206
## 3                       0        <NA>         0        <NA>  45813968863
## 4                       0        <NA>         0        <NA> 328861803529
## 5                       0        <NA>         0        <NA> 212671750902
## 6                       0        <NA>         0        <NA>  52526003850
##   CIFValue FOBValue estCode
## 1     <NA>     <NA>       4
## 2     <NA>     <NA>       4
## 3     <NA>     <NA>       4
## 4     <NA>     <NA>       4
## 5     <NA>     <NA>       4
## 6     <NA>     <NA>       4

Ejemplo 02

Uso de parámetros predeterminados en formato csv, especificando solo áreas de informes y socios, en este caso no se incluye información de validación en la salida de datos.

FORMATO2 <- get.Comtrade(r="842", p="124,484", fmt="csv")
FORMATO2
## $validation
## NULL
## 
## $data
##   Classification Year Period Period.Desc. Aggregate.Level Is.Leaf.Code
## 1             H5 2020   2020         2020               0            0
## 2             H5 2020   2020         2020               0            0
## 3             H5 2020   2020         2020               0            0
## 4             H5 2020   2020         2020               0            0
## 5             H5 2020   2020         2020               0            0
## 6             H5 2020   2020         2020               0            0
##   Trade.Flow.Code Trade.Flow Reporter.Code Reporter Reporter.ISO Partner.Code
## 1               1     Import           842      USA          USA          124
## 2               2     Export           842      USA          USA          124
## 3               3  Re-Export           842      USA          USA          124
## 4               1     Import           842      USA          USA          484
## 5               2     Export           842      USA          USA          484
## 6               3  Re-Export           842      USA          USA          484
##   Partner Partner.ISO X2nd.Partner.Code X2nd.Partner X2nd.Partner.ISO
## 1  Canada         CAN                NA           NA               NA
## 2  Canada         CAN                NA           NA               NA
## 3  Canada         CAN                NA           NA               NA
## 4  Mexico         MEX                NA           NA               NA
## 5  Mexico         MEX                NA           NA               NA
## 6  Mexico         MEX                NA           NA               NA
##   Customs.Proc..Code Customs Mode.of.Transport.Code Mode.of.Transport
## 1                 NA      NA                     NA                NA
## 2                 NA      NA                     NA                NA
## 3                 NA      NA                     NA                NA
## 4                 NA      NA                     NA                NA
## 5                 NA      NA                     NA                NA
## 6                 NA      NA                     NA                NA
##   Commodity.Code       Commodity Qty.Unit.Code    Qty.Unit Qty
## 1          TOTAL All Commodities             1 No Quantity   0
## 2          TOTAL All Commodities             1 No Quantity   0
## 3          TOTAL All Commodities             1 No Quantity   0
## 4          TOTAL All Commodities             1 No Quantity   0
## 5          TOTAL All Commodities             1 No Quantity   0
## 6          TOTAL All Commodities             1 No Quantity   0
##   Alt.Qty.Unit.Code Alt.Qty.Unit Alt.Qty Netweight..kg. Gross.weight..kg.
## 1                NA           NA      NA              0                NA
## 2                NA           NA      NA              0                NA
## 3                NA           NA      NA              0                NA
## 4                NA           NA      NA              0                NA
## 5                NA           NA      NA              0                NA
## 6                NA           NA      NA              0                NA
##   Trade.Value..US.. CIF.Trade.Value..US.. FOB.Trade.Value..US.. Flag
## 1      276195545882                    NA                    NA    4
## 2      255021619206                    NA                    NA    4
## 3       45813968863                    NA                    NA    4
## 4      328861803529                    NA                    NA    4
## 5      212671750902                    NA                    NA    4
## 6       52526003850                    NA                    NA    4

Ejemplo 03

Ejemplo para extraer datos mensuales, indicamos, pais, año, y formato

DATOS_MENSUALES <- get.Comtrade(r="842", p="0", ps="201201,201202,201203", freq="M")
DATOS_MENSUALES
## $validation
##                                                        status.name 
##                                                               "Ok" 
##                                                       status.value 
##                                                                "0" 
##                                                    status.category 
##                                                                "0" 
##                                                 status.description 
##                                                                 "" 
##                                                     status.helpUrl 
## "For more reference visit http://comtrade.un.org/data/dev/portal/" 
##                                                        count.value 
##                                                                "9" 
##                                                      count.started 
##                                              "0001-01-01T00:00:00" 
##                                                     count.finished 
##                                              "0001-01-01T00:00:00" 
##                                              count.durationSeconds 
##                                                                "0" 
##                                               datasetTimer.started 
##                                "2022-10-20T03:51:15.1558501+02:00" 
##                                              datasetTimer.finished 
##                                "2022-10-20T03:51:15.3121702+02:00" 
##                                       datasetTimer.durationSeconds 
##                                                        "0.1563201" 
## 
## $data
##   pfCode   yr period    periodDesc aggrLevel IsLeaf rgCode     rgDesc rtCode
## 1     HS 2012 201202 February 2012         0      0      2    Exports    842
## 2     HS 2012 201201  January 2012         0      0      3 Re-exports    842
## 3     HS 2012 201202 February 2012         0      0      3 Re-exports    842
## 4     HS 2012 201203    March 2012         0      0      1    Imports    842
## 5     HS 2012 201203    March 2012         0      0      2    Exports    842
## 6     HS 2012 201203    March 2012         0      0      3 Re-exports    842
## 7     HS 2012 201201  January 2012         0      0      1    Imports    842
## 8     HS 2012 201202 February 2012         0      0      1    Imports    842
## 9     HS 2012 201201  January 2012         0      0      2    Exports    842
##                    rtTitle rt3ISO ptCode ptTitle pt3ISO ptCode2 ptTitle2
## 1 United States of America   <NA>      0   World   <NA>    <NA>         
## 2 United States of America   <NA>      0   World   <NA>    <NA>         
## 3 United States of America   <NA>      0   World   <NA>    <NA>         
## 4 United States of America   <NA>      0   World   <NA>    <NA>         
## 5 United States of America   <NA>      0   World   <NA>    <NA>         
## 6 United States of America   <NA>      0   World   <NA>    <NA>         
## 7 United States of America   <NA>      0   World   <NA>    <NA>         
## 8 United States of America   <NA>      0   World   <NA>    <NA>         
## 9 United States of America   <NA>      0   World   <NA>    <NA>         
##   pt3ISO2 cstCode cstDesc motCode motDesc cmdCode        cmdDescE qtCode qtDesc
## 1                                           TOTAL All Commodities   <NA>   <NA>
## 2                                           TOTAL All Commodities   <NA>   <NA>
## 3                                           TOTAL All Commodities   <NA>   <NA>
## 4                                           TOTAL All Commodities   <NA>   <NA>
## 5                                           TOTAL All Commodities   <NA>   <NA>
## 6                                           TOTAL All Commodities   <NA>   <NA>
## 7                                           TOTAL All Commodities   <NA>   <NA>
## 8                                           TOTAL All Commodities   <NA>   <NA>
## 9                                           TOTAL All Commodities   <NA>   <NA>
##   qtAltCode qtAltDesc TradeQuantity AltQuantity NetWeight GrossWeight
## 1      <NA>                    <NA>        <NA>      <NA>        <NA>
## 2      <NA>                    <NA>        <NA>      <NA>        <NA>
## 3      <NA>                    <NA>        <NA>      <NA>        <NA>
## 4      <NA>                    <NA>        <NA>      <NA>        <NA>
## 5      <NA>                    <NA>        <NA>      <NA>        <NA>
## 6      <NA>                    <NA>        <NA>      <NA>        <NA>
## 7      <NA>                    <NA>        <NA>      <NA>        <NA>
## 8      <NA>                    <NA>        <NA>      <NA>        <NA>
## 9      <NA>                    <NA>        <NA>      <NA>        <NA>
##     TradeValue CIFValue FOBValue estCode
## 1 123448585034     <NA>     <NA>       0
## 2  14874235690     <NA>     <NA>       0
## 3  15647392580     <NA>     <NA>       0
## 4 202088822547     <NA>     <NA>       0
## 5 139760502675     <NA>     <NA>       0
## 6  17447257948     <NA>     <NA>       0
## 7 188224982925     <NA>     <NA>       0
## 8 176338299043     <NA>     <NA>       0
## 9 118156544582     <NA>     <NA>       0
  • Yahoo Finance (quantmod)

La API de Yahoo Finance es una gama de bibliotecas y métodos para obtener datos históricos y en tiempo real para una variedad de productos y mercados financieros.

El paquete quantmod para R está diseñado para ayudar al comerciante cuantitativo en el desarrollo, prueba e implementación de modelos comerciales basados en estadísticas.

Lo primero es cargar la librería quantmod

library(quantmod)

Luego importaremos los datos de Yahoo Finance, pero primero se debe especificar el periodo de cuándo se quieren extraer esos datos.

mdate="2001-01-03"
amazonprices=getSymbols('AMZ', from=mdate, auto.assign = F)

Ejemplo 01

mdate1="2001-01-04"
amazonprices1=getSymbols('AMZ', from=mdate, auto.assign = F)[,4]

head(amazonprices1)
##            AMZ.Close
## 2007-12-28     64.50
## 2007-12-31        NA
## 2008-01-02     65.00
## 2008-01-03     65.15
## 2008-01-04     61.40
## 2008-01-07     60.38

Ejemplo 02 Tasa de crecimiento

amazonroc=ROC(amazonprices1, type='discret')

head(amazonroc)
##               AMZ.Close
## 2007-12-28           NA
## 2007-12-31           NA
## 2008-01-02           NA
## 2008-01-03  0.002307723
## 2008-01-04 -0.057559476
## 2008-01-07 -0.016612394

Ejemplo 03 Tasa de Rendimiento

amazonrend = periodReturn(amazonprices, period = 'monthly', type = 'log', subset = '2018')
head(amazonrend)
##            monthly.returns
## 2018-01-30       0.1643646
## 2018-05-25      -6.7615206

Ejemplo 04 Obtener datos de S P 500

getSymbols("^GSPC", src = "yahoo", from = "2010-01-01", to = "2020-05-30", periodicity= "daily")
## [1] "^GSPC"
head(GSPC)
##            GSPC.Open GSPC.High GSPC.Low GSPC.Close GSPC.Volume GSPC.Adjusted
## 2010-01-04   1116.56   1133.87  1116.56    1132.99  3991400000       1132.99
## 2010-01-05   1132.66   1136.63  1129.66    1136.52  2491020000       1136.52
## 2010-01-06   1135.71   1139.19  1133.95    1137.14  4972660000       1137.14
## 2010-01-07   1136.27   1142.46  1131.32    1141.69  5270680000       1141.69
## 2010-01-08   1140.52   1145.39  1136.22    1144.98  4389590000       1144.98
## 2010-01-11   1145.96   1149.74  1142.02    1146.98  4255780000       1146.98
chartSeries(GSPC, TA=NULL)

chartSeries(GSPC, subset ="last 3 months")

b. Elabore un inventario de las series disponibles en cada API; i. presente mediante una tabla, para cada API las series disponibles y una breve descripción de la misma.

Institución

Descripción

Salida de objetos

BANCO MUNDIAL

Wbstats

El paquete wbstats brinda acceso estructurado a toda la información disponible en la API del Banco Mundial, que incluye; compatibilidad con varios idiomas, acceso a todos los datos anuales, trimestrales y mensuales, así como acceso a la API del catálogo de datos del Banco Mundial, que proporciona metadatos sobre cada fuente de datos, como calendarios de actualización, últimas revisiones y cobertura, entre otra información.

library(wbstats)

Wb

Esta función descarga la información solicitada usando la API del Banco Mundial

wb( country = "all", indicator, startdate, enddate, mrv, return_wide = FALSE, gapfill, freq, cache, lang = c("en", "es", "fr", "ar", "zh"), removeNA = TRUE, POSIXct = FALSE, include_dec = FALSE, include_unit = FALSE, include_obsStatus = FALSE, include_lastUpdated = FALSE )

 

Wbcache

Descargue una lista actualizada de información sobre países, indicadores, fuentes, catálogo de datos, temas de indicadores, tipos de préstamos y niveles de ingresos de la API del Banco Mundial

wbcache(lang = c("en", "es", "fr", "ar", "zh"))

Wbcountries

Descargue información actualizada sobre países y regiones disponibles de la API del Banco Mundial

wbcountries(lang = c("en", "es", "fr", "ar", "zh"))

Wbsources

Descargue información actualizada sobre las fuentes de datos disponibles de la API del Banco Mundial

wbsources(lang = c("en", "es", "fr", "ar", "zh"))

Wb income

Descargue información actualizada sobre los tipos de ingresos disponibles de la API del Banco Mundial

wbincome(lang = c("en", "es", "fr", "ar", "zh"))

Wbindicators

Descarga información actualizada sobre indicadores disponibles de la API del Banco Mundial

wbindicators(lang = c("en", "es", "fr", "ar", "zh"))

Wb_search

Esta función permite encontrar indicadores que coincidan con un término de búsqueda y devuelva un marco de datos de resultados coincidentes

Wb_search( pattern = "poverty", fields = c("indicator", "indicatorDesc"), extra = FALSE, cache )

Wb_cachelist

Estos datos son un resultado almacenado en caché de la wbcache función. Por funciones predeterminadas wb y searchwb utilizar estos datos para el cache parámetro.

wb_cachelist_dep

Wb_data

Esta función descarga la información solicitada usando la API del Banco Mundial

wb_data( indicator, country = "countries_only", start_date, end_date, return_wide = TRUE, mrv, mrnev, cache, freq, gapfill = FALSE, date_as_class_date = FALSE, lang )

FONDO MONETARIO INTERNACIONAL

CONTENIDO DE LA LIBRERÍA

 

Comando:

BASE_DATOS_IMF<-imf_ids()

 

Presenta el contenido de todas las bases de datos que conforman la librería “imfr” que en este caso se conforma de 259 bases de datos, presentándolas en orden alfabético con sus respectivas series, el código de la base de datos y una breve descripción de la misma

 

A través de un “head” podemos obtener la siguiente salida de objetos:

 

head(BASE_DATOS_IMF)

 

BOP_2017M06(Balanza de Pagos actualizada a junio 2017).

 

BOP_2020M3(Balanza de Pagos actualizada a marzo 2020).

BOP_2017M11 (Balanza de Pagos actualizada a noviembre 2017).

 

DOT_2020Q1(Dirección de Estadísticas Comerciales actualizado al 1 trimestre 2020).

GFSMAB2016(Estadísticas de Finanzas Públicas, Principales Agregados y Saldos actualizado a 2016).

 

BOP_2019M12(Balanza de Pagos actualizada a diciembre 2019).

CONTENIDO DE UNA BASE DE DATOS ESPECIFICA

 

Comando:

CODIGO_LISTA_DOT<-

imf_codelist(database_id = ("DOT"))

 

Devuelve la lista de códigos de una base de datos en específico, con la característica de cada una de ellas.

 

A través de un “print” podemos obtener los códigos que esta devuelve para la base de datos “DOT”.

 

print(CODIGO_LISTA_DOT)

 

 

LISTA DE CODIGOS

-CL_UNIT_MULT S (Escala de medición de la base de datos).

-CL_FREQ (frecuencias de tiempo con que se presentan los datos).

-CL_AREA_IFS_2019M01(Áreas Geográficas o países de los que hay datos en la base de datos o que el FMI publica).

-CL_INDICATOR_IFS_2019M01(indicadores económicos presentes para la base de datos especifica).

-CL_TIME_FORMAT (el formato de tiempo de la base de datos).

PAISES PRESENTES EN UNA BASE DE DATOS ESPECIFICA

 

Comando:

DOT_AREA<-

imf_codes(codelist ="CL_AREA_DOT")

 

El comando “codelist” genera para una vista dentro de un código en específico de la lista de códigos, en el caso del código “CL_AREA_DOT” este representa todos los países que están en esta base de datos que en este caso son 229 y el restante en áreas geográficas.

 

A través de un “head” podemos obtener la siguiente salida de objetos:

 

head(DOT_AREA)

-AF Afganistán

-F19 África no asignado

-AL Albania

-DZ Argelia

-AS Samoa Americana

-AO Angola

 

INDICADORES ECONOMICOS DE UNA BASE DE DATOS ESPECIFICA

Comando:

INDICATOR_DOT<-imf_codes(codelist = "CL_INDICATOR_DOT")

 

El comando “codelist” permite explorar la lista del indicador “CL_INDICATOR_DOT” en donde se encuentran todos los indicadores económicos que se pueden acceder en esta base de datos, para el caso de la base de datos “DOT” solo existen 4 indicadores, a través de un “print” podemos ver los indicadores y su descripción.

 

print(INDICATOR_DOT)

-TXG_FOB_USD (Mercancías, Valor de las Exportaciones, Franco a Bordo (FOB), dólares estadounidenses).

 

-TMG_CIF_USD (Bienes, valor de las importaciones, costo, seguro, flete (CIF), dólares estadounidenses).

 

-TMG_FOB_USD (Mercancías, Valor de las Importaciones, Franco a Bordo (FOB), dólares estadounidenses).

 

-TBG_USD (Mercancías, valor de la balanza comercial, dólares estadounidenses).

FRECUENCIA DE UNA BASE DE DATOS ESPECIFICA

Comando:

FREQ _DOT<-imf_codes(codelist = " CL_FREQ ")

 

El comando “codelist” señala a través del código “CL_FREQ” la frecuencia o el formato como se presentan los datos, para el caso de la base de datos “DOT existen 6 formas de agrupar o presentar los datos en el tiempo en la base de datos seleccionada, a través de un “print” podemos ver el código de cada frecuencia de tiempo.

 

A=Anual

B=Semestral

Q=Trimestral

M=Mensual

D=Diariamente

W=Semanalmente

CONSULTA FORMAL DE UNA BASE DE DATOS ESPECIFICA, CON UN INDICADOR FIJADO Y UN PERIODO DE TIEMPO DE ELECCION.

Comando:

CONSULTA PAIS<-imf_data(database_id = "",indicator = c("), country =, freq = '', start = , end = current_year())

 

A través del comando “imf_data” se puede generar una consulta que permita ver un indicador en específico, con el objetivo de visualizar los datos del mismo para un país y periodo de tiempo en particular

 

Ejemplo:

Crear el objeto del país que se desea analizar:

BOLIVIA<-registro_paises $iso2c[registro_paises$country.name. en=="Bolivia"]

 

Ejecutar la consulta a través del comando ifm_data:

BOLIVIA_CONSULTA<-imf_data(database_id = "IFS",indicator = c("BG_BP6_USD" ), country =BOLIVIA , freq = 'A', start = 2010 , end = current_year())

 

head(BOLIVIA _CONSULTA)

iso2c year BG_BP6_USD

1 BO 2010 1122.5264

2 BO 2011 1048.4686

3 BO 2012 3135.3392

4 BO 2013 2809.5192

5 BO 2014 2915.9397

6 BO 2015 -387.8806

YAHOO FINANCE

quantmod-package: Modelado financiero cuantitativo y marco comercial para R

 

quantmod-class: Ayudan a administrar el proceso de creación de modelos del paquete quantmod. Llevan información para ser utilizada por una variedad de funciones y métodos de acceso.

 

quantmod-defunct: Las funciones enumeradas aquí ya no forman parte de quantmod

 

 

 

CONTENIDO DE LA LIBRERÍA

 

Comando:

 

 

 

 

 

 

 

mdate="2001-01-03"

amazonprices=getSymbols('AMZ', from=mdate, auto.assign = F)

 

 

 

 

 

 

 

 

 

 

 

 

mdate1="2001-01-04"

amazonprices1=getSymbols('AMZ', from=mdate, auto.assign = F)[,4]

 

 

 

 

 

 

 

 

 

amazonroc=ROC(amazonprices1, type='discret')

 

 

 

 

 

amazonrend = periodReturn(amazonprices, period = 'monthly', type = 'log', subset = '2018')

 

 

 

 

 

 

 

 

 

getSymbols("^GSPC", src = "yahoo", from = "2010-01-01", to = "2020-05-30", periodicity= "daily")

chartSeries(GSPC, TA=NULL)

 

chartSeries(GSPC, subset ="last 3 months")

 

 

 

AMZ.Open AMZ.High AMZ.Low AMZ.Close

2007-12-28 64.50 64.50 63.08 64.50

2007-12-31 NA NA NA NA

2008-01-02 63.01 66.00 63.01 65.00

2008-01-03 65.92 65.92 64.80 65.15

2008-01-04 65.00 65.30 60.64 61.40

2008-01-07 60.36 61.00 58.89 60.38

AMZ.Volume AMZ.Adjusted

2007-12-28 1360 64.50

2007-12-31 NA NA

2008-01-02 8088 65.00

2008-01-03 1184 65.15

2008-01-04 9621 61.40

2008-01-07 5135 60.38

 

 

 

 

 

AMZ.Close

2007-12-28 64.50

2007-12-31 NA

2008-01-02 65.00

2008-01-03 65.15

2008-01-04 61.40

2008-01-07 60.38

 

 

AMZ.Close

2007-12-28 NA

2007-12-31 NA

2008-01-02 NA

2008-01-03 0.002307723

2008-01-04 -0.057559476

2008-01-07 -0.016612394

 

 

monthly.returns

2018-01-30 0.1643646

2018-05-25 -6.7615206

 

 

 

 

 

 

 

 

 

GSPC.Open GSPC.High GSPC.Low

2010-01-04 1116.56 1133.87 1116.56

2010-01-05 1132.66 1136.63 1129.66

2010-01-06 1135.71 1139.19 1133.95

2010-01-07 1136.27 1142.46 1131.32

2010-01-08 1140.52 1145.39 1136.22

2010-01-11 1145.96 1149.74 1142.02

GSPC.Close GSPC.Volume GSPC.Adjusted

2010-01-04 1132.99 3991400000 1132.99

2010-01-05 1136.52 2491020000 1136.52

2010-01-06 1137.14 4972660000 1137.14

2010-01-07 1141.69 5270680000 1141.69

2010-01-08 1144.98 4389590000 1144.98

2010-01-11 1146.98 4255780000 1146.98

 

 

 

 

 

ORGANIZACIÓN DE LAS NACIONES UNIDAS

CPC: Clasificación Central de Productos es una estructura de clasificación coherente de bienes y servicios basada en un conjunto de conceptos y reglas de clasificación acordados internacionalmente.

Formato CSV

Funcion General para poder acceder a ambos formatos de la API de la ONU distinguiéndose csv o json

 

library(rjson)

string <- "http://comtrade.un.org/data/cache/partnerAreas.json"

reporters <- fromJSON(file=string)

reporters <- as.data.frame(t(sapply(reporters$results,rbind)))

 

get.Comtrade <- function(url="http://comtrade.un.org/api/get?"

,maxrec=50000

,type="C"

,freq="A"

,px="HS"

,ps="now"

,r

,p

,rg="all"

,cc="TOTAL"

,fmt="json"

)

{ string<- paste(url

,"max=",maxrec,"&" #maximum no. of records returned

,"type=",type,"&" #type of trade (c=commodities)

,"freq=",freq,"&" #frequency

,"px=",px,"&" #classification

,"ps=",ps,"&" #time period

,"r=",r,"&" #reporting area

,"p=",p,"&" #partner country

,"rg=",rg,"&" #trade flow

,"cc=",cc,"&" #classification code

,"fmt=",fmt #Format

,sep = ""

)

if(fmt == "csv") {

raw.data<- read.csv(string,header=TRUE)

return(list(validation=NULL, data=raw.data))

} else {

if(fmt == "json" ) {

raw.data<- fromJSON(file=string)

data<- raw.data$dataset

validation<- unlist(raw.data$validation, recursive=TRUE)

ndata<- NULL

if(length(data)> 0) {

var.names<- names(data[[1]])

data<- as.data.frame(t( sapply(data,rbind)))

ndata<- NULL

for(i in 1:ncol(data)){

data[sapply(data[,i],is.null),i]<- NA

ndata<- cbind(ndata, unlist(data[,i]))

}

ndata<- as.data.frame(ndata)

colnames(ndata)<- var.names

}

return(list(validation=validation,data =ndata))

}

}

}

 

 

SA: Formato JSON

CIIU: Clasificación Industrial Internacional Uniforme de Todas las Actividades Económicas (CIIU), es la clasificación internacional de referencia de las actividades productivas.

Formato CSV

COICOP 2018: Clasificación del consumo individual por Finalidad se utiliza para clasificar la información relevada en el IPC, EHPM, y comparaciones internacionales del PIB.

Formato CSV

SITC: Clasificación Uniforme para el Comercion Internacional clasifica los productos según su fase de producción y sirve de base para un analisis sistematico del comercio mundial.

Formato CSV y JSON

BEC: Clasificación por Categorias Económicas Ampliadas es una revisión del CUCI a niveles de procesamiento mas avanzados.

Formato JSON

CLASIFICACIONES DEL GASTO SEGÚN FINALIDAD: Esta clasificación engloba gastos Gubernamentales, internacionales, personales y funiona principalmente para comparaciones.

Formato CSV

ICATO: Formato CSV

EBOPS: Proporciona un desglose de la partida de Comercio de Servicios de la Balanza de Pagos (débito y crédito).

Formato PDF

 

 

 

Bibliografía

“El imperativo de API. De la preocupación de IT al mandato comercial”, Tech Trends 2018. La empresa sinfónica. Deloitte Insights, pp. -111-130. Larry Calabro, Chris Purpura, Vishvershwara Vasa, y Arun Perinkolam. Recuperado de: https://www2.deloitte.com/content/dam/Deloitte/co/Documents/technology/Imperativo%20de%20API.pdf

Hlavac, Marek. 2022. Stargazer: Well-Formatted Regression and Summary Statistics Tables. https://CRAN.R-project.org/package=stargazer.
Hyndman, Rob J, and Yeasmin Khandakar. 2008. “Automatic Time Series Forecasting: The Forecast Package for R.” Journal of Statistical Software 26 (3): 1–22. https://doi.org/10.18637/jss.v027.i03.
Hyndman, Rob, George Athanasopoulos, Christoph Bergmeir, Gabriel Caceres, Leanne Chhay, Kirill Kuroptev, Mitchell O’Hara-Wild, et al. 2022. Forecast: Forecasting Functions for Time Series and Linear Models. https://CRAN.R-project.org/package=forecast.
Kuhn, Max. 2022. Caret: Classification and Regression Training. https://github.com/topepo/caret/.
R Core Team. 2021. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
Signorell, Andri. 2022. DescTools: Tools for Descriptive Statistics. https://CRAN.R-project.org/package=DescTools.
Zhu, Hao. 2021. kableExtra: Construct Complex Table with Kable and Pipe Syntax. https://CRAN.R-project.org/package=kableExtra.