1 🔍 PAQUETES UTILIZADOS 🔎


library(tidyverse)
library(readxl)
library(summarytools)
library(ggplot2)
library(corrplot)
library(div)
library(htmltools)

1.1 🏅 BASE DE DATOS DE LA FIFA WORLD COP 2022


Fifa_1 <- read_excel("Fifa 1.xlsx")
Fifa_1

1.1.1 🧮 RESUMEN ESTADÍSTICO 🔄


dfSummary(Fifa_1)

1.2 🔍 MATRIZ DE CORRELACIÓN DE VARIABLES 📊


#Elegir variables numericas para mejor manejo 

variable_num <- Fifa_1 %>%
  select(`Goals Scored`, `Assists Provided`, `Dribbles per 90 Min`, 
         `Interceptions per 90 Min`, `Tackles per 90 Min`, `Total Duels Won per 90 Min`, `Appearances`)

# Calcular la matriz de correlación

cor_matrix <- cor(variable_num, use = "complete.obs")

# Mostrar la matriz de correlación

cor_matrix
##                            Goals Scored Assists Provided Dribbles per 90 Min
## Goals Scored                 1.00000000       0.77250940           0.3337021
## Assists Provided             0.77250940       1.00000000           0.4233079
## Dribbles per 90 Min          0.33370209       0.42330791           1.0000000
## Interceptions per 90 Min    -0.20930835      -0.11789226          -0.1716566
## Tackles per 90 Min          -0.07218927       0.03877877          -0.1163693
## Total Duels Won per 90 Min   0.08142639       0.26292785           0.1620224
## Appearances                  0.36788386       0.41670430           0.1323213
##                            Interceptions per 90 Min Tackles per 90 Min
## Goals Scored                             -0.2093083        -0.07218927
## Assists Provided                         -0.1178923         0.03877877
## Dribbles per 90 Min                      -0.1716566        -0.11636929
## Interceptions per 90 Min                  1.0000000         0.40918699
## Tackles per 90 Min                        0.4091870         1.00000000
## Total Duels Won per 90 Min                0.4900650         0.73902948
## Appearances                               0.1777929         0.30425995
##                            Total Duels Won per 90 Min Appearances
## Goals Scored                               0.08142639   0.3678839
## Assists Provided                           0.26292785   0.4167043
## Dribbles per 90 Min                        0.16202241   0.1323213
## Interceptions per 90 Min                   0.49006502   0.1777929
## Tackles per 90 Min                         0.73902948   0.3042600
## Total Duels Won per 90 Min                 1.00000000   0.4531469
## Appearances                                0.45314686   1.0000000
# Visualizar la matriz de correlación

corrplot(cor_matrix, method = "circle", type = "upper", 
         tl.col = "black", tl.srt = 45, # Títulos en los ejes
         addCoef.col = "black",        # Añadir coeficientes de correlación
         diag = FALSE)   # No mostrar los coeficientes en la diagonal

Nota: El coeficiente de correlación de Pearson (r) es un valor que va de -1 a 1, donde: valores proximos a 1 indican una correlación positiva (cuando una variable aumenta, la otra también lo hace de manera proporcional). valores proximos a -1 indican una Correlación negativa (cuando una variable aumenta, la otra disminuye proporcionalmente) y cuando es cero 0 indica que no hay correlación.


1.2.1 🔄 ANÁLISIS DE REGATES POR POSICIÓN 🔗


# Promedio de regates por posicion 

ggplot(Fifa_1, aes(x = Position, y = `Dribbles per 90 Min`, fill = Position)) +
  geom_boxplot(outlier.colour = "red", outlier.size = 3, outlier.shape = 16) +  # Añadir color y tamaño a los outliers
  labs(title = "Distribución de Regates por Posición", x = "Posición", y = "Regates por 90 Min") +
  scale_fill_brewer(palette = "Set3") +  # Usar una paleta de colores agradable
  theme_minimal() +  # Tema limpio
  theme(axis.text.x = element_text(angle = 45, hjust = 1), # Rotar etiquetas del eje X
        plot.title = element_text(hjust = 0.5))  # Centrar el título

Resumen: Em el gráfico se puede identificar diferencias significativas entre posiciones, las posiciones ofensivas o de extremo suelen mostrar una mediana y valores superiores en regates, lo que refleja una mayor implicación en la generación de desequilibrios y en el juego individual, mientras que las posiciones más defensivas registran cifras menores, acorde a sus funciones en el campo. La variabilidad dentro de cada grupo también es evidente, ya que algunas posiciones presentan un rango intercuartílico amplio, lo que sugiere diferencias en la consistencia del desempeño individual.


1.2.2 🏆 RELACIÓN ENTRE CLUB Y GOLES ANOTADOS 🎯


#Resumen de goles por club
fifa_club_goals <-Fifa_1 %>% 
  group_by(Club) %>%
  summarise(Goles = sum(`Goals Scored`, na.rm = TRUE))

 # Borde a las barras geom_bar
# Agregar etiquetas de valores geom_text
# Tema minimalista y fuente más grande themes_minimal
# Rotación de las etiquetas theme(argumento)
#Líneas de cuadrícula panel.grip.major
ggplot(fifa_club_goals, aes(x = reorder(Club, Goles), y = Goles, fill = Club)) +
  geom_bar(stat = "identity", show.legend = FALSE, color = "black", size = 0.5) +  
  coord_flip() +
  geom_text(aes(label = Goles), hjust = -0.2, size = 4, color = "black") +  
  labs(title = "Relación entre Club y Goles Anotados", 
       x = "Club", y = "Goles Anotados") +
  theme_minimal(base_size = 14) +  
  theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 12),  
        axis.text.y = element_text(size = 12),  
        plot.title = element_text(hjust = 0.5, size = 16, face = "bold"),  
        panel.grid.major.y = element_line(color = "gray80", size = 0.5))  

Resumen: Este gráfico agrupa a los jugadores por club y muestra la cantidad de goles anotados por cada equipo.


1.2.3 🏆 COMPARACIÓN ENTRE GOLES MARCADOS Y ASISTENCIAS POR POSICIÓN 🥅


df_position <- Fifa_1 %>% 
  group_by(Position) %>% 
  summarise(Goles = sum(`Goals Scored`), Asistencias = sum(`Assists Provided`)) %>% 
  pivot_longer(cols = c(Goles, Asistencias), names_to = "Estadística", values_to = "Cantidad")

ggplot(df_position, aes(x = reorder(Position, Cantidad), y = Cantidad, fill = Estadística)) +
  geom_bar(stat = "identity", position = "dodge", width = 0.7) +  # Ajustar el ancho de las barras
  coord_flip() +
  scale_fill_manual(values = c("skyblue", "salmon")) +  # Colores personalizados
  geom_text(aes(label = scales::comma(Cantidad)), position = position_dodge(0.7), vjust = -0.3, size = 4) +  # Etiquetas en las barras
  labs(title = "Comparación de Goles y Asistencias por Posición", 
       x = "Posición", 
       y = "Cantidad",
       subtitle = "Análisis de goles y asistencias por cada posición en el equipo",
       caption = "Fuente: Copa Mundial FIFA 2022 - Selección Argentina") +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 16, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5, size = 12, face = "italic"),
    axis.title.x = element_text(size = 12),
    axis.title.y = element_text(size = 12),
    axis.text.x = element_text(size = 10, angle = 45, hjust = 1),  # Lectura de las etiquetas del eje x
    axis.text.y = element_text(size = 10),
    legend.title = element_text(size = 12),
    legend.text = element_text(size = 10)
  )

Resumen: El gráfico revela que las posiciones orientadas al ataque registran mayores totales de goles y asistencias, lo que respalda la idea de que las funciones ofensivas se complementan: los jugadores que tienen más oportunidades para anotar también suelen estar involucrados en la creación de jugadas y, por tanto, en las asistencias.


1.2.4 💪RELACIÓN DE DUELOS GANADOS POR ENTRADAS EN JUEGO⚔️


ggplot(Fifa_1, aes(x = `Tackles per 90 Min`, y = `Total Duels Won per 90 Min`, color = Position)) +
  geom_point(aes(shape = Position), size = 3, alpha = 0.7) +  
  # Cambiar tamaño y añadir transparencia geom_point
  geom_smooth(method = "lm", se = TRUE, color = "orange", linetype = "dashed") +   
  # Línea de ajuste más clara geom_smooth
  scale_color_manual(values = c("red", "blue", "green", "purple", "yellow")) +  
  # Personalización de colores scale_color_manual
  labs(title = "Relación entre Entradas y Duelos Ganados", 
       subtitle = "Análisis de las entradas por 90 min y los duelos ganados por 90 min",
       x = "Entradas por 90 Min", 
       y = "Duelos Ganados por 90 Min",
       caption = "Fuente: Datos de la Copa Mundial FIFA 2022") + 
  # Añadir subtítulo y caption 
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 16, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5, size = 12, face = "italic"),
    plot.caption = element_text(hjust = 1, size = 10, color = "gray"),
    axis.title.x = element_text(size = 12),
    axis.title.y = element_text(size = 12),
    axis.text.x = element_text(size = 10, angle = 45, hjust = 1),
    axis.text.y = element_text(size = 10),
    legend.title = element_text(size = 12),
    legend.text = element_text(size = 10)
  )
## `geom_smooth()` using formula = 'y ~ x'

Resumen: El gráfico evidencia una correlación positiva entre las entradas y los duelos ganados, lo cual es coherente con la teoría del fútbol: los jugadores que están más activos en la recuperación del balón tienden a ganar más duelos individuales. La diferenciación por posición ayuda a identificar matices en esta relación según el rol del jugador en el campo.


1.2.5 🏆 RELACIÓN ENTRE POSICIÓN Y RECUPERACIÓN DE BALÓN EN LOS PARTIDOS 🥅


ggplot(Fifa_1, aes(x = `Position`, y = `Tackles per 90 Min`, fill = Position)) +
  geom_boxplot(outlier.colour = "red", outlier.size = 3, outlier.shape = 16) +  # Añadir color y tamaño a los outliers
  labs(title = "Distribución de recuperación de balón por Posición", x = "Posición", y = "Tackles por 90 Min") +
  scale_fill_brewer(palette = "Set3") +  # paleta de colores 
  theme_minimal() +  # Tema 
  theme(axis.text.x = element_text(angle = 45, hjust = 1), # Rotar etiquetas del eje X
        plot.title = element_text(hjust = 0.5))  # Centrar el título

Resumen: En el gráfico se observa que existen diferencias notables en la distribución de tackles por 90 minutos entre las distintas posiciones, lo que refleja las funciones específicas que desempeñan los jugadores en el campo, las posiciones defensivas suelen mostrar una mediana más alta en tackles, lo que indica una mayor implicación en la recuperación del balón, mientras que otras posiciones, como mediocampistas o delanteros, presentan valores más bajos, acorde con sus roles ofensivos. Además, se aprecia variabilidad dentro de cada grupo: algunas posiciones muestran un rango intercuartílico reducido, lo que sugiere un desempeño defensivo consistente, mientras que otras exhiben mayor dispersión.