Los Juegos Olímpicos son el mayor evento deportivo a nivel internacional que sucede cada cuatro años, en donde se practican múltiples disciplinas, las cuales son ejecutadas por deportistas de la mayoría de los países en todo el mundo. El lugar donde se realizan son países anfitriones establecidos, y quienes son los encargados de proporcionar las instalaciones.
Para este proyecto se nos asignó un reto, el cual consiste en relatar una historia en base a un conjunto de datos masivos que quedó a nuestra elección. ¿Cómo escoger el tema? ¿Cómo encontrar la base de información? ¿Cuál es la relación con el tiempo? Todo se resume en un buscador, ya que al indagar y obtener Data Sets siendo Los Juegos Olímpicos. El tema llamó nuestro interés ya que la información estaba dada a lo largo de dos siglos de historia, además de ellos, se lanzó una primera hipótesis al ver los datos de manera superficial: Las medallas alcanzada por los países tienen relación directa con su eficiencia económica y por ende con su Índice de Producto Interno Bruto. Se tiene el espacio para analizar grandes cambios en relación a las variables y saber que los causa, y asimismo relatar el porqué de cada uno de los cambios.A lo largo del trabajo se demostrará o se refutará nuestra hipótesis, la cual dio sentido al análisis de datos. Cabe mencionar que durante la ejecución del proyecto, justoo después de obtener el Data Set, fue necesario realizar una limpieza especificada y trabajosa para que se pusiera detallar y visualizar los información que los datos que el grupo desea de forma adecuada.
Hipótesis
Con este proyecto pretendemos demostrar que el estado socioecómico de un país influye fuertemente en relación a los deportes que se practican en Los Juegos Olímpicos, por ende, también el desarollo de los jugadores es distinto al de otros paises que tienen un fuerte nivel socioeconómico.
El desarrollo del proyecto implicó una serie de esfuerzos, unos más grandes que otros. Nuestro equipo está conformado por personas que han tenido cero contacto o relativamente poco con la programación y análisis de datos antes de ejecutar este proyecto. Se considera importante recalcar que se desarrolló el método de “prueba y error”, como comunmente lo conocemos, para la utilización de los comandos deseados. Además de ello, a parte de tener los materiales de apoyo proporcionado por los dirigentes del curso, nuestra herramienta principar fue tutoriales y págicas de internet. La incorporación de conocimientos que podemos realizar son los siguientes:
En el transcurso del análisis de datos y la búsqueda constante de cómo organizar la información, finalmente se procedió a instalar y utilizar los siguientes paquetes.
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(modeest)
## Warning: package 'modeest' was built under R version 3.3.3
##
## This is package 'modeest' written by P. PONCET.
## For a complete list of functions, use 'library(help = "modeest")' or 'help.start()'.
library(maps)
## Warning: package 'maps' was built under R version 3.3.3
library(scales)
IMPORTACIÓN DE DATASETS: dictionary, olympics, gdp per capita. Previo al análisis se tuvo que arreglar los datos con ayuda de Excel, ya que para que se pudiera juntar los datasets en R, tenían que coincidir los códigos, los datos de las olimpiadas, los países aparecían en código, pero los datos del PIB aparecían con nombre de país.
library(dplyr)
library(readr)
##
## Attaching package: 'readr'
## The following objects are masked from 'package:scales':
##
## col_factor, col_numeric
dictionary <- read_csv("~/Data Science/Proyecto 1/dictionary.csv", col_types = cols(`GDP per Capita` = col_number(), Population = col_number()))
colnames(dictionary) <- c("País", "Country", "Population", "GDP per capita")
#View(dictionary)
library(readr)
olympics <- read_csv("~/Data Science/Proyecto 1/olympics.csv", col_types = cols(Year = col_number()))
Se cambió los nombres de las columnas y se modificó los nombres de algunos países que ya no existen. Por ejemplo, todas las medallas que aparecían con URS (Unión Soviética) se cambió a RUS (Rusia). Lo mismo sucede con Alemania Occidental y Oriental. También se modificó el tipo de dato, por ejemplo, pasar de factor a carácter o numérico.
olympics <- replace(olympics, olympics=="URS","RUS")
olympics <- replace(olympics, olympics=="RU1","RUS")
olympics <- replace(olympics, olympics=="ANZ","AUS")
olympics <- replace(olympics, olympics=="BWI","GBR")
olympics <- replace(olympics, olympics=="EUA","GER")
olympics <- replace(olympics, olympics=="FRG","GER")
olympics <- replace(olympics, olympics=="GDR","GER")
olimpics <- replace(olympics, olympics=="SIN","SGP")
olympics <- replace(olympics, olympics=="TRT", "TRI")
View(olympics)
library(readxl)
gdp <- read_excel("~/Data Science/Proyecto 1/gdp per capita.xlsx",
col_names = FALSE, col_types = c("text",
"text", "numeric", "numeric"))
colnames(gdp) <- c("País", "Country", "Year", "GDP per capita")
En la información anterior no se contaba con datos actualizados de los Juegos Olímpicos del año pasado llevados a cabo en Río de Janeiro, Brasil.
library(readxl)
olympics_2016 <- read_excel("~/Data Science/Proyecto 1/olympics 2016.xlsx",
col_names = FALSE, col_types = c("text",
"numeric", "numeric", "numeric","numeric"))
colnames(olympics_2016) <- c("Country", "Gold", "Silver", "Bronze", "Total")
#View(olympics_2016)
library(readr)
geo <- read_delim("~/Data Science/Proyecto 1/geo.csv",
";", escape_double = FALSE, col_types = cols(`City (de)` = col_skip(),
`Country (de)` = col_skip(), Latitude = col_number(),
Longitude = col_number(), Population = col_number()),
trim_ws = TRUE)
colnames(geo) <- c("City", "Country", "Code", "Population", "Latitude", "Longitude")
library(readr)
gen <- read_csv("~/Data Science/Proyecto 1/olim.csv")
## Parsed with column specification:
## cols(
## Juegos = col_character(),
## Year = col_integer(),
## `Pa<ed>s Organizador` = col_character(),
## Ciudad = col_character(),
## `No. de pa<ed>ses` = col_integer(),
## `No. de pruebas` = col_integer(),
## `No. de deportes` = col_integer(),
## Hombres = col_integer(),
## Mujeres = col_integer(),
## `Total deportistas` = col_integer()
## )
gen <- select(gen, Year, Hombres, Mujeres)
Al momento del desarrollo del proyecto surgió la idea de iniciar un nuevo análisis acerca de la relación entre las medallas obtenidas y la participación de los continentes.
Continents <- read_csv(paste(getwd(),"/Proyecto1/Countries-Continents-csv.csv/sep = ""),
col_types = cols(Column = col_skip(),
Column2 = col_skip(), Column3 = col_skip(),
Column4 = col_skip(), Column5 = col_skip(),
Column6 = col_skip(), Column7 = col_skip(),
Column8 = col_skip(), Column9 = col_skip(),
Continent = col_character()))
colnames(Continents) <- c("Continente", "Pais"))
Se continuó trabajando en los análisis de los datos, se iniciaron a construir los Data Frames,partiendo desde la visualización de las medallas totales hasta culminar con tablas fijas del PIB y medallas por país y por año.
Ya con los datasets cargados y arreglados, se juntaron los datasets para crear dataframes con los cuales pudiéramos analizar los datos más detalladamente. Para eso usamos funciones como “merge”, “rbin”, “filter”, “select”, y “mutate”.
medallas_totales <- data.frame(table(olympics$Country))
colnames(medallas_totales) <- c("Country", "Frequency")
medallas2016 <- select(olympics_2016, Country, Total)
medallas_totales<- (merge(x=medallas_totales, y=medallas2016, by="Country", all.x = TRUE))
medallas_totales[is.na(medallas_totales)] <- 0
medallas_totales <- mutate(medallas_totales, total= Frequency + Total)
medallas_totales <- select(medallas_totales, Country, total)
global <- merge(dictionary, medallas_totales, by="Country")
colnames(global) <- c("Code", "Country", "Population", "GDP per capita", "Medals")
year <- data.frame(table(olympics$Year, olympics$Country))
colnames(year) <- c("Year", "Country", "Total")
medallas2016$Year <- rep(2016, nrow(medallas2016))
medallas2016 <- medallas2016[c(3,1,2)]
year$Year <- as.numeric(as.character(year$Year))
year$Country <- as.character(year$Country)
year <- rbind(year, medallas2016)
Se verifica el tipo de medalla, para esta visualización no se tiene en cuenta el año 2016.
tipo <- data.frame(table(olympics$Country, olympics$Medal))
colnames(tipo) <- c("Country", "Medal", "Total")
Considerado como el Data Frame final, en éste si está incluído los datos del año 2016
df1 <- merge(year, gdp, by=c("Country", "Year"))
df1 <- df1[c("País", "Country", "Year", "GDP per capita", "Total")]
colnames(df1) <- c("Country", "Code", "Year", "GDP per capita", "Medals")
View(df1)
Se crean variables que incluyen la union del data frame anterior con los datos del cvs de Continentes, para determinar el continente al que pertence cada país de las olimpiadas.
Years<- summarise(group_by(df,Year))
Conti <- summarise(group_by(df, Continent))
Total <- select(global, Country, Medals)
#Vector de Colores para que sean los mismos en todas
col_Conti<- rainbow(length(Conti$Continent), s=0.76 , v=0.9)
names(col_Conti) <- c( Conti$Continent)
#Pie Charts
for(yearActual in Years$Year){ #Se repite a lo largo de los elementos de la variable
anio <- filter(df, Year==yearActual, Medals!=0) #Limita las entradas unicamente de cada anio
Total2 <- sum(anio$Medals)
forPie <- anio %>%
group_by(Continent, Year) %>%
summarise( `Porcentaje por Continente`= sum(Medals)/Total2*100)
#Color para Continentes
#Graficar Pie
ggplot(data=forPie,aes(x="", y=`Porcentaje por Continente`, fill=Continent )) +
ggtitle(paste("Medallas (", Total2, ") Year ", yearActual, sep="")) +
geom_bar(width = 1, stat = "identity") + coord_polar("y") +
theme(axis.text.x=element_blank(), axis.title.y = element_blank(), panel.border = element_blank(),
panel.grid=element_blank(), axis.ticks = element_blank())+
scale_fill_manual("Continentes", values = col_Conti)+
geom_text(aes(label = percent(`Porcentaje por Continente`/100)),size=5, position=position_dodge(0.9)) +
theme(plot.title = element_text(family = "Arial", color="#666666", face="bold", size=32, hjust=0))
#Guardar la ultima grafica
+ ggsave(filename = paste("PIE", yearActual, ".png", sep = ""), plot = last_plot(), device = "png",
path = paste(getwd(), "/Data Science/Proyecto 1/Graficas/Pie", sep= ""), scale = 1, width = 11, height = 6, units = c("in", "cm", "mm"), dpi = 300)
}
#Promedio, Mediana y Moda
df <- df1 #Asignamos el data frame final con nombre df, para su fácil manejo
Years <- summarise(group_by(df, Year)) #Es necesario un vector únicamente con los años de olimpiadas
DatosEstadisticos<- data.frame()
for(yearActual in Years$Year){
anio <- filter(df, Year==yearActual, Medals!=0)
forModa <- summarise(group_by(anio, Year, Medals), Paises_con_n_Medallas=n()) #n() contador
forModa <- filter(forModa, Paises_con_n_Medallas == max(forModa$Paises_con_n_Medallas) )
DatosEstadisticos <- rbind(DatosEstadisticos, c(yearActual, mean(anio$Medals), median(anio$Medals), forModa$Medals))
}
colnames(DatosEstadisticos)<- c("Año","Promedio", "Mediana", "Moda")
## Año Promedio Mediana Moda
## 1 1896 14.50000 6.5 6
## 2 1900 26.44444 6.0 2
## 3 1904 51.33333 4.0 2
## 4 1908 44.38889 20.5 3
## 5 1912 49.16667 23.5 14
## 6 1920 61.33333 29.0 1
## 7 1924 34.88000 20.0 1
## 8 1928 22.73333 14.0 1
## 9 1932 23.50000 10.0 1
## 10 1936 28.56667 17.5 1
## 11 1948 22.85294 10.5 1
## 12 1952 21.43590 7.0 1
## 13 1956 23.75000 9.5 2
## 14 1960 21.56410 7.0 1
## 15 1964 24.57895 6.0 1
## 16 1968 24.30000 9.5 2
## 17 1972 25.84091 8.0 1
## 18 1976 34.32432 10.0 1
## 19 1980 38.69697 9.0 1
## 20 1984 30.46667 5.0 1
## 21 1988 31.29787 8.0 1
## 22 1992 24.18333 6.5 1
## 23 1996 24.40541 5.5 1
## 24 2000 26.09333 7.0 1
## 25 2004 28.28986 8.0 1
## 26 2008 24.60494 6.0 1
## 27 2012 23.59259 6.0 1
## 28 2016 11.86076 5.0 1
Datos del PIB per capita.
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 323.9 1349.0 3034.0 7076.0 7891.0 118700.0 5
Datos de las medallas a traves de los años.
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 0.000 0.000 8.995 2.000 442.000
Una vez concluídos los Data Frames, se inició con la realización y visualización de la información que arrojan los datos, todo esto por medio de gráficas.
Lo a continuación escrito, finalizó siendo extenso ya que los códigos introducidos proyectas cada una de las imágenes necesarias para poder proyectar el y unificar el proceso final de los datos que muestran las medallas obtenidas a través de los años, el PIB per capita en cada uno de los años de Juego Olímpico, que hasta la fecha han sido 31, por ende, serán treinta y un imágenes.
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_point).
Las siguientes gráficas nos muestran la relación del número de medallas ganadas por cada país distribuida en el continenete que pertenece el país, viendo así una relación entre que contienentes son los que ganan más medallas a través de los años. Y ver también que la historia política e historica que enfrentan los paises en esos años afecto la participación en los juegos olímpicos.
El mapa incluye la verificación de la medallas totales obtenidas por países a lo largo de la historia.
library(maps)
lobal <- merge(dictionary, medallas_totales, by="Country")
colnames(global) <- c("Code", "Country", "Population", "GDP per capita", "Medals")
Total <- select(global, Country, Medals)
map <- map_data("world")
colnames(map) <- c("long", "lat", "group", "order", "region", "subregion")
map <- ggplot(data = map) +
geom_polygon(aes(x = long, y = lat, group=group), color ="light blue", fill="light blue")
map <- map +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_rect(fill = 'white', colour = 'white'),
axis.line = element_line(colour = "white"), legend.position="none",
axis.ticks=element_blank(), axis.text.x=element_blank(),
axis.text.y=element_blank())
geo <- select(geo, Country, Latitude, Longitude)
geo <- merge(geo, Total, by="Country")
map <- map +
geom_point(data=geo,
aes(x=Longitude, y=Latitude, fill= Medals),
size=4 , pch=21, alpha=I(0.7))+
scale_fill_continuous(low = "yellow", high = "red")
En esta siguiente gráfica, se presentan las diferencias estadísticas de la participación por género, de igual manera que la anterior, a través de los XXI Juegos Olímpicos.
De acuerdo a la investigación y análisis de datos se concluye lo siguiente:
Respuesta ante hipótesis planteada: Nuestra hipótesis al inicio del estudio de datos fue reconocer una relación directa entre los Índices del Producto Interno Bruto con el número de medallas obtenidas por distintos países a través de estos dos siglos, no obstante, después de la proyección de datos, encontramos que no hay asociación positiva entre nuestras variables dependientes. Por lo tanto se concluye que nuestra hipótesis es incorrecta.