Primero que nada, listamos y corremos las paqueterías que
estaremos utilizando.
library(ggplot2)
library(plotly)
library(RColorBrewer)
library(tidyverse)
library(scales)
library(mice)
library(visdat)
# La base de datos fue descargada de la página y guardada localmente como "GDP.csv".
# setwd("/Users/miguel.torres/Desktop/ESTA 5504/R/Bases de Datos")
Original=read.csv("GDP.csv")
Original
La base de datos fue tomada de “The World Bank Organization” https://data.worldbank.org/indicator/NY.GDP.PCAP.CD. Esta base de datos cuenta con 266 filas. Cada fila contiene la información de un país individual o de regiones/agrupaciones. Esta base de datos cuenta con 66 columnas, de las cuales 2 muestran el perfil de país con sus datos categóricos: Country Name, Country Code, 2 muestran una descripción de los valores medidos: Indicator Name, Indicator Code y el resto es el valor numérico de GDP per cápita (en USD$ a precios actuales) desde el año 1960 hasta el 2021. Se puede observar que no todos los países tenían datos en los primeros años y a partir de los años sucesivos, se fueron añadiendo más países a reportar sus respectivos GDP’s per cápita. Sin embargo, hemos observado que no siempre los países reportan de manera continua pues hay países que tienen muchos datos faltantes o que se han visto interrumpidos.
Podemos crear varias bases de datos nuevas para interpretar la información de distintas maneras.
Primero, dejaremos solamente las filas que sean de países individuales, eliminando todas las que sean de regiones o agrupaciones.
Regiones=c(2,4,8,37,50,62:66,69,74,75,96,99,103:106,108,111,129,135,136,137,140,141,143,154,157,162,171,182,184,192,198,199,216,218,219,231,232,237,239,241,242,250,260)
Paises= Original[-Regiones,]
dim(Paises)
## [1] 218 66
Podemos mirar todos los países según los datos del PIB más recientes (2021). Creamos otra base de datos dejando solamente esa columna númerica.
Recientes= Paises[,c(1,2,66)]
Recientes
Finalmente, podemos sacar los datos históricos del PIB (1960-2021) para un país en específico. En este caso, miraremos a Puerto Rico.
Data_PR= Original[Original$Country.Name=="Puerto Rico",]
Data_PR
Con la base de datos de los GDP más recientes, primero simplemente eliminaremos todos los países que contengan NAs.
Recientes=na.omit(Recientes)
dim(Recientes)
## [1] 198 3
Luego, podemos añadirle una columna categorizando los valores de GDP. Decidimos crear 5 categorías.
valores <- c(0,5000,20000,50000,100000,300000)
categorias <- c("Muy Bajo","Bajo","Medio","Alto","Muy Alto")
Recientes$Nivel <- cut(Recientes$X2021,breaks=valores,labels=categorias)
Recientes[,1:4]
Otra columna que le añadimos fue una reescalando los valores de GDP de 0 (siendo el mínimo) a 1 (siendo el máximo).
Recientes$Reescalado <- rescale(Recientes$X2021)
Recientes[,c(1:3,5)]
Añadimos una columna final donde reescalamos los valores de GDP como valores z, es decir, normalizándolos.
Recientes$Estandarizado <- scale(Recientes$X2021)
Recientes[c(1:3,6)]
Teníamos otra base de datos con todos los datos históricos de GDP de todos los países individuales. Habíamos mencionado que a través del tiempo, habían países que comenzaron a reportar más tarde, dejaron de reportar en años recientes o se interrumpió en años entremedio. Por tanto, hay algunos datos faltantes, como representamos en la siguiente visualización.
vis_miss(Paises)
Aplicaremos un metodo de imputación, el de regresión, para rellenar estos NAs.
Imput_reg1 <- mice(Paises,method="norm.predict",print=F)
Complete_reg1 <- mice::complete(Imput_reg1)
Complete_reg1
par(mfrow=c(1,3))
plot(density(Paises$X2021,na.rm = T),col="blue",lwd=2,main="GDP")
lines(density(Complete_reg1$X2021),col="red",lwd=2)
Como modo de ejemplo, llamamos los datos históricos imputados de un país especifico, Cuba.
Cuba_Imputado = Complete_reg1[Complete_reg1$Country.Name=="Cuba",]
Cuba_Imputado
V1 = Recientes %>% plot_ly(x=~X2021,type = "box",marker = list(color="green"),fillcolor="pink",line = list(color = "black",width = 2),name="All countries",hoverinfo="x") %>%
layout(title = "Distribution of 2021 GDP per capita (at current prices)",
xaxis = list(title = "USD",zeroline=FALSE))
V1
V2 = Recientes %>%
plot_geo(locationmode = 'ISO-3') %>%
add_trace(
z = ~X2021, zmin=0, zmax=100000,
locations = ~Country.Code,
color= ~X2021,
colors=brewer.pal(n = 8, name = "Reds"),
hoverinfo = "text",
text = ~paste(Country.Name, "<br>",
"$",round(X2021,2)),
colorbar=list(title = "USD")
) %>%
layout(geo = list(scope = 'world',showocean= T, oceancolor="LightBlue",
projection = list(type = "robinson")),
title = "2021 GDP per capita (current prices) by Country")
V2
GDP = as.numeric(Data_PR[,5:66])
years = c(1960:2021)
V3 = plot_ly(x=~years,y=~GDP,fill="tozeroy") %>% add_lines(hoverinfo="text",
text=~paste(years, "<br>","$",round(GDP,2))) %>%
layout(title="Puerto Rico: GDP per capita (current prices)",
xaxis=list(title="Year"),yaxis=list(title="USD"),
images = list(
source = "https://upload.wikimedia.org/wikipedia/commons/thumb/2/28/Flag_of_Puerto_Rico.svg/1920px-Flag_of_Puerto_Rico.svg.png?raw=true",
xref = "x",
yref = "y",
x = 1970,
y = 30000,
sizex = 10,
sizey = 5000,
sizing = "stretch",
opacity = 0.5,
layer = "below"))
V3
En las distribución de los datos más recientes, hay un sesgo marcado a la derecha. Existen muchos países pobres, de hecho la mediana es 6,557 dólares y casí el 75% de los países no pasan del los $21,000 per capita. Estos se encuentran en su mayoría en África, Ámerica del Sur y Asia, mientras que países de Europa, Ámerica del Norte y Oceanía tienden a gozar de unos GDP bastante altos. Puerto Rico, como tal, en el reporte más reciente tiene de los GDP más altos en su región. A través del tiempo entre 1960 y 2021, ha experimentado una tendencia de crecimiento, como ha sido la tendencia en la mayoría de los países. EL GDP sufrió una baja en el 2020, presumamente por la pandemia causada por el COVID-19. El 21.5% de los datos son faltantes, muchos de ellos siendo datos viejos. Los datos de años recientes están más completos.