Skontrolujeme načítanie údajov z databázy pit stopov Formula 1.
pit_stops <- read.csv(
"C:/Users/vlady/Documents/pit_stops.csv",
header = TRUE,
sep = ",",
dec = ".",
stringsAsFactors = FALSE
)
head(pit_stops)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
old_names <- names(pit_stops)
pit_stops <- pit_stops %>%
rename_with(~ abbreviate(.x, strict = FALSE))
names(pit_stops) <- make.unique(names(pit_stops))
comparison <- data.frame(
Original_Name = old_names,
Shortened_Name = names(pit_stops)
)
comparison
library(mice)
##
## Attaching package: 'mice'
## The following object is masked from 'package:stats':
##
## filter
## The following objects are masked from 'package:base':
##
## cbind, rbind
library(VIM)
## Loading required package: colorspace
## Loading required package: grid
## Registered S3 method overwritten by 'car':
## method from
## na.action.merMod lme4
## VIM is ready to use.
## Suggestions and bug-reports can be submitted at: https://github.com/statistikat/VIM/issues
##
## Attaching package: 'VIM'
## The following object is masked from 'package:datasets':
##
## sleep
colSums(is.na(pit_stops))
## rcId drvI stop lap time drtn mlls
## 0 0 0 0 0 0 0
V dátach sa nenachádzajú chýbajúce hodnoty, preto nebolo potrebné vykonať imputáciu.
library(ggplot2)
ggplot(pit_stops, aes(x = lap, y = mlls)) +
geom_point(alpha = 0.5) +
theme_minimal() +
labs(
title = "Dĺžka pit stopu podľa kola",
x = "Lap",
y = "Milliseconds"
)
ggplot(pit_stops, aes(x = factor(stop), y = mlls)) +
geom_boxplot(fill = "lightblue", color = "darkblue") +
theme_minimal() +
labs(
title = "Dĺžka pit stopu podľa zastávky",
x = "Stop",
y = "Milliseconds"
)
library(dplyr)
library(knitr)
pit_stats <- pit_stops %>%
group_by(stop) %>%
summarise(
n = n(),
mean = mean(mlls, na.rm = TRUE),
sd = sd(mlls, na.rm = TRUE),
min = min(mlls, na.rm = TRUE),
median = median(mlls, na.rm = TRUE),
max = max(mlls, na.rm = TRUE),
.groups = "drop"
)
kable(pit_stats, digits = 2)
| stop | n | mean | sd | min | median | max |
|---|---|---|---|---|---|---|
| 1 | 5573 | 74778.35 | 300436.67 | 14160 | 23744.0 | 3069017 |
| 2 | 3716 | 81413.58 | 270539.34 | 12897 | 23467.5 | 2048175 |
| 3 | 1496 | 96718.27 | 325293.53 | 12959 | 23350.0 | 2485913 |
| 4 | 427 | 106832.92 | 374243.56 | 13925 | 23132.0 | 2434653 |
| 5 | 120 | 391127.17 | 757595.35 | 14493 | 25681.5 | 2461612 |
| 6 | 29 | 426872.79 | 822788.18 | 13173 | 31494.0 | 2483382 |
| 7 | 3 | 29079.33 | 5910.42 | 22379 | 31306.0 | 33553 |
| 15 | 1 | 24239.00 | NA | 24239 | 24239.0 | 24239 |
| 42 | 1 | 24132.00 | NA | 24132 | 24132.0 | 24132 |
| 48 | 1 | 28211.00 | NA | 28211 | 28211.0 | 28211 |
| 51 | 1 | 24232.00 | NA | 24232 | 24232.0 | 24232 |
| 52 | 1 | 23813.00 | NA | 23813 | 23813.0 | 23813 |
| 57 | 1 | 24384.00 | NA | 24384 | 24384.0 | 24384 |
| 70 | 1 | 24367.00 | NA | 24367 | 24367.0 | 24367 |
t.test(
pit_stops$mlls[pit_stops$stop == 1],
pit_stops$mlls[pit_stops$stop == 2]
)
##
## Welch Two Sample t-test
##
## data: pit_stops$mlls[pit_stops$stop == 1] and pit_stops$mlls[pit_stops$stop == 2]
## t = -1.1075, df = 8503.2, p-value = 0.2681
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -18379.140 5108.681
## sample estimates:
## mean of x mean of y
## 74778.35 81413.58
Interpretácia:
p-hodnota je väčšia ako 0.05, preto nevieme zamietnuť nulovú
hypotézu.
To znamená, že medzi prvým a druhým pit stopom nie je štatisticky
významný rozdiel.
anova.result <- aov(mlls ~ factor(stop), data = pit_stops)
summary(anova.result)
## Df Sum Sq Mean Sq F value Pr(>F)
## factor(stop) 13 1.571e+13 1.208e+12 12.71 <2e-16 ***
## Residuals 11357 1.080e+15 9.509e+10
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Interpretácia:
p-hodnota je menšia ako 0.05, preto zamietame nulovú hypotézu.
Existuje štatisticky významný rozdiel v dĺžke pit stopov medzi rôznymi
zastávkami.
model <- lm(mlls ~ lap + stop, data = pit_stops)
summary(model)
##
## Call:
## lm(formula = mlls ~ lap + stop, data = pit_stops)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1125645 -74757 -59495 -42449 2948258
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 107753.5 6026.5 17.880 < 2e-16 ***
## lap -1939.7 207.9 -9.331 < 2e-16 ***
## stop 14944.8 2026.5 7.375 1.76e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 309000 on 11368 degrees of freedom
## Multiple R-squared: 0.009317, Adjusted R-squared: 0.009143
## F-statistic: 53.46 on 2 and 11368 DF, p-value: < 2.2e-16
Interpretácia:
Premenná lap má negatívny vplyv na dĺžku pit stopu, čo znamená, že čím neskôr v pretekoch jazdec zastaví, tým je pit stop kratší.
Premenná stop má pozitívny vplyv, teda vyššie poradie zastávky súvisí s dlhším pit stopom.
Model je štatisticky významný, avšak hodnota R² je veľmi nízka, čo znamená, že model vysvetľuje len malú časť variability dát.
V práci sme analyzovali údaje o pit stopoch vo Formula 1. Pomocou grafov a štatistík sme opísali základné vlastnosti dát. Následne sme testovali hypotézy pomocou t-testu a ANOVA a nakoniec sme použili lineárnu regresiu na vysvetlenie dĺžky pit stopu.
Výsledky ukázali, že medzi prvým a druhým pit stopom nie je významný rozdiel, avšak medzi viacerými zastávkami rozdiel existuje. Regresný model naznačil, že niektoré premenné majú vplyv na dĺžku pit stopu, no tento vplyv je relatívne slabý.
Táto práca bola vypracovaná s pomocou umelej inteligencie.