#####Funciones para el cálculo de indicadores de comercio exterior.
#Versión 2.0
#Desarrollo en R: 
# MSF. Carlos Ademir Pérez 
# Docente Facultad de Ciencias Económicas, 
# Universidad de El Salvador
# Fuente de las fórmulas: 
# Durán Lima, José E. y Mariano Alvarez,
# "Indicadores de comercio exterior y política comercial:
# mediciones de posición y dinamismo comercial", 
# CEPAL, 2008, disponible en: 
# https://repositorio.cepal.org/bitstream/handle/11362/3690/S2008794_es.pdf
#------------------------------------------------------------#
#Carga de paquetes auxiliares
options (scipen = 999) #para mostrar todos los decimales :)
##### Cálculo de Indicadores ######
library(dplyr)
library(readxl)
library(stringr)
#Data para las funciones
load("/Users/cesiayasmin/Downloads/data_comercio_exterior.RData")
nombre_archivo<-"/Users/cesiayasmin/Downloads/master_paises_iso (1).xlsx"
nombres_iso_paises <- read_excel(nombre_archivo)
nombres_iso_paises %>% 
  rename(codigo_pais=codigo_pais...5)->nombres_iso_paises
data_comercio_exterior %>%
  left_join(nombres_iso_paises,
            by=c("pais"="nom_pais_esp"))-> data_comercio_exterior
#------------------------------------------------------------
#Función para mostrar los países
herramientas_mostrar_paises<-function(){
  nombres_iso_paises %>% 
    select(nom_pais_esp, 
           codigo_pais,
           region,
           cod_region,
           region_intermedia,
           cod_region_intermedia)->paises
  paises
}
#------------------------------------------------------------
#función para ver regiones
herramientas_mostrar_regiones<-function(){
  nombres_iso_paises %>% 
    group_by(region,
             cod_region,
             region_intermedia,
             cod_region_intermedia) %>% 
    summarise(`# de Paises incluidos`=n()) 
}
#------------------------------------------------------------
# países disponibles en la tabla de comercio_exterior
herramientas_mostrar_paises_en_tabla<-function(){
  data_comercio_exterior %>% group_by(pais,anio) %>%
    summarise(`# Transacciones`=n())
}
  

#------------------------------------------------------------
#Indice de Ventaja Comparativa Revelada | Capitulo | Anual 
indicadores_IVCR_capitulo<-function(codigo_pais,capitulo,anio){
enquo(codigo_pais)->codigo_pais
enquo(anio)->anio
data_comercio_exterior %>% filter(codigo_pais==!!codigo_pais) %>% 
  mutate(capitulo=str_sub(sac,start = 1,end = 2)) %>%
  filter(capitulo==!!capitulo,anio==!!anio) %>% 
  select(valor_cif,valor_fob) %>% 
  summarise(Xijt=sum(valor_fob),
            Mijt=sum(valor_cif)) %>% 
  mutate(dif=Xijt-Mijt) %>% 
  select(dif) ->numerador
####
data_comercio_exterior %>% 
  mutate(capitulo=str_sub(sac,start = 1,end = 2)) %>%
  filter(capitulo==!!capitulo,anio==!!anio) %>% 
  select(valor_cif,valor_fob) %>% 
  summarise(Xijt=sum(valor_fob),
            Mijt=sum(valor_cif)) %>% 
  mutate(suma=abs(Xijt+Mijt)) %>% 
  select(suma) ->denominador
as.vector(numerador/denominador)->resultado
resultado$dif
}
#------------------------------------------------------------
#Indice de Ventaja Comparativa Revelada | Partida | Anual 
indicadores_IVCR_partida<-function(codigo_pais,partida,anio){
  enquo(codigo_pais)->codigo_pais
  enquo(anio)->anio
  data_comercio_exterior %>% 
    filter(codigo_pais==!!codigo_pais,
           partida==!!partida,anio==!!anio) %>% 
    select(valor_cif,valor_fob) %>% 
    summarise(Xijt=sum(valor_fob),
              Mijt=sum(valor_cif)) %>% 
    mutate(dif=Xijt-Mijt) %>% 
    select(dif) ->numerador
  ####
  data_comercio_exterior %>% 
    filter(codigo_pais==!!codigo_pais,
           partida==!!partida,anio==!!anio) %>% 
    select(valor_cif,valor_fob) %>% 
    summarise(Xijt=sum(valor_fob),
              Mijt=sum(valor_cif)) %>% 
    mutate(suma=abs(Xijt+Mijt)) %>% 
    select(suma) ->denominador
  as.vector(numerador/denominador)->resultado
  resultado$dif
}
#------------------------------------------------------------
# Indice de Balassa | capitulo | anual
indicadores_Balassa_capitulo<-function(codigo_pais,
                                       capitulo,
                                       anio,
                                       normalizado=TRUE){
  enquo(codigo_pais)->codigo_pais
  enquo(anio)->anio
#  Exportaciones del producto k realizadas por el país i hacia el país j. 
  data_comercio_exterior %>% filter(codigo_pais==!!codigo_pais) %>% 
    mutate(capitulo=str_sub(sac,start = 1,end = 2)) %>%
    filter(capitulo==!!capitulo,anio==!!anio) %>% 
    select(valor_fob) %>% 
    summarise(Xijt=sum(valor_fob)) %>% 
    select(Xijt) ->a
# Exportaciones totales del país i al país j
data_comercio_exterior %>% 
  filter(codigo_pais==!!codigo_pais,
         anio==!!anio) %>% 
  select(valor_fob) %>% 
  summarise(Xijt=sum(valor_fob)) %>% 
  select(Xijt) ->b
# Exportaciones del capitulo k realizadas por el país i hacia el mundo (w) 
data_comercio_exterior %>%
  mutate(capitulo=str_sub(sac,start = 1,end = 2)) %>%
  filter(capitulo==!!capitulo,anio==!!anio) %>% 
  select(valor_fob) %>% 
  summarise(Xijt=sum(valor_fob)) %>% 
  select(Xijt) ->c
# Exportaciones totales del país i al mundo (w)
data_comercio_exterior %>%
  select(valor_fob) %>% 
  summarise(Xijt=sum(valor_fob)) %>% 
  select(Xijt) ->d

resultado<-as.numeric((a/b)/(c/d))
ifelse(normalizado==FALSE,
  return(resultado),
return((resultado-1)/(resultado+1)))
}
#------------------------------------------------------------
# Indice de Balassa | partida | anual
indicadores_Balassa_partida<-function(codigo_pais,
                                       partida,
                                       anio,
                                       normalizado=TRUE){
  enquo(codigo_pais)->codigo_pais
  enquo(anio)->anio
  #  Exportaciones del producto k realizadas por el país i hacia el país j. 
  data_comercio_exterior %>% filter(codigo_pais==!!codigo_pais) %>% 
    filter(partida==!!partida,anio==!!anio) %>% 
    select(valor_fob) %>% 
    summarise(Xijt=sum(valor_fob)) %>% 
    select(Xijt) ->a
  # Exportaciones totales del país i al país j
  data_comercio_exterior %>% 
    filter(codigo_pais==!!codigo_pais,
           anio==!!anio) %>% 
    select(valor_fob) %>% 
    summarise(Xijt=sum(valor_fob)) %>% 
    select(Xijt) ->b
  # Exportaciones del capitulo k realizadas por el país i hacia el mundo (w) 
  data_comercio_exterior %>%
    filter(partida==!!partida,anio==!!anio) %>% 
    select(valor_fob) %>% 
    summarise(Xijt=sum(valor_fob)) %>% 
    select(Xijt) ->c
  # Exportaciones totales del país i al mundo (w)
  data_comercio_exterior %>%
    select(valor_fob) %>% 
    summarise(Xijt=sum(valor_fob)) %>% 
    select(Xijt) ->d
  
  resultado<-as.numeric((a/b)/(c/d))
  ifelse(normalizado==FALSE,
         return(resultado),
         return((resultado-1)/(resultado+1)))
}
#------------------------------------------------------------
# Indice de Herfindahl Hirschmann como aparece en el Texto| anual
indicadores_IHH_Herfindahl_Hirschmann_anual_texto<-function(codigo_pais,
                                                      anio,
                                                      normalizado=TRUE){
  enquo(codigo_pais)->codigo_pais
  enquo(anio)->anio
  data_comercio_exterior %>% 
    filter(codigo_pais==!!codigo_pais,anio==!!anio) %>% 
    select(valor_fob) %>% filter(valor_fob>0)->Xij
  data_comercio_exterior %>% 
    filter(anio==!!anio) %>% 
    select(valor_fob) %>% summarise(total=sum(valor_fob)) %>%
    as.numeric()->XTi
  
  sum((Xij$valor_fob/XTi)^2)->suma_sqrt_ij
  length(Xij$valor_fob)->n
  ifelse(normalizado==TRUE,
  return(suma_sqrt_ij-1/n)/(1-1/n),
  return(suma_sqrt_ij))
}
#------------------------------------------------------------
# Indice de Herfindahl Hirschmann | anual
indicadores_IHH_Herfindahl_Hirschmann_anual<-function(codigo_pais,
                                                      anio,
                                                      normalizado=TRUE){
  enquo(codigo_pais)->codigo_pais
  enquo(anio)->anio
  data_comercio_exterior %>% 
    filter(codigo_pais==!!codigo_pais,anio==!!anio) %>% 
    select(valor_fob) %>% filter(valor_fob>0) %>% 
    select(valor_fob) %>% prop.table()->a
  sum(a^2)->sum_sqrt
  length(a$valor_fob)->n

   
  ifelse(normalizado==TRUE,
         return((sum_sqrt-1/n)/(1-1/n)),
         return(sum_sqrt))
}
library(kableExtra)
library(dplyr)

1- Por cada dólar exportado a la región suramericana, en el periodo 2018-2019, ¿Cuánto se importó? (resultado por año)

library(kableExtra)
Relacion_X_M<-data_comercio_exterior %>% 
  group_by(cod_sub_region,anio) %>% 
  summarise("Exportaciones Totales en millones de dolares"=sum(valor_fob)/1e6,
            "Importaciones Totales en millones de dolares"=sum(valor_cif)/1e6)
Relacion_X_M %>% 
  filter(cod_sub_region=="Sudamerica",
         anio %in% 2018:2019) %>% 
  mutate("Ratio M/X"=`Importaciones Totales en millones de dolares`/`Exportaciones Totales en millones de dolares`) %>% 
  kable(caption = "Ratio importaciones con exportaciones", digits = 4) %>% kable_minimal() %>% 
  add_footnote(label = "Elaboracion propia en base a datos del BCR", notation = "symbol") %>% kable_minimal()
Ratio importaciones con exportaciones
cod_sub_region anio Exportaciones Totales en millones de dolares Importaciones Totales en millones de dolares Ratio M/X
Sudamerica 2018 43.3597 645.4535 14.8860
Sudamerica 2019 47.7304 718.6470 15.0564
* Elaboracion propia en base a datos del BCR

2- Calcule el IHH de El Salvador, con México, Estados Unidos y Canadá, durante el periodo 2017-2019, normalizado.

data.frame("anios"=2017:2020,
           "IHH_Mexico"=sapply(X=2017:2020,FUN = indicadores_IHH_Herfindahl_Hirschmann_anual,codigo_pais=484,normalizado = TRUE),
           "IHH_USA"=sapply(X=2017:2020,FUN = indicadores_IHH_Herfindahl_Hirschmann_anual,codigo_pais=840,normalizado=TRUE),
           "IHH_Canada"=sapply(X=2017:2020,FUN = indicadores_IHH_Herfindahl_Hirschmann_anual,codigo_pais=124,normalizado=TRUE))%>%
  kable(caption = "Indicador de IHH de El Salvador con: México, Estados Unidos y Canadá, durante el periodo 2017-2020,normalizado")%>%
  kable_styling(bootstrap_options = "striped",
                full_width = TRUE)%>% 
  add_footnote(label="Elaboración propia con base en datos del BCR",
               notation="symbol") %>%  kable_minimal()
Indicador de IHH de El Salvador con: México, Estados Unidos y Canadá, durante el periodo 2017-2020,normalizado
anios IHH_Mexico IHH_USA IHH_Canada
2017 0.0165526 0.0055910 0.1231022
2018 0.0182162 0.0056610 0.0084443
2019 0.0142813 0.0058727 0.1190248
2020 0.0161232 0.0119537 0.0744338
* Elaboración propia con base en datos del BCR

3- Calcule las exportaciones totales de El Salvador hacia la región de África Oriental, para el periodo 2017-2019 son (en millones de US$)

library(kableExtra)
library(dplyr)
export_SVL_Africa<-function(Region,anios){
  total_exportsvl_africa<-data_comercio_exterior %>%
    group_by(cod_sub_region,anio) %>% 
    summarise(`Total de Exportaciones MM US$` = sum(valor_fob) / 1e6)
  total_exportsvl_africa %>%  filter(cod_sub_region== Region,anio %in% anios)  
}

export_SVL_Africa(Region = "África Oriental", 2017:2019) %>%
kable(caption = "Total de Exportaciones de El Salvador hacia África Oriental", digits = 4) %>%
  kable_classic(html_font = "Times New Roman", font_size = 14) %>%
  add_footnote(label = "Elaboración propia con base de datos del BCR", notation = "symbol") %>%
  kable_styling()
Total de Exportaciones de El Salvador hacia África Oriental
cod_sub_region anio Total de Exportaciones MM US$
África Oriental 2017 0.6734
África Oriental 2018 4.0123
África Oriental 2019 0.8439
* Elaboración propia con base de datos del BCR

4- Obtenga el Saldo de la balanza comercial de El Salvador, con Latinoamérica, para el periodo 2017-2019, (en millones de US$)

Saldo_BC_Region <-function (Region, anios) {
  total_E_H <- data_comercio_exterior %>%
    group_by(cod_region, anio) %>%
    summarise(`Total Exportaciones MM US$` = sum(valor_fob) / 1e6, 
              `Total Importaciones MM US$` = sum(valor_cif) / 1e6)
  
  total_E_H %>%
    filter(cod_region == Region, anio %in% anios) %>%
    mutate(`Saldo Balanza Comercial AM US$` = `Total Exportaciones MM US$` - `Total Importaciones MM US$`) %>%
    kable(caption = "Balanza Comercial de El Salvador con América Latina y El Caribe 2017-2019", digits = 4) %>%
    kable_classic(html_font = "Times New Roman", font_size = 14) %>%
    add_footnote(label = "Elaboración propia con base en datos del BCR", notation = "symbol") %>%
    kable_styling()
}

Saldo_BC_Region("América Latina Y El Caribe", 2017:2019)
Balanza Comercial de El Salvador con América Latina y El Caribe 2017-2019
cod_region anio Total Exportaciones MM US$ Total Importaciones MM US$ Saldo Balanza Comercial AM US$
América Latina Y El Caribe 2017 2746.262 3770.895 -1024.633
América Latina Y El Caribe 2018 2922.872 4144.131 -1221.259
América Latina Y El Caribe 2019 3067.961 4553.745 -1485.784
* Elaboración propia con base en datos del BCR