Librerias necesarias

library(ggplot2)
library(RColorBrewer)
library(gridExtra)
library(plotly)
library(gganimate)
library(gifski)
library(GGally)
library(viridis)
library(hrbrthemes)

library(dplyr)
library(reshape2)
library(corrplot)

Carga y transformacion de datos

Indice de desarrollo humano

Datos tomados del Human development index (HDI)

desarrollo <- read.table("./Datos/Human development index (HDI).csv", header=T,
                  skip = 1, sep = ",", )
HDI.Rank..2018. Country X1990 X1991 X1992 X1993 X1994 X1995 X1996 X1997 X1998 X1999 X2000
170 Afghanistan 0.298 0.304 0.312 0.308 0.303 0.327 0.331 0.335 0.339 0.343 0.345
69 Albania 0.644 0.625 0.608 0.611 0.617 0.629 0.639 0.639 0.649 0.660 0.667
82 Algeria 0.578 0.582 0.589 0.593 0.597 0.602 0.610 0.619 0.629 0.638 0.646
36 Andorra .. .. .. .. .. .. .. .. .. .. 0.759
149 Angola .. .. .. .. .. .. .. .. .. 0.384 0.394
74 Antigua and Barbuda .. .. .. .. .. .. .. .. .. .. ..

Convertimos en numericas todas las variables de años de tal forma que los caracteres .. se toman como NA

for(i in names(desarrollo[3:length(desarrollo)])){
  desarrollo[,i] <- as.numeric(desarrollo[,i])
}

Quitamos las X de las columnas de años

names(desarrollo) <- c("HDI_Rank", "country_name", seq(1990, 2018))

Limpiamos la columna HDI_Rank y dejamos solo valores numericos para eliminar filas con otro tipo de datos diferentes al analisis, finalmente eliminamos los datos faltantes y convertimos la tabla a un formato long

desarrollo$HDI_Rank <- as.numeric(desarrollo$HDI_Rank)

desarrollo <- desarrollo %>%
  dplyr::filter(HDI_Rank != "NA")

# convertir tabla en formato long
desarrollo <- reshape2::melt(desarrollo, id=c("HDI_Rank", "country_name")) %>%
  transform(variable = as.numeric(as.character(variable))) %>%
  dplyr::filter(variable >= 2010 & variable <= 2017)
HDI_Rank country_name variable value
170 Afghanistan 2010 0.464
69 Albania 2010 0.740
82 Algeria 2010 0.730
36 Andorra 2010 0.828
149 Angola 2010 0.510
74 Antigua and Barbuda 2010 0.772
summary(desarrollo)
##     HDI_Rank      country_name          variable        value       
##  Min.   :  1.00   Length:1512        Min.   :2010   Min.   :0.3190  
##  1st Qu.: 48.00   Class :character   1st Qu.:2012   1st Qu.:0.5720  
##  Median : 94.00   Mode  :character   Median :2014   Median :0.7240  
##  Mean   : 94.77                      Mean   :2014   Mean   :0.6981  
##  3rd Qu.:142.00                      3rd Qu.:2015   3rd Qu.:0.8130  
##  Max.   :189.00                      Max.   :2017   Max.   :0.9530  
##                                                     NA's   :7

Indice de inequidad en la educacion

Datos del Inequality-adjusted education index

educacion <- read.table("./Datos/Adjusted_Education.csv", header=T,
                               sep = ";", )

Proceso de transformacion y preparación del conjunto de datos

# Quitar columnas innecesarias
educacion <- educacion[,5:9]

# Quitar "X" de la columna year
educacion$year <- gsub("X", "", educacion$year)

# Cambiar "," por "." en la columna value
educacion$value <- gsub(",", ".", educacion$value)

# Dar formato a las variables
educacion <- transform(educacion,
                       Continent = as.factor(Continent),
                       year = as.numeric(year),
                       value = as.numeric(value))
iso3 country_name Continent year value
AFG Afghanistan 3 2010 0.225
ALB Albania 4 2010 0.587
AGO Angola 1 2010 0.294
ARG Argentina 7 2010 0.705
ARM Armenia 3 2010 0.683
AUS Australia 6 2010 0.897
summary(educacion)
##      iso3           country_name       Continent      year     
##  Length:1223        Length:1223        1:362     Min.   :2010  
##  Class :character   Class :character   3:296     1st Qu.:2012  
##  Mode  :character   Mode  :character   4:303     Median :2014  
##                                        5:125     Mean   :2014  
##                                        6: 42     3rd Qu.:2016  
##                                        7: 95     Max.   :2017  
##      value       
##  Min.   :0.1150  
##  1st Qu.:0.3225  
##  Median :0.5350  
##  Mean   :0.5287  
##  3rd Qu.:0.7230  
##  Max.   :0.9180

Dado que el conjunto de datos desarrollo no contiene la variable Continent es necesario hacer el cruce con el conjunto de datos educacion para asi agregar estos valores.

desarrollo <- dplyr::left_join(desarrollo, unique(educacion[,2:3]), 
                                by = "country_name")

desarrollo <- desarrollo[!is.na(desarrollo$value),]

Seleccion de paleta de colores

En la siguiente linea de codigo se define una paleta de colores personalizada.

colorSequence1 <- brewer.pal(7, "Dark2")

Preguntas de Investigacion

Para dar solucion a las preguntas siguientes se hara uso de los indices mensionados anteriormente con datos por pais y continentes como se muestra en la siguiente figura.

mapa_mundo <- read.csv("./Datos/globeMap.csv")
names(mapa_mundo)[8] <- "iso3"

# combino el mapa con los datos
mapa_mundo <- merge(mapa_mundo, educacion, by="iso3")

# reordeno los datos para conservar la secuancia de puntos de los poligonos
mapa_mundo <- mapa_mundo[order(mapa_mundo$order),]
ggplot(mapa_mundo %>%
         dplyr::filter(Continent_Name != "NA"), aes(long, lat)) +
  geom_polygon(aes(group=as.factor(group), fill=Continent_Name)) +
  scale_fill_manual(values = colorSequence1) + theme_bw()

Pregunta 1

¿Como se clasifican los paises de acuerdo al indice ajustado de inequidad en la educación ?

Se genera un subconjunto para el año 2017, y adicional se ordena por value de menor a mayor

indice_2017 <- educacion %>% 
  dplyr::filter(year == '2017') %>%
  dplyr::arrange(by = value)

lista de los iso3 de cada pais en el orden del subset anterior

sorted_Cuntry <- factor(indice_2017$iso3, 
                        levels = indice_2017$iso3)

Índice ordenado de inequidad en la educación en el mundo

plot1 <- ggplot(indice_2017) +
  
  # add canvas aesthetics
  aes(x=sorted_Cuntry, y=value) +
  
  # Median
  geom_vline(xintercept = length(unique(educacion$iso3))/2, 
                          color = 'gray59') + 
  # Median label
  geom_text(aes(x= 87, y= 1, label="Median", angle = 90), 
            color = 'gray59', size=3) +
  
  # add bars layer
  geom_bar(aes(x=sorted_Cuntry, y=value, fill=as.factor(Continent)), 
           stat = "identity", alpha= 0.8) +
  
  # add text layer
  geom_text(aes (y = value + 0.02, label = sorted_Cuntry, angle = 90), size=1.5) +
  
  # agregar paleta de colores personalizada
  scale_fill_manual(values = colorSequence1) +
  
  # Customize legends
  guides(fill=guide_legend(title="Continent")) +
  
  # Customize labels
  labs(title = "Sorted Inequality-adjusted education index in the world", 
       subtitle = "Year 2017", 
       caption = " 1: Africa, 2:Antartida (removed), 3:Asia, 4:Europe, 5:North America, 6:Oceania, 7:South America",
       x = "World countries", y = "Inequality-adjusted education index") +
  
  # adjust background, remove x label
  theme(legend.position=c(0.1,0.8), axis.text.x = element_blank()) +
  
  # Hide x tick marks, labels, and grid lines
  scale_x_discrete(breaks=NULL)

plot1

En esta gráfica, se puede observar la distribución del indice de inequidad ajustado de educación a nivel mundial. Además, desagregado por continente, claramente la mayoria de paises europeos se encuentran entre los mas altos y los paises Africanos, algunos Asiaticos y Suramericanos estan con los valores más bajos, es decir, son estos paises aquellos que más inequidad en educación. La mediana se encuentra exactamente en paises Asiaticos, en donde se concentran hasta \(50\%\) de los datos. Cabe mencionar que el análisis es solo para el año referencia 2017.

Distribucion global del indice de inequidad en la educacion por continente

plot2 <- ggplot(educacion, aes(x=Continent, y=value, group = Continent)) +
  
  # Grafico de puntos
  geom_point(aes(color=Continent), position=position_jitter(width=0.2,height=.2)) +
  
  # Boxplot
  geom_boxplot(aes(alpha=0.2, fill=Continent)) +
  
  # Agregar paleta de colores personalizada
  scale_color_manual(values = colorSequence1) +
  scale_fill_manual(values = colorSequence1) +
  
  # Agregar etiquetas
  labs(title = "Global distribution of nequality-adjusted education index by region", 
                    subtitle = "Aggregated from 2010-2017", 
                    caption = " 1: Africa, 2:Antartida (removed), 3:Asia, 4:Europe, 5:North America, 6:Oceania, 7:South America", 
                    x = "Continent", y = "Inequality-adjusted education index") +
  
  # Eliminamos legenda
  theme(legend.position = "none")

plot2

Una de las medidas más importante si se desea analizar la dispersión de los datos, son los diagramas de caja o de bigotes, comunmente conocido, donde se puede observar que, la mediana de Africa esta por debajo de la mediana del resto de continentes, haciendo un gran esfuerzo apenas alcanza al primer cuartil de Asia. En ese sentido, se puede notar la inequidad que existe entre Africa y el resto de continentes, no solo existe esta inequidad dentro de los contienentes, sino tambien entre los continentes, en donde Africa es el gran perjudicado en el análisis. Por otro lado, confirmando lo dicho en la anterior gráfica, Europa es el continente con una mayor mediana con respecto a los otros contienentes. adicionalmente, cuenta con muy poca dispersión al igual que Suramerica, pero su mediana esta muy por debajo en comparacion con Europa que en este caso es el gran referente en lo que tiene que ver a inequidad en educación, es decir, que es el continente mas equitativo en cuanto a la eduación de sus habitantes. Por ultimo, Oceania y Asia tienen un comportamiento similar, donde la mayor concentración de los datos se encuentran por debajo del segundo cuartil, Oceania teniendo una mediana mayor en comparación con Asia.

Índice de inequidad en la educación por pais en el año 2017

ggplot(mapa_mundo %>%
         dplyr::filter(year==2017), aes(long, lat, group=as.factor(group))) +
  geom_polygon(aes(fill=value)) +
  scale_fill_viridis_c(option="plasma") + 
  labs(title = "Índice de inequidad en la educación por pais año 2017") +
  theme_bw()

Pregunta 2

¿como se clasifica colombia con todos los paises, con el continente y con paises de suramerica?

plot3 <- plot1 +
  # Colombia
  geom_vline(xintercept = 75, 
             color = 'red') + 
  # Colombia label
  geom_text(aes(x= 74, y= 1, label="Colombia", angle = 90), 
            color = 'red', size=3)

plot3

De acuerdo con la gráfica anterior, Colombia respecto a los otros paises a nivel mundial se encuentra por debajo de la mediana, lo cual evidentemente es una referencia negativa, dado que significa que esta en el grupo que mayor inequidad tiene en la educación de sus habitantes.

indice_2017_57 <- educacion %>% 
  dplyr::filter(year == '2017') %>%
  dplyr::filter(Continent %in% c(5,7)) %>%
  dplyr::arrange(by = value)

# lista de los iso3 de cada pais en el orden del subset anterior
sorted_Cuntry_57 <- factor(indice_2017_57$iso3, 
                        levels = indice_2017_57$iso3)

Indice ordenado de inequidad en la educacion ajustado en America

plot4 <- ggplot(indice_2017_57) +
  
  # add canvas aesthetics
  aes(x=sorted_Cuntry_57, y=value) +
  
  # Median
  geom_vline(xintercept = length(unique(indice_2017_57$iso3))/2, 
             color = 'gray59') + 
  # Median label
  geom_text(aes(x= 14.2, y= 1, label="Median", angle = 90), 
            color = 'gray59', size=3) +
  
  # add bars layer
  geom_bar(aes(x=sorted_Cuntry_57, y=value, fill=as.factor(Continent)), 
           stat = "identity", alpha= 0.8) +
  
  # add text layer
  geom_text(aes (y = value + 0.02, label = sorted_Cuntry_57, angle = 90), size=2) +
  
  # agregar paleta de colores personalizada
  scale_fill_manual(values = colorSequence1[c(5,7)]) +
  
  # Customize legends
  guides(fill=guide_legend(title="Continent")) +
  
  # Customize labels
  labs(title = "Sorted Inequality-adjusted education index in America", 
       subtitle = "Year 2017", 
       caption = "5:North America, 7:South America",
       x = "America countries", y = "Inequality-adjusted education index") +
  
  # adjust background, remove x label
  theme(legend.position=c(0.1,0.8), axis.text.x = element_blank()) +
  
  # Hide x tick marks, labels, and grid lines
  scale_x_discrete(breaks=NULL)

plot4

En este caso, se compara Colombia con respecto a paises del mismo continente, en donde de nuevo se encuentra por debajo de la mediana, es decir, que esta en el grupo de mayor inequidad el cual lidera Estados Unidos y Canadá.

indice_2017_7 <- indice_2017_57 %>% 
  dplyr::filter(Continent == 7) %>%
  dplyr::arrange(by = value)

# lista de los iso3 de cada pais en el orden del subset anterior
sorted_Cuntry_7 <- factor(indice_2017_7$iso3, 
                           levels = indice_2017_7$iso3)

Indice ordenado de inequidad en la educacion en suramerica

plot5 <- ggplot(indice_2017_7) +
  
  # add canvas aesthetics
  aes(x=sorted_Cuntry_7, y=value) +
  
  # Median
  geom_vline(xintercept = length(unique(indice_2017_7$iso3))/2, 
             color = 'gray59') + 
  # Median label
  geom_text(aes(x= 5.9, y= 1, label="Median", angle = 90), 
            color = 'gray59', size=3) +
  
  # add bars layer
  geom_bar(aes(x=sorted_Cuntry_7, y=value, fill=as.factor(Continent)), 
           stat = "identity", alpha= 0.8) + 
  
  # add text layer
  geom_text(aes (y = value + 0.02, label = sorted_Cuntry_7, angle = 90), size=2) +
  
  # agregar paleta de colores personalizada
  scale_fill_manual(values = colorSequence1[5]) +
  
  # Customize legends
  guides(fill=FALSE) +
  
  # Customize labels
  labs(title = "Sorted Inequality-adjusted education index in South America", 
       subtitle = "Year 2017", 
       x = "South American countries", y = "Inequality-adjusted education index") +
  
  # Hide x tick marks, labels, and grid lines
  scale_x_discrete(breaks=NULL)

plot5

ggplot(mapa_mundo %>%
         dplyr::filter(year==2017 & Continent_Code %in% c("SA"))) +
  geom_polygon(aes(long, lat, group=as.factor(group), fill=value)) +
  scale_fill_viridis_c(option="plasma") + 
  labs(title = "Índice de inequidad en la educación en America año 2017") +
  theme_bw()

En laS gráficaS anteriores, se compara a Colombia respecto a paises suramericanos, teniendo en cuenta que la mayoria de estos son paises emergentes o en vía de desarrollo al igual que Colombia. Se puede observar que, como ha sucedido en todas las comparaciones se encuentra por debajo de la mediana que es Bolivia. En este caso, no solo esta en el grupo de paises con mayor inequidad en la educacion de sus habitantes a nivel muldial y contienental, sino tambien con respecto a paises que tienen un comportamiento y desarrollo parecido al nuestro, lo cual agrava la situación.

Indice de inequidad en la educacion en sur America desde el año 2010 hasta el 2017

anim <- ggplot(educacion %>% dplyr::filter(Continent == 7)) +
  aes(x=iso3, y=value) +
  geom_bar(aes(x=iso3, y=value, fill=as.factor(country_name)),
           stat = "identity", alpha= 0.8) +
  
  scale_x_discrete(breaks=NULL) +
  geom_text(aes (y = 0.2, label = country_name, angle = 90), size=3) +
  labs(y = "value", x = "Country") + 
  guides(fill=FALSE) + 
  scale_fill_manual(values = brewer.pal(12, "Paired")) +
  theme_bw() +
  
  transition_states(year, transition_length = 1, state_length = 1) +
  ggtitle('Inequality-adjusted education index year {closest_state}')

# animate it
animate(anim,
        width = 400, height = 400,
        nframes = 480, fps = 24)

ggplot(mapa_mundo %>% dplyr::filter(Continent == 7), 
       aes(x=country_name, y=year, fill=value)) +
  geom_tile() +
  scale_fill_viridis_c(option="magma") +
  theme(axis.text.x = element_text(angle = 90)) +
  labs(title = "Indice de inequidad en la educacion en sur America", 
       subtitle = "2010-2017", 
       x = "Country", y="Year")

coord_educacion <- ggplot(educacion %>% dplyr::filter(Continent == 7),
       aes(x = year, y = value, color=country_name)) + 
  geom_line() + geom_point(aes(color = country_name), shape=16, size=2) +
  labs(title = "Indice de inequidad en la educacion en sur America",
       subtitle = "2010-2017") +
  scale_fill_manual(values = brewer.pal(12, "Paired")) +
  theme_ipsum() + theme(plot.title = element_text(size=10))

ggplotly(coord_educacion)

De acuerdo con las gráficas anteriores, se observa el comportamiento del indice de inequidad en educación para suramerica al largo de los años, desde el año 2010 hasta el 2017. Se puede ver, que en todo a lo largo del tiempo, Argentina y Chile lideran, en el caso de Colombia, se mantiene estable al mismo nivel de Brasil, Ecuador, Guyana y Peru, claramente entre los mas bajos de esta parte del contienente americano.

Pregunta 3

¿como se relaciona el indice de desarrollo con respecto al indice de inequidad en la educacion en suramerica?

educacion_7 <- subset(educacion, educacion$Continent == 7) %>%
  dplyr::mutate(indicator_name = "Inequality in Education index") %>%
  dplyr::select(country_name, year, value, indicator_name)

desarrollo_7 <- subset(desarrollo, desarrollo$Continent == 7) %>%
  dplyr::mutate(indicator_name = "Human Development index") %>%
  dplyr::select(country_name, year = variable, value, indicator_name)

datos_t_7 <- rbind(educacion_7, desarrollo_7)

Desarrollo humano e inequidad en la educacion en sur America

ggplot(datos_t_7, aes(x=value, fill=indicator_name, color=indicator_name)) +
  geom_density(alpha=.3) +
  scale_fill_brewer(type = "qual", palette = "Set1") +
  scale_color_brewer(type = "qual", palette = "Set1") +
  labs(title = "Human Development and Inequality in Education in South America", 
                    subtitle = "From 2010-2017",
                    caption = "index adjusted",
                    x = "Percentage", 
                    y= "Density (Fequency per inequality)")

Teniendo en cuenta las anteriores distribuciones de densidad de los años 2010 hasta el 2017, se puede decir que en el caso de la inequidad en educación la mayoria de los datos se encuentran alrededor de 0.6, en cambio el indice de desarrollo humano esta alrededor de 0.75, lo cual significa que han tenido un buen desarrollo en general, pero esto no se ve reflejado en la educación.

Analisis de correlacion

En la siguiente linea de codigo unimos los dos conjuntos de datos

corrDataset <- merge(educacion_7, desarrollo_7, by=c("country_name","year")) %>%
  select(year, Education = value.x, Development = value.y)
mcor <- cor(corrDataset)
corrplot::corrplot(mcor, method = "number", type="upper")

plot6 <- ggplot(corrDataset, 
                aes(x = Education, y = Development)) +
  geom_point(color=colorSequence1[2]) + theme_bw() +
  
  transition_states(year, transition_length = 1, state_length = 1) +
  ggtitle('Inequality-adjusted education index year {closest_state}')

# animate it
animate(plot6,
        width = 400, height = 400,
        nframes = 480, fps = 24)

Podemos observar el comportamiento o la relación del indice de desarrollo humano y la inequidad en educación al pasar de los años, para un intervalo de tiempo del año 2010 al 2017, en donde se puede ver que la mayoria de los puntos de coordenadas, estan por debajo de 0.8 en desarrollo y en muchas ocasiones llegando a 0.5 en educación, lo que significa que el desarrollo humano no tiene un crecimiento lineal con respecto a la inequidad en la educacion, es decir, que si en algunos años incrementa el desarrollo humano, en educación este incremento es una menor proporción, es decir que el desarrollo no se basa completamente en educación, sino en otros factores.

Pregunta 4

¿como se relaciona el indice de desarrollo con el indice de inequidad en la educacion en Europa?

educacion_4 <- subset(educacion, educacion$Continent == 4) %>%
  dplyr::mutate(indicator_name = "Inequality in Education index") %>%
  dplyr::select(country_name, year, value, indicator_name)

desarrollo_4 <- subset(desarrollo, desarrollo$Continent == 4) %>%
  dplyr::mutate(indicator_name = "Human Development index") %>%
  dplyr::select(country_name, year = variable, value, indicator_name)

datos_t_4 <- rbind(educacion_4, desarrollo_4)

Desarrollo humano e inequidad en la educacion en Europa

ggplot(datos_t_4, aes(x=value, fill=indicator_name, color=indicator_name)) +
  geom_density(alpha=.3) +
  scale_fill_brewer(type = "qual", palette = "Set1") +
  scale_color_brewer(type = "qual", palette = "Set1") +
  labs(title = "Human Development and Inequality in Education in europa", 
       subtitle = "From 2010-2017",
       caption = "index adjusted",
       x = "Percentage", 
       y= "Density (Fequency per inequality)")

Teniendo en cuenta las anteriores distribuciones de densidad del año 2010 hasta el 2017, se puede decir que el comportamiento de desarrollo humano y educación son similares, con la mayoria de los datos por encima de 0.8, lo cual es muy superior a lo visto anteriormente con suramerica, esto demuestra que Europa es un referente no solo en desarrollo humano, sino tambien en la igualdad en la educación de sus habitantes.

En la siguiente linea de codigo unimos los dos conjuntos de datos

corrDataset <- merge(educacion_4, desarrollo_4, by=c("country_name","year")) %>%
  select(year, Education = value.x, Development = value.y)
mcor <- cor(corrDataset)
corrplot::corrplot(mcor, method = "number", type="upper")

plot7 <- ggplot(corrDataset, 
                aes(x = Education, y = Development)) +
  geom_point(color=colorSequence1[2]) + theme_bw() +
  
  transition_states(year, transition_length = 1, state_length = 1) +
  ggtitle('Inequality-adjusted education index year {closest_state}')

# animate it
animate(plot7,
        width = 400, height = 400,
        nframes = 480, fps = 24)

Se observa la relación del indice de desarrollo humano y el indice de inequidad ajustado de educación para Europa, al pasar de los años para un intervalo de tiempo del año 2010 al 2017, se puede ver que, la mayoria de los puntos de coordenadas estan por encima de 0.8 en desarollo y en muchas ocasiones llegando a 0.9 en educación y desarrollo humano, pero a pesar de que la correlación es menor que en suramerica, ambos indices en Europa han crecido en una proporción similar.