Preguntas

Punto 1

Arqueros.(RM3,SP2) Utilizando el conjunto de datos FIFA Football Players, construya un gráfico de dispersión para analizar la relación entre el desempeño propio de arqueros y su valor de mercado.

\[ S_i = Goalkeeper \ Positioning_i + Goalkeeper \ Diving_i \\ \quad + Goalkeeper \ Handling_i + Goalkeeper \ Kicking_i \\ \quad + Goalkeeper \ Reflexes_i \] Solucion

#Lectura de las librerias y del archivo
library(dplyr)
library(readr)
library(ggplot2)
library(readxl)
library(writexl)
library(readxl)

# Leer archivo Excel
fifa <- read_excel("fifa 24 estudiantes.xlsx")
attach(fifa)

Punto a)

  1. Considere únicamente jugadores cuya posición sea Goalkeeper. Defina para cada jugador i el puntaje de arquero como la suma de los cinco atributos específicos:
# a) Calculando el puntaje de los arqueros con base en sus habilidades
fifa$puntaje_gk <- gk_positioning +
           gk_diving + gk_handling +
           gk_kicking + gk_reflexes

#Se evidencia la tabla con el puntaje de los arqueros (puntaje_gk)
fifa[, c("player", "club", "value", "puntaje_gk")]

Punto b)

  1. Seleccione los 10 mejores arqueros según Si (de mayor a menor).
# b) Seleccione los 10 mejores arqueros

# Ordenar jugadores de mayor a menor segun el puntaje de los arqueros
fifa_ordenado <- fifa[order(-fifa$puntaje_gk), ]

# Seleccionar los 10 mejores
top10 <- fifa_ordenado[1:10, ]

# Mostrar columnas clave de los 10 mejores arqueros
top10[, c("player", "club", "value", "puntaje_gk")]

Punto c)

  1. Elabore un gráfico de dispersión que relacione Si con Value.

Hay que tener en cuenta que la variable ‘value’ en RStudio se interpreta como texto (string), ya que está acompañada por el signo $ y puntos(.) utilizados como separadores. Esto impide que se reconozca como un valor numérico. Por lo tanto, para poder construir la gráfica de dispersión fue necesario eliminar esos valores. Usamos la función gsub(), la cual permite reemplazar caracteres en cadenas de texto, y despues, los convertimos a un dato de tipo numerico.

fifa$value <- gsub("\\$", "", fifa$value)   
fifa$value <- gsub("\\.", "", fifa$value)
fifa$value <- gsub("\\.00", "", fifa$value)
fifa$value <- as.numeric(fifa$value)
fifa$value <- as.numeric(fifa$value)


# c) Gráfico de dispersión con TODOS los jugadores
ggplot(fifa, aes(x = puntaje_gk, y = value)) +
  geom_point(color = "blue", alpha = 0.6, size = 2) +
  scale_y_continuous(labels = scales::comma) + 
  labs(title = "Relación Puntaje GK (arquero) vs Valor de Mercado",
       x = "Puntaje GK ",
       y = "Valor de mercado") +
  theme_minimal()

Punto d)

  1. Identifique los arqueros de mejor calidad-precio, definiendo el índice

\[ Q_i = \frac{S_i}{Value_i} \]

Comente brevemente su eleccion

# d) Calcular el índice calidad-precio
fifa$Qi <- fifa$puntaje_gk / fifa$value

# Ordenar de mayor a menor Qi (los mejores calidad-precio arriba)
fifa_qi_ordenado <- fifa[order(-fifa$Qi), ]

# Ver los 10 mejores calidad-precio
mejores_qi <- fifa_qi_ordenado[1:10, c("player", "club", "puntaje_gk", "value", "Qi")]

mejores_qi

Comentario respecto a \(Q_i\)

Analizando el indice \(Q_i\), se observo que los arqueros mas caros no siempre son los de mejor calidad-precio. Debido a que tienen mucho puntaje, un precio de mercado alto, asi que su \(Q_i\), queda bajo. En cambio, algunos arqueros que no son los mejores en puntaje aparecen con un \(Q_i\) alto porque cuestan poco y rinden bastante bien para su precio.

En pocas palabras:

  • Alto \(Q_i\) : arquero rentable (bueno y barato)
  • Bajo \(Q_i\) : arquero estrella, pero muy caro

En conclusion, un valor de \(Q_i\) alto no significa ser el mejor arquero, sino ser el mas rentable en comparacion con lo que cuesta, buscando un balance de precio-jugador.

Punto 2

Nómina.(R2,C2) Elabore un diagrama de caja y bigote (boxplot) para comparar los salarios de los jugadores pertenecientes a los siguientes clubes: Real Madrid, Paris SaintGermain, Chelsea y FC Barcelona.

Punto a)

Utilice la variable value del conjunto de datos, filtrando únicamente a los jugadores de dichos clubes.

fifa$value <- gsub("\\$", "", fifa$value) 
fifa$value <- gsub("\\.", "", fifa$value)  
#value como numero
fifa$value <- as.numeric(fifa$value)

#filtrar clubes con nombres
clubes <- fifa %>% 
  filter(club %in% c("Real Madrid", "Paris SG", "Chelsea", "FC Barcelona"))

Punto b)

Construya un diagrama de caja por cada club, de manera que se puedan observar la mediana, la dispersión y los valores atípicos.

#Grafica de caja y bigotes 
ggplot(clubes, aes(x = club, y = value, fill = club)) +
  geom_boxplot(outlier.color = "red", outlier.shape = 16, outlier.size = 2) +
  scale_y_continuous(labels = scales::comma) +
  labs(title = "Comparación de salarios de jugadores",
       x = "Club",
       y = "Salario en euros") +
  theme_minimal() +
  theme(legend.position = "none",
        axis.text.x = element_text(angle = 15, hjust = 1))

Punto c)

  1. A partir de la gráfica, describa las diferencias o similitudes que encuentre entre los salarios de los jugadores en los cuatro clubes seleccionados.

Al comparar los salarios de los jugadores en los cuatro clubes seleccionados, se observan las siguientes características:

Chelsea: Presenta una mediana relativamente baja en comparación con Barcelona y PSG. La dispersión de los salarios es moderada, pero existen algunos valores atípicos (jugadores con salarios muy superiores).

FC Barcelona: Muestra la mayor dispersión de los cuatro clubes. La mediana es más alta que la de Chelsea y Real Madrid. Presenta varios valores atípicos, lo cual indica que existen jugadores con salarios mucho mas altos que el promedio.

Paris Saint-Germain (PSG): Tiene una mediana similar a la de Barcelona, aunque con menor dispersión. Se observan valores atípicos muy elevados, probablemente indicando el sueldo de sus jugadores principales.

Real Madrid: Es el club con la mediana más baja de los cuatro. La dispersión de los salarios es menor que en Barcelona y PSG.

Punto 3

Jugadores estrella.(SP3,C3) Considere el conjunto de datos de jugadores de fútbol y realice el siguiente análisis:

punto a)

  1. Seleccione únicamente a los jugadores cuyo valor estimado Value sea superior a 70,000,000.
# a) Seleccionando los jugadores donde su valor es igual o mayor a 70,000,000.
fifa$value <- gsub("[$.]", "", fifa$value)   
fifa$value <- as.numeric(trimws(fifa$value))
jugadores_estrella <- fifa[fifa$value > 70000000, ]

#Comprobamos que haya seleccionado los que cumplen la condicion
View(jugadores_estrella)

punto b)

  1. Descarte a los arqueros, así como las variables específicas de porteros (Goalkeeper Positioning, Goalkeeper Diving, Goalkeeper Handling, Goalkeeper Kicking, Goalkeeper Reflexes).
# b) decartamos a todos los que son de la posición goalkeeper
cols_quitar <- c("Goalkeeper Positioning", "Goalkeeper Diving",
                 "Goalkeeper Handling", "Goalkeeper Kicking",
                 "Goalkeeper Reflexes")

jugadores_estrella <- jugadores_estrella[, !(names(jugadores_estrella) %in% cols_quitar)]

#Comprobamos que haya seleccionado los que cumplen la condicion
View(jugadores_estrella)

punto c)

  1. Para cada jugador seleccionado, calcule la media y la desviación estándar de sus puntajes individuales en las demás habilidades.
# c) Para cada jugador buscamos la media y la desviación estandar manualmente y creamos nuevas columnas que tengan estos valores
jugadores_estrella$media_hab <- NA
jugadores_estrella$sd_hab <- NA

# buscamos que columnas tienen estos valores números de habilidades
columnas_numericas <- names(jugadores_estrella)[sapply(jugadores_estrella, is.numeric)]
columnas_numericas <- setdiff(columnas_numericas, c("Value", "Age", "Height", "Weight"))

# avanza por todos los jugadores calculando la media y desviación estandar
for(i in 1:nrow(jugadores_estrella)){
  valores <- as.numeric(jugadores_estrella[i, columnas_numericas])
  jugadores_estrella$media_hab[i] <- mean(valores, na.rm = TRUE)
  jugadores_estrella$sd_hab[i] <- sd(valores, na.rm = TRUE)
}

punto d)

  1. Identifique: El jugador con el promedio más alto de puntajes. El jugador más consistente, es decir, con la menor desviación estándar en sus habilidades.
# d) Encontramos el jugador que posea el mejor promedio
mejor_promedio <- jugadores_estrella[which.max(jugadores_estrella$media_hab), ]

# Encontramos al jugador con mayor consistencia o en otras palabras menor desviación
mas_consistente <- jugadores_estrella[which.min(jugadores_estrella$sd_hab), ]

punto e)

  1. Presente los resultados en una tabla comparativa e interprete brevemente los hallazgos.
# e) Se muestra los jugadores con mejor promedio
estrella_ordenada <- jugadores_estrella[order(-jugadores_estrella$media_hab), ]
head(estrella_ordenada[, c("player", "club", "value", "media_hab", "sd_hab")], 10)

De esta tabla podemos ver que es una herramienta bastante util ya que nos permite conocer en un grupo bastante amplio de diversos jugadores, cuales son lo que mejores habilidades o un mejor promedio tiene, de la misma manera observar y clasificar cuales son los que mas consistencia presentan o menor desviacion posean. logrando tener una comparación bastante clara de estos dos aspectos tan importantes para el mundo del futbol.