Cargar Librerias Necesarias

library(readxl)
library(dplyr)
library(corrplot)
library(leaflet)
library(rnaturalearth)
library(sf)
library(tidyverse)
library(FactoMineR)
library(factoextra)
library(ggplot2)
library(shiny)
library(dendextend)

Cargar Datos

# Cargar los datos
Data_Geo <- read_excel("datos_geograficos.xlsx", col_types = 'text') 
commodities <- read_excel("Copia de commodity_IE.xlsx", col_types = 'text')
libertad_economica <- read_excel("libertad_economica.xlsx", col_types = "text")

Filtrar DataSet “commodities”

Para la elaboración del Objetivo II, de la BB.DD. de “commodities” unicamente necesitamos las columnas de “year”, “Pais” y “trade_usd”

commodities_filtrado <- commodities[, c("Pais", "year", "trade_usd")]

Agrupar por Pais y Año

Ahora necesitamos que todo este agrupado por pais y por año. De esta manera obtenemos la facturacion total de cada pais por año.

commodities_filtrado$trade_usd <- as.numeric(as.character(commodities_filtrado$trade_usd))

commodities_filtrado <- commodities_filtrado %>%
  group_by(Pais, year) %>%
  summarise(trade_usd = sum(trade_usd, na.rm = TRUE)) %>%
  ungroup()

Agregar Columna a “Data_Geo”

Añadimos una columna de 1 en caso de que el pais tenga acceso al mar y 0 en caso contrario. Esto lo realizamos de esta manera para poder hacer una correlacion con esta variable posteriormente.

Data_Geo$access_sea_bin <- ifelse(Data_Geo$`Access to Sea` == "Yes", 1, 0)

Unir las tablas

Ahora que ya tenemos las tablas arregladas para poder trabajar con ellas. Unimos las tres tablas en una. La union, la realizamos por Pais y por Año

# Paso 1: Unir con commodities_filtrado
libertad_geo_commodities <- inner_join(Data_Geo, commodities_filtrado, by = "Pais")

# Paso 2: Unir con libertad_economica (por País y year)
tabla_final <- inner_join(libertad_geo_commodities, libertad_economica, by = c("Pais", "year"))

Filtrar la tabla final

Volvemos a crear un filtro en la tabla final para poder manejar mejor las variables. Es decir, poder añadir y quitar variables segun si necesitamos evaluar esa variable o no. Esto se hace debido a que en la tabla_final hay 41 variables. Muchas pueden ser interantes para evaluar, pero en un inicio no necesitamos todas. Ademas a la vez que seleccionamos las variables que necesitamos, tambien convertimos a numerico las variables que estaban en character.

# Filtrar la tabla final y seleccionar solo las columnas específicas
tabla_filtrada <- tabla_final %>%
  select(Pais, ISO_code, year, `Geographical Particularity`, `ECONOMIC FREEDOM`,
         access_sea_bin, , trade_usd)

# Convertir las columnas Overall Score y trade_usd a numéricas
tabla_filtrada <- tabla_filtrada %>%
  mutate(
    trade_usd = as.numeric(trade_usd),
    `ECONOMIC FREEDOM` = as.numeric(`ECONOMIC FREEDOM`),
  )

# Verificar la estructura de los datos después del filtrado
summary(tabla_filtrada)
##      Pais             ISO_code             year          
##  Length:626         Length:626         Length:626        
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
##                                                          
##  Geographical Particularity ECONOMIC FREEDOM access_sea_bin  
##  Length:626                 Min.   :3.320    Min.   :0.0000  
##  Class :character           1st Qu.:6.505    1st Qu.:1.0000  
##  Mode  :character           Median :7.235    Median :1.0000  
##                             Mean   :7.029    Mean   :0.9042  
##                             3rd Qu.:7.600    3rd Qu.:1.0000  
##                             Max.   :8.960    Max.   :1.0000  
##    trade_usd        
##  Min.   :1.208e+10  
##  1st Qu.:6.751e+10  
##  Median :1.527e+11  
##  Mean   :3.155e+11  
##  3rd Qu.:3.755e+11  
##  Max.   :3.203e+12

Visualizar la correlacion en un mapa de calor

En esta visualizacion, corroboramos que la Hipotesis Inicial aunque tenia sentido parace que resulta erronea debido a que muchos paises se hace dificil explicar la correlacion entre sus exportaciones y su libertad economica

# 1. Calcular correlaciones por país
correlaciones_por_pais <- tabla_filtrada %>%
  group_by(Pais) %>%
  filter(n() >= 2) %>%
  summarise(
    cor_trade_libertad = cor(trade_usd, `ECONOMIC FREEDOM`, use = "complete.obs"),
    economic_freedom = mean(`ECONOMIC FREEDOM`, na.rm = TRUE),
    trade_usd = mean(trade_usd, na.rm = TRUE),
    Geographical_Particularity = first(`Geographical Particularity`),
    .groups = "drop"
  ) %>%
  rename(name = Pais)

# 2. Obtener geometría mundial
world <- ne_countries(scale = "medium", returnclass = "sf")

# 3. Unir los datos de correlación y comercio con la geometría
mapa_sf <- left_join(world, correlaciones_por_pais, by = "name")

# 4. Crear etiquetas emergentes para el mapa
mapa_sf$popup <- paste0(
  "<strong>País: </strong>", mapa_sf$name, "<br/>",
  "<strong>ISO: </strong>", mapa_sf$iso_a3, "<br/>",
  "<strong>Geografía: </strong>", mapa_sf$Geographical_Particularity, "<br/>",
  "<strong>Libertad Económica: </strong>", round(mapa_sf$economic_freedom, 2), "<br/>",
  "<strong>Trade USD (miles de millones): </strong>$", format(round(mapa_sf$trade_usd, 0), big.mark = ","), "<br/>",
  "<strong>Correlación (Trade ~ Libertad): </strong>", round(mapa_sf$cor_trade_libertad, 2)
)

# 5. Crear el mapa interactivo
leaflet(data = mapa_sf) %>%
  addProviderTiles("CartoDB.Positron") %>%
  addPolygons(
    fillColor = ~colorNumeric(palette = "RdYlBu", domain = mapa_sf$cor_trade_libertad)(cor_trade_libertad),
    fillOpacity = 0.7,
    color = "#BDBDC3",
    weight = 1,
    popup = ~popup
  ) %>%
  addLegend(
    pal = colorNumeric("RdYlBu", domain = mapa_sf$cor_trade_libertad),
    values = ~cor_trade_libertad,
    position = "bottomright",
    title = "Correlación Trade ~ Libertad"
  )

Debido a esto, realizamos una PCA para tratar de localizar cuales son las variables mas influyentes, con mayor peso, y volver a realizar la correlacion para comprobar si con estas variables se pueden obtener unas mejores conclusiones.