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 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")
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")]
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()
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)
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"))
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
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.