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 ...
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"))
| 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⁶)"))
| 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.
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"))
| 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)
| 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:
# 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 = ","))
| 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 |
# 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
# 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)
| 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 |
# 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
# 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)
| 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 |
# 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"
)
# 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")
| 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 |
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.
Valor vs. habilidades: La correlación entre media de habilidades y valor de mercado indica que el mercado valora la calidad técnica general.
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.
Oportunidades de mercado: Los análisis de calidad-precio pueden revelar jugadores infravalorados con potencial de inversión.
Este análisis completo del dataset FIFA24 revela patrones importantes en tres dimensiones:
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.