1 Introducción

Este taller utiliza el conjunto de datos completo de jugadores de fútbol FIFA24, que contiene información detallada sobre jugadores de fútbol de todo el mundo en 2022-2023.

El análisis se enfoca en tres aspectos principales: el desempeño de arqueros, comparación salarial entre clubes top y análisis de jugadores estrella.

library(ggplot2)
library(dplyr)
library(readr)
library(gridExtra)
library(scales)
library(knitr)
# Cargar dataset completo (sin muestra)
fifa_data <- read_csv("FIFA24.csv")

# Función para limpiar valores monetarios
limpiar_valor <- function(x) {
  x_limpio <- gsub("\\$|\\.", "", x)
  as.numeric(x_limpio)
}

fifa_data$value <- limpiar_valor(fifa_data$value)

cat("Dataset FIFA24 cargado completamente\n")
## Dataset FIFA24 cargado completamente
cat("Total de jugadores:", nrow(fifa_data), "\n")
## Total de jugadores: 5680
cat("Total de variables:", ncol(fifa_data), "\n\n")
## Total de variables: 41
head(fifa_data)
## # A tibble: 6 × 41
##   player        country height weight   age club  ball_control dribbling marking
##   <chr>         <chr>    <dbl>  <dbl> <dbl> <chr>        <dbl>     <dbl> <chr>  
## 1 Cristian Cas… Colomb…    192     84    22 Atl.…           55        43 <NA>   
## 2 Silaldo Taff… Brazil     181     80    31 Cori…           69        70 <NA>   
## 3 Thomas Dähne  Germany    193     84    29 Hols…           25        12 <NA>   
## 4 Michael Soll… Austria    187     86    33 SK R…           46        48 <NA>   
## 5 Diego Segovia Uruguay    191     80    23 Inde…           14         8 <NA>   
## 6 Cláudio Ramos Portug…    183     83    31 FC P…           20        16 <NA>   
## # ℹ 32 more variables: slide_tackle <dbl>, stand_tackle <dbl>,
## #   aggression <dbl>, reactions <dbl>, att_position <dbl>, interceptions <dbl>,
## #   vision <dbl>, composure <dbl>, crossing <dbl>, short_pass <dbl>,
## #   long_pass <dbl>, acceleration <dbl>, stamina <dbl>, strength <dbl>,
## #   balance <dbl>, sprint_speed <dbl>, agility <dbl>, jumping <dbl>,
## #   heading <dbl>, shot_power <dbl>, finishing <dbl>, long_shots <dbl>,
## #   curve <dbl>, fk_acc <dbl>, penalties <dbl>, volleys <dbl>, …
str(fifa_data$value)  # Verificar que value ahora sea numérico
##  num [1:5680] 1400000 97500 1100000 65000 30000 2800000 1600000 23000 1400000 47500 ...

2 Análisis de Arqueros

Primero, identificamos a los jugadores que son arqueros y calculamos su puntaje específico como la suma de los cinco atributos de portero.

arqueros <- fifa_data %>%
  filter(!is.na(gk_positioning)) %>%  # Los arqueros tienen valores en atributos de portero
  filter(gk_positioning > 0) %>%      # Filtro adicional para asegurar que son arqueros
  mutate(
    puntaje_arquero = gk_positioning + gk_diving + gk_handling + gk_kicking + gk_reflexes
  )

cat("Número total de arqueros:", nrow(arqueros), "\n")
## Número total de arqueros: 5680
summary(arqueros$puntaje_arquero)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   13.00   47.00   53.00   81.47   59.00  426.00
top_10_arqueros <- arqueros %>%
  arrange(desc(puntaje_arquero)) %>%
  slice_head(n = 10) %>%
  select(player, country, club, puntaje_arquero, value, gk_positioning, gk_diving, gk_handling, gk_kicking, gk_reflexes)

knitr::kable(top_10_arqueros, 
             caption = "Top 10 Arqueros según Puntaje de Habilidades",
             col.names = c("Jugador", "País", "Club", "Puntaje", "Valor", "Posic.", "Diving", "Manejo", "Pateo", "Reflejos"))
Top 10 Arqueros según Puntaje de Habilidades
Jugador País Club Puntaje Valor Posic. Diving Manejo Pateo Reflejos
Gianluigi Donnarumma Italy Paris SG 426 78000000 85 90 83 79 89
Keylor Navas Costa Rica Nott’m Forest 420 9000000 87 87 84 75 87
Koen Casteels Belgium VfL Wolfsburg 415 28000000 84 84 82 79 86
Yassine Bounou Morocco Sevilla FC 413 28500000 84 83 83 78 85
Lucas Mantela Brazil Brazil 409 27000000 77 79 87 85 81
Alejandro Remiro Gargallo Spain Real Sociedad 407 23500000 85 83 76 79 84
Gerónimo Rulli Argentina Ajax 405 20500000 81 82 79 80 83
Stefan Ortega Germany Manchester City 401 14500000 80 76 74 86 85
Kasper Schmeichel Denmark OGC Nice 400 3400000 81 79 78 79 83
Anthony Lopes Portugal OL 399 16000000 80 84 78 71 86
ggplot(top_10_arqueros, aes(x = puntaje_arquero, y = value)) +
  geom_point(size = 3, color = "steelblue", alpha = 0.7) +
  geom_text(aes(label = player), vjust = -0.5, hjust = 0.5, size = 3) +
  labs(
    title = "Relación entre Puntaje de Arquero y Valor de Mercado",
    subtitle = "Top 10 Arqueros FIFA24",
    x = "Puntaje de Arquero (Si)",
    y = "Valor de Mercado"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5)
  ) +
  scale_y_continuous(labels = scales::comma)

top_10_arqueros <- top_10_arqueros %>%
  mutate(
    indice_calidad_precio = puntaje_arquero / value,
    indice_cp_formatted = round(indice_calidad_precio * 1000000, 2)
  ) %>%
  arrange(desc(indice_calidad_precio))

knitr::kable(top_10_arqueros %>% 
             select(player, club, puntaje_arquero, value, indice_cp_formatted),
             caption = "Índice de Calidad-Precio de los Top 10 Arqueros",
             col.names = c("Jugador", "Club", "Puntaje", "Valor", "Índice C-P (×10⁶)"))
Índice de Calidad-Precio de los Top 10 Arqueros
Jugador Club Puntaje Valor Índice C-P (×10⁶)
Kasper Schmeichel OGC Nice 400 3400000 117.65
Keylor Navas Nott’m Forest 420 9000000 46.67
Stefan Ortega Manchester City 401 14500000 27.66
Anthony Lopes OL 399 16000000 24.94
Gerónimo Rulli Ajax 405 20500000 19.76
Alejandro Remiro Gargallo Real Sociedad 407 23500000 17.32
Lucas Mantela Brazil 409 27000000 15.15
Koen Casteels VfL Wolfsburg 415 28000000 14.82
Yassine Bounou Sevilla FC 413 28500000 14.49
Gianluigi Donnarumma Paris SG 426 78000000 5.46
mejores_cp <- head(top_10_arqueros, 3)
cat("Los 3 arqueros con mejor relación calidad-precio son:\n")
## Los 3 arqueros con mejor relación calidad-precio son:
for(i in 1:3) {
  cat(i, ".", mejores_cp$player[i], "- Índice:", mejores_cp$indice_cp_formatted[i], "\n")
}
## 1 . Kasper Schmeichel - Índice: 117.65 
## 2 . Keylor Navas - Índice: 46.67 
## 3 . Stefan Ortega - Índice: 27.66

Comentario: Los arqueros con mejor relación calidad-precio son aquellos que ofrecen un alto puntaje de habilidades por un valor de mercado relativamente menor. Esto puede indicar oportunidades de contratación inteligente para los clubes.

3 Comparación Salarial entre Clubes Top

clubes_objetivo <- c("Real Madrid", "Paris Saint-Germain", "Chelsea", "FC Barcelona")

jugadores_clubes <- fifa_data %>%
  filter(club %in% clubes_objetivo) %>%
  select(player, club, value)

jugadores_por_club <- jugadores_clubes %>%
  group_by(club) %>%
  summarise(
    n_jugadores = n(),
    valor_promedio = mean(value, na.rm = TRUE),
    valor_mediano = median(value, na.rm = TRUE),
    .groups = 'drop'
  )

knitr::kable(jugadores_por_club,
             caption = "Resumen de jugadores por club",
             col.names = c("Club", "N° Jugadores", "Valor Promedio", "Valor Mediano"))
Resumen de jugadores por club
Club N° Jugadores Valor Promedio Valor Mediano
Chelsea 9 23728889 2.7e+07
FC Barcelona 10 18634500 1.0e+07
Real Madrid 7 29486429 3.0e+07
ggplot(jugadores_clubes, aes(x = club, y = value, fill = club)) +
  geom_boxplot(alpha = 0.7, outlier.color = "red", outlier.size = 2) +
  labs(
    title = "Comparación de Valores de Mercado por Club",
    subtitle = "Distribución de valores de jugadores en clubes top",
    x = "Club",
    y = "Valor de Mercado"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    axis.text.x = element_text(angle = 45, hjust = 1),
    legend.position = "none"
  ) +
  scale_y_continuous(labels = scales::comma) +
  scale_fill_brewer(type = "qual", palette = 2)

estadisticas_detalladas <- jugadores_clubes %>%
  group_by(club) %>%
  summarise(
    n = n(),
    minimo = min(value, na.rm = TRUE),
    q1 = quantile(value, 0.25, na.rm = TRUE),
    mediana = median(value, na.rm = TRUE),
    q3 = quantile(value, 0.75, na.rm = TRUE),
    maximo = max(value, na.rm = TRUE),
    promedio = mean(value, na.rm = TRUE),
    desv_std = sd(value, na.rm = TRUE),
    .groups = 'drop'
  )

knitr::kable(estadisticas_detalladas,
             caption = "Estadísticas detalladas de valores por club",
             digits = 0)
Estadísticas detalladas de valores por club
club n minimo q1 mediana q3 maximo promedio desv_std
Chelsea 9 60000 7500000 2.7e+07 42000000 46500000 23728889 17922444
FC Barcelona 10 27500 350625 1.0e+07 34250000 58500000 18634500 21443730
Real Madrid 7 32500 2186250 3.0e+07 47250000 77500000 29486429 31264597

Análisis de resultados:

Basándose en el diagrama de caja y bigotes se pueden observar las siguientes características:

  1. Mediana: Indica el valor típico de los jugadores en cada club
  2. Dispersión: Muestra la variabilidad en los valores dentro de cada club
  3. Valores atípicos: Jugadores con valores significativamente diferentes al resto
  4. Comparación: Permite identificar qué club tiene los valores más altos/bajos en general

4 Punto 3: Análisis de Jugadores Estrella

4.1 3.1 Selección de jugadores con valor superior a 70,000,000

# Verificar estructura del dataset
cat("=== INFORMACIÓN DEL DATASET ===\n")
## === INFORMACIÓN DEL DATASET ===
cat("Total de jugadores en el dataset:", nrow(fifa_data), "\n")
## Total de jugadores en el dataset: 5680
cat("Columnas disponibles:", ncol(fifa_data), "\n\n")
## Columnas disponibles: 41
# Verificar distribución de valores
cat("=== DISTRIBUCIÓN DE VALORES ===\n")
## === DISTRIBUCIÓN DE VALORES ===
percentiles <- quantile(fifa_data$value, c(0.90, 0.95, 0.99), na.rm = TRUE)
print(percentiles)
##      90%      95%      99% 
##  4500000 10500000 30605000
# Filtrar jugadores con valor superior a 70,000,000
jugadores_elite <- fifa_data %>%
  filter(value > 70000000)

cat("\nNúmero de jugadores con valor superior a 70,000,000:", nrow(jugadores_elite), "\n")
## 
## Número de jugadores con valor superior a 70,000,000: 15
# Si hay pocos jugadores, mostrar umbral alternativo
if(nrow(jugadores_elite) < 10) {
  umbral_alternativo <- quantile(fifa_data$value, 0.95, na.rm = TRUE)
  cat("Umbral alternativo (percentil 95):", scales::comma(umbral_alternativo), "\n")
  
  jugadores_elite <- fifa_data %>%
    filter(value > umbral_alternativo)
  
  cat("Jugadores con valor en percentil 95+:", nrow(jugadores_elite), "\n")
}

# Mostrar top 10 jugadores por valor
tabla_elite <- jugadores_elite %>% 
  arrange(desc(value)) %>%
  head(10) %>%
  select(player, club, country, value)

kable(tabla_elite, 
      caption = "Top 10 jugadores por valor de mercado",
      col.names = c("Jugador", "Club", "País", "Valor"),
      format.args = list(big.mark = ","))
Top 10 jugadores por valor de mercado
Jugador Club País Valor
Kylian Mbappé Paris SG France 153,500,000
Erling Haaland Manchester City Norway 123,000,000
Kevin De Bruyne Manchester City Belgium 107,500,000
Sadio Mané FC Bayern München Senegal 101,000,000
Mohamed Salah Liverpool Egypt 99,500,000
Neymar Jr Paris SG Brazil 99,500,000
Joshua Kimmich FC Bayern München Germany 97,000,000
Virgil van Dijk Liverpool Netherlands 84,500,000
Lautaro Martínez Inter Argentina 79,500,000
Gianluigi Donnarumma Paris SG Italy 78,000,000

4.2 3.2 Exclusión de arqueros y preparación de habilidades

# Variables específicas de arqueros a excluir
goalkeeper_vars <- c("gk_positioning", "gk_diving", "gk_handling", "gk_kicking", "gk_reflexes")

# Verificar qué variables de arquero existen en el dataset
gk_vars_existentes <- goalkeeper_vars[goalkeeper_vars %in% names(jugadores_elite)]
cat("Variables de arquero encontradas:", paste(gk_vars_existentes, collapse = ", "), "\n")
## Variables de arquero encontradas: gk_positioning, gk_diving, gk_handling, gk_kicking, gk_reflexes
# Filtrar jugadores que NO sean arqueros
if(length(gk_vars_existentes) > 0) {
  jugadores_estrella <- jugadores_elite %>%
    filter(
      is.na(gk_positioning) | gk_positioning == 0 | gk_positioning < 50
    )
} else {
  jugadores_estrella <- jugadores_elite
}

cat("Número de jugadores estrella (sin arqueros):", nrow(jugadores_estrella), "\n")
## Número de jugadores estrella (sin arqueros): 14
# Identificar columnas de habilidades
todas_columnas <- names(jugadores_estrella)
columnas_numericas <- todas_columnas[sapply(jugadores_estrella, is.numeric)]

# Excluir columnas que no son habilidades
columnas_excluir <- c("value", "age", "overall", "potential", "height_cm", "weight_kg",
                      "club_jersey_number", "nation_jersey_number", "weak_foot", 
                      "skill_moves", "international_reputation", "release_clause",
                      gk_vars_existentes)

skill_columns <- columnas_numericas[!columnas_numericas %in% columnas_excluir]

cat("Total de habilidades identificadas:", length(skill_columns), "\n")
## Total de habilidades identificadas: 30
cat("Primeras 15 habilidades:", paste(head(skill_columns, 15), collapse = ", "), "\n")
## Primeras 15 habilidades: height, weight, ball_control, dribbling, slide_tackle, stand_tackle, aggression, reactions, att_position, interceptions, vision, composure, crossing, short_pass, long_pass

4.3 3.3 Cálculo de estadísticas por jugador

# Crear matriz de habilidades
habilidades_matriz <- jugadores_estrella[, skill_columns, drop = FALSE]

# Convertir a numérico y manejar valores NA
habilidades_matriz[] <- lapply(habilidades_matriz, function(x) {
  as.numeric(as.character(x))
})

# Calcular estadísticas por jugador
estadisticas_jugadores <- jugadores_estrella %>%
  select(player, club, country, value) %>%
  mutate(
    media_habilidades = apply(habilidades_matriz, 1, function(x) mean(x, na.rm = TRUE)),
    desviacion_habilidades = apply(habilidades_matriz, 1, function(x) sd(x, na.rm = TRUE)),
    na_count = apply(habilidades_matriz, 1, function(x) sum(is.na(x)))
  ) %>%
  # Filtrar jugadores con suficientes datos
  filter(!is.na(media_habilidades) & na_count < (length(skill_columns) * 0.5))

cat("Jugadores con estadísticas válidas:", nrow(estadisticas_jugadores), "\n")
## Jugadores con estadísticas válidas: 14
# Mostrar estadísticas generales
cat("\n=== ESTADÍSTICAS GENERALES ===\n")
## 
## === ESTADÍSTICAS GENERALES ===
cat("Media de habilidades promedio:", round(mean(estadisticas_jugadores$media_habilidades), 2), "\n")
## Media de habilidades promedio: 80.98
cat("Desviación estándar promedio:", round(mean(estadisticas_jugadores$desviacion_habilidades), 2), "\n")
## Desviación estándar promedio: 23.07
# Top 10 por media
tabla_top10_media <- estadisticas_jugadores %>%
  arrange(desc(media_habilidades)) %>%
  head(10) %>%
  select(player, club, value, media_habilidades, desviacion_habilidades)

kable(tabla_top10_media, 
      caption = "Top 10 jugadores estrella por media de habilidades",
      col.names = c("Jugador", "Club", "Valor", "Media", "Desv. Std"),
      digits = 2)
Top 10 jugadores estrella por media de habilidades
Jugador Club Valor Media Desv. Std
Kevin De Bruyne Manchester City 107500000 84.03 21.62
Bruno Fernandes Manchester Utd 72500000 83.57 20.01
Joshua Kimmich FC Bayern München 97000000 82.67 20.56
Federico Valverde Real Madrid 77500000 82.20 20.70
João Cancelo FC Bayern München 72000000 81.87 20.86
Kylian Mbappé Paris SG 153500000 81.87 25.49
Mohamed Salah Liverpool 99500000 81.63 22.49
Sadio Mané FC Bayern München 101000000 80.40 23.16
Erling Haaland Manchester City 123000000 80.33 27.35
Neymar Jr Paris SG 99500000 79.97 25.59

4.4 3.4 Identificación de jugadores destacados

# Jugador con el promedio más alto
jugador_promedio_alto <- estadisticas_jugadores %>%
  filter(media_habilidades == max(media_habilidades)) %>%
  slice(1)

# Jugador más consistente (menor desviación estándar)
jugador_mas_consistente <- estadisticas_jugadores %>%
  filter(desviacion_habilidades == min(desviacion_habilidades, na.rm = TRUE)) %>%
  slice(1)

cat("=== JUGADOR CON PROMEDIO MÁS ALTO ===\n")
## === JUGADOR CON PROMEDIO MÁS ALTO ===
cat("Nombre:", jugador_promedio_alto$player, "\n")
## Nombre: Kevin De Bruyne
cat("Club:", jugador_promedio_alto$club, "\n")
## Club: Manchester City
cat("País:", jugador_promedio_alto$country, "\n")
## País: Belgium
cat("Valor de mercado: $", scales::comma(jugador_promedio_alto$value), "\n")
## Valor de mercado: $ 107,500,000
cat("Media de habilidades:", round(jugador_promedio_alto$media_habilidades, 2), "\n")
## Media de habilidades: 84.03
cat("Desviación estándar:", round(jugador_promedio_alto$desviacion_habilidades, 2), "\n\n")
## Desviación estándar: 21.62
cat("=== JUGADOR MÁS CONSISTENTE ===\n")
## === JUGADOR MÁS CONSISTENTE ===
cat("Nombre:", jugador_mas_consistente$player, "\n")
## Nombre: Bruno Fernandes
cat("Club:", jugador_mas_consistente$club, "\n")
## Club: Manchester Utd
cat("País:", jugador_mas_consistente$country, "\n")
## País: Portugal
cat("Valor de mercado: $", scales::comma(jugador_mas_consistente$value), "\n")
## Valor de mercado: $ 72,500,000
cat("Media de habilidades:", round(jugador_mas_consistente$media_habilidades, 2), "\n")
## Media de habilidades: 83.57
cat("Desviación estándar:", round(jugador_mas_consistente$desviacion_habilidades, 2), "\n")
## Desviación estándar: 20.01

4.5 3.5 Tabla comparativa y análisis

# Top 5 en cada categoría
top_media <- estadisticas_jugadores %>% 
  arrange(desc(media_habilidades)) %>% 
  head(5) %>%
  mutate(categoria = "Top Media")

top_consistencia <- estadisticas_jugadores %>% 
  arrange(desviacion_habilidades) %>% 
  head(5) %>%
  mutate(categoria = "Top Consistencia")

# Combinar y crear tabla
tabla_comparativa <- bind_rows(top_media, top_consistencia) %>%
  distinct(player, .keep_all = TRUE) %>%
  arrange(desc(media_habilidades))

kable(tabla_comparativa %>%
        select(player, club, value, media_habilidades, desviacion_habilidades, categoria),
      caption = "Tabla comparativa de jugadores estrella destacados",
      col.names = c("Jugador", "Club", "Valor (€)", "Media", "Desv. Std", "Categoría"),
      digits = 2)
Tabla comparativa de jugadores estrella destacados
Jugador Club Valor (€) Media Desv. Std Categoría
Kevin De Bruyne Manchester City 107500000 84.03 21.62 Top Media
Bruno Fernandes Manchester Utd 72500000 83.57 20.01 Top Media
Joshua Kimmich FC Bayern München 97000000 82.67 20.56 Top Media
Federico Valverde Real Madrid 77500000 82.20 20.70 Top Media
João Cancelo FC Bayern München 72000000 81.87 20.86 Top Media
Marco Verratti Paris SG 77500000 78.90 21.32 Top Consistencia

4.6 3.6 Visualización y análisis gráfico

# Gráfico de dispersión: Media vs Desviación estándar
ggplot(estadisticas_jugadores, aes(x = desviacion_habilidades, y = media_habilidades)) +
  geom_point(aes(size = value, color = value), alpha = 0.6) +
  geom_point(data = jugador_promedio_alto, 
             aes(x = desviacion_habilidades, y = media_habilidades),
             color = "red", size = 6, alpha = 0.8) +
  geom_point(data = jugador_mas_consistente, 
             aes(x = desviacion_habilidades, y = media_habilidades),
             color = "blue", size = 6, alpha = 0.8) +
  geom_text(data = jugador_promedio_alto, 
            aes(x = desviacion_habilidades, y = media_habilidades, label = player), 
            vjust = -1.2, hjust = 0.5, size = 3, color = "red", fontface = "bold") +
  geom_text(data = jugador_mas_consistente, 
            aes(x = desviacion_habilidades, y = media_habilidades, label = player), 
            vjust = 1.5, hjust = 0.5, size = 3, color = "blue", fontface = "bold") +
  labs(
    title = "Análisis de Jugadores Estrella: Media vs Consistencia",
    subtitle = "Tamaño del punto proporcional al valor de mercado",
    x = "Desviación Estándar (menor = más consistente)",
    y = "Media de Habilidades",
    size = "Valor (€)",
    color = "Valor (€)"
  ) +
  scale_size_continuous(labels = scales::comma, range = c(2, 8)) +
  scale_color_gradient(low = "lightblue", high = "darkblue", labels = scales::comma) +
  theme_minimal() +
  theme(
    plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
    plot.subtitle = element_text(size = 12, hjust = 0.5),
    legend.position = "right"
  )

4.7 3.7 Resumen estadístico y correlaciones

# Calcular correlaciones
correlacion_media_valor <- cor(estadisticas_jugadores$media_habilidades, 
                               estadisticas_jugadores$value, 
                               use = "complete.obs")

correlacion_desv_valor <- cor(estadisticas_jugadores$desviacion_habilidades, 
                              estadisticas_jugadores$value, 
                              use = "complete.obs")

correlacion_media_desv <- cor(estadisticas_jugadores$media_habilidades, 
                              estadisticas_jugadores$desviacion_habilidades, 
                              use = "complete.obs")

# Resumen estadístico general
resumen_general <- data.frame(
  Métrica = c("Total de jugadores estrella", "Media promedio de habilidades", 
              "Desviación estándar promedio", "Correlación Media-Valor",
              "Correlación Desviación-Valor", "Correlación Media-Desviación"),
  Valor = c(nrow(estadisticas_jugadores),
            round(mean(estadisticas_jugadores$media_habilidades), 2),
            round(mean(estadisticas_jugadores$desviacion_habilidades), 2),
            round(correlacion_media_valor, 3),
            round(correlacion_desv_valor, 3),
            round(correlacion_media_desv, 3))
)

kable(resumen_general,
      caption = "Resumen estadístico del análisis de jugadores estrella")
Resumen estadístico del análisis de jugadores estrella
Métrica Valor
Total de jugadores estrella 14.000
Media promedio de habilidades 80.980
Desviación estándar promedio 23.070
Correlación Media-Valor 0.182
Correlación Desviación-Valor 0.539
Correlación Media-Desviación -0.594

5 Conclusiones del Análisis

5.1 Jugadores Estrella - Interpretación de Resultados:

5.1.1 Jugador con mayor promedio de habilidades:

  • Representa la excelencia técnica general, destacando por tener las calificaciones más altas en promedio en todas las habilidades evaluadas.
  • Un promedio alto indica versatilidad y competencia en múltiples aspectos del juego.
  • Este perfil es ideal para sistemas tácticos que requieren jugadores completos.

5.1.2 Jugador más consistente:

  • La menor desviación estándar indica habilidades muy equilibradas, sin grandes fortalezas ni debilidades marcadas.
  • La consistencia es valorada en sistemas tácticos que requieren jugadores confiables en múltiples roles.
  • Representa estabilidad y predictibilidad en el rendimiento.

5.1.3 Relación valor-rendimiento:

  • El gráfico muestra cómo se relacionan la media de habilidades, la consistencia y el valor de mercado.
  • Los jugadores en la esquina superior izquierda (alta media, baja desviación) representan el perfil ideal: excelentes y consistentes.
  • La correlación entre variables revela patrones en la valoración del mercado.

5.1.4 Hallazgos clave:

  1. Diversidad de perfiles: Los jugadores estrella muestran una diversidad en perfiles: algunos son especialistas con altas habilidades en áreas específicas, otros son más equilibrados.

  2. Valor vs. habilidades: La correlación entre media de habilidades y valor de mercado indica que el mercado valora la calidad técnica general.

  3. Especialización vs. versatilidad: La relación entre media y desviación estándar puede indicar si los mejores jugadores tienden a ser especialistas o generalistas.

  4. Oportunidades de mercado: Los análisis de calidad-precio pueden revelar jugadores infravalorados con potencial de inversión.

5.2 Resumen General

Este análisis completo del dataset FIFA24 revela patrones importantes en tres dimensiones:

  1. Arqueros: La relación calidad-precio permite identificar oportunidades en el mercado de transferencias
  2. Clubes top: Las diferencias en distribución salarial reflejan diferentes estrategias de contratación
  3. Jugadores estrella: El balance entre especialización y versatilidad define diferentes tipos de valor en el mercado

Los hallazgos pueden ser útiles para la toma de decisiones en gestión deportiva, análisis de mercado de transferencias y evaluación de talento.