Este informe presenta un análisis exploratorio de datos (EDA) sobre la Fórmula 1, abarcando desde el estado de finalización de las carreras hasta la influencia de factores climáticos en el rendimiento de los vehículos.
Los datos han sido procesados utilizando el ecosistema tidyverse y visualizados con ggplot2.
Análisis del Estado de todos los corredores en todas las carreras
Code
resultados_y_conductores <-left_join(resultados, conductores, by="idConductor")tabla_estado <- resultados_y_conductores %>%count(estado, name="Frecuencia") %>%mutate(porcentaje =round(Frecuencia /sum(Frecuencia) *100, 2)) %>%arrange(desc(Frecuencia))ggplot(data = tabla_estado) +aes(x =reorder(estado, -porcentaje), y = porcentaje, fill = estado) +geom_bar(stat ="identity") +scale_y_continuous(breaks =seq(0, 100, by =10)) +labs(title ="Estado de finalización de carreras", x ="Estado", y ="Porcentaje (%)") +theme_minimal() +theme(axis.text.x =element_text(angle =45, hjust =1), legend.position ="none")
Figure 1: Distribución porcentual del estado de finalización de carreras.
Análisis del estado de finalización del equipo “Mercedes”
Code
resultados_conductores_constructores <-left_join(resultados_y_conductores, constructores, by="idConstructor")datos_mercedes <- resultados_conductores_constructores %>%filter(equipo =="Mercedes") estado_mercedes <- datos_mercedes %>%count(estado, name="Frecuencia") %>%mutate(porcentaje =round(Frecuencia /sum(Frecuencia) *100, 2))ggplot(data = estado_mercedes) +aes(x =reorder(estado, -porcentaje), y = porcentaje, fill = estado) +geom_bar(stat ="identity") +labs(title ="Estado de carreras: Escudería Mercedes", x ="Estado de carrera", y ="Porcentaje (%)") +theme_minimal() +theme(axis.text.x =element_text(angle =45, hjust =1), legend.position ="none")
Figure 2: Análisis de fiabilidad para el equipo Mercedes.
Code
# Carrera con tiempos de finalización excepcionalmente bajos#| label: fig-tiempos#| fig-cap: "Histograma de tiempos de finalización."resultados.f <- resultados %>%filter(!is.na(milisegundos)) %>%mutate(minutos = milisegundos /60000)media_tiempo <-mean(resultados.f$minutos)ggplot(resultados.f, aes(x = minutos)) +geom_histogram(bins =35, fill ="steelblue", color ="white") +labs(title ="Distribución de tiempos de finalización (F1 2018-2023)",x ="Tiempo (minutos)",y ="Frecuencia") +theme_minimal() +geom_vline(xintercept = media_tiempo, color ="red", linetype ="dashed") +annotate("text", x = media_tiempo +10, y =100, label =paste("Media:", round(media_tiempo, 1), "min"), color ="red")
Comparacion de podios entre Verstappen, Hamilton y Bottas