# Define the data
events <- c("Tallinna seeriavõistlus", "Tallinna seeriavõistlus", "Eesti MV heidete mitmevõistluses", "Tallinna seeriavõistlus", "Tõrva spordiklubi „Viraaž“ heited", "Tallinna seeriavõistlus", "Pokardi heiteseriaal III", "MM", "Viljandi heitjate seeriavõistlus", "Eesti MV heidete mitmevõistluses", "Tallinna seeriavõistlus", "Viljandi heitjate seeriavõistlus", "Viljandi heitjate seeriavõistlus", "Pokardi heiteseriaal III", "Viljandi heitjate seeriavõistlus", "Tõrva spordiklubi „Viraaž“ vasaraheite võistlus", "Pokardi heiteseriaal IV", "Eesti MV heidete mitmevõistluses", "Tõrva spordiklubi „Viraaž“ vasaraheite võistlus")
locations <- c("TTÜ staadion", "TTÜ staadion", "Niidupargi st", "TTÜ staadion", "Pokardi", "TTÜ staadion", "Pokardi", "Tampere", "Paalalinna st", "Niidupargi st", "TTÜ staadion", "Paalalinna st", "Paalalinna st", "Pokardi", "Paalalinna st", "Pokardi", "Pokardi", "Niidupargi st", "Pokardi")
dates <- c("20.06.2021", "18.07.2021", "28.08.2021", "19.09.2021", "30.04.2022", "29.05.2022", "15.06.2022", "06.07.2022", "18.07.2022", "27.08.2022", "18.06.2023", "28.06.2023", "19.07.2023", "26.07.2023", "16.08.2023", "19.08.2023", "23.08.2023", "02.09.2023", "04.05.2024")
subjects <- c("Vasaraheide", "Kuulitõuge", "Kettaheide", "Odavise", "Raskusheide", "Punktid alates 2023")
results <- matrix(
c(38.83, 39.78, 38.02, 40.74, 41.68, 41.24, 40.40, 39.37, 40.27, 41.71, 39.84, 39.13, 38.02, 41.77, 38.82, 39.84, 40.97, 40.15, 42.65,
8.79, 9.36, 9.71, 9.38, 9.65, 9.76, 9.89, 9.71, 9.61, 9.91, 9.34, 9.76, 9.22, 9.58, 9.47, 9.82, 9.32, 9.40, 9.75,
29.92, 31.91, 32.05, 31.00, 32.30, 31.46, 32.44, 29.07, 33.05, 33.20, 31.91, 33.08, 32.86, 32.76, 32.22, 33.76, 32.76, 32.94, 32.55,
27.84, 27.70, 28.78, 30.08, 31.33, 28.55, 30.65, 30.70, 28.59, 30.10, 25.12, 28.61, 28.03, 29.18, 28.15, 30.62, 29.24, 27.98, 29.56,
11.99, 11.75, 12.56, 12.53, 12.66, 11.90, 11.98, 11.70, 12.00, 12.52, 11.12, 10.98, 11.61, 11.92, 12.58, 12.40, 12.21, 13.00, 13.15,
2761, 2844, 2910, 2943, 3044, 2921, 2984, 2867, 2931, 3047, 2752, 2861, 2819, 2960, 2901, 3018, 2944, 2957, 3065),
nrow = 6, byrow = TRUE
)
# Create a data frame
data <- data.frame(Subject = rep(subjects, each = length(events)),
Event = rep(events, times = length(subjects)),
Location = rep(locations, times = length(subjects)),
Date = rep(dates, times = length(subjects)),
Result = as.vector(t(results)))
# Write the data frame to a CSV file
write.csv(data, "athletics_results.csv", row.names = FALSE, quote = FALSE)
You can also embed plots, for example:
library(ggplot2)
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
library(zoo)
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
# Assuming 'data' is your data frame with the athletics results
# Convert the 'Date' column to a Date object
data$Date <- as.Date(data$Date, format = "%d.%m.%Y")
# Sort the data frame by the 'Date' column
data <- arrange(data, Date)
# Calculate the rolling mean for each subject
data <- data %>%
group_by(Subject) %>%
mutate(Rolling_Mean = rollmean(Result, 3, fill = NA, align = 'right')) %>%
ungroup()
data
## # A tibble: 114 × 6
## Subject Event Location Date Result Rolling_Mean
## <chr> <chr> <chr> <date> <dbl> <dbl>
## 1 Vasaraheide Tallinna seeriav… TTÜ sta… 2021-06-20 3.88e1 NA
## 2 Kuulitõuge Tallinna seeriav… TTÜ sta… 2021-06-20 8.79e0 NA
## 3 Kettaheide Tallinna seeriav… TTÜ sta… 2021-06-20 2.99e1 NA
## 4 Odavise Tallinna seeriav… TTÜ sta… 2021-06-20 2.78e1 NA
## 5 Raskusheide Tallinna seeriav… TTÜ sta… 2021-06-20 1.20e1 NA
## 6 Punktid alates 2023 Tallinna seeriav… TTÜ sta… 2021-06-20 2.76e3 NA
## 7 Vasaraheide Tallinna seeriav… TTÜ sta… 2021-07-18 3.98e1 NA
## 8 Kuulitõuge Tallinna seeriav… TTÜ sta… 2021-07-18 9.36e0 NA
## 9 Kettaheide Tallinna seeriav… TTÜ sta… 2021-07-18 3.19e1 NA
## 10 Odavise Tallinna seeriav… TTÜ sta… 2021-07-18 2.77e1 NA
## # ℹ 104 more rows
# Create a function to plot each subject with rolling mean
subject_data <- filter(data, Subject == "Vasaraheide")
ggplot(subject_data, aes(x = Date, y=Result)) +
geom_line(aes(y = Rolling_Mean), color = "blue") +
labs(title = paste("3-Competition Rolling Mean for", "Vasaraheide"),
x = "Date",
y = "Rolling Mean") +
geom_smooth(method = "lm", se = FALSE) +
scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_line()`).
plot_subject <- function(subject_name) {
subject_data <- filter(data, Subject == subject_name)
ggplot(subject_data, aes(x = Date, y = Result)) +
geom_point() + # Plot the individual results as points
geom_line(aes(y = Rolling_Mean), color = "blue") + # Plot the rolling mean as a line
geom_smooth(method = "lm", se = FALSE) +
labs(title = paste("Results, trendline and 3-Competition Rolling Mean for", subject_name),
x = "Date",
y = "Result") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
scale_x_date(date_breaks = "1 year", date_labels = "%Y")
}
# Create a list of plots for each subject
plots <- lapply(unique(data$Subject), plot_subject)
# Print the plots (or save them using ggsave)
plots
## [[1]]
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_line()`).
##
## [[2]]
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_line()`).
##
## [[3]]
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_line()`).
##
## [[4]]
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_line()`).
##
## [[5]]
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_line()`).
##
## [[6]]
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_line()`).
library(stats)
data = read.csv("athletics_results_transposed.csv")
data
## Event Location Date
## 1 Tallinna seeriavõistlus TTÜ staadion 20.06.2021
## 2 Tallinna seeriavõistlus TTÜ staadion 18.07.2021
## 3 Eesti MV heidete mitmevõistluses Niidupargi st 28.08.2021
## 4 Tallinna seeriavõistlus TTÜ staadion 19.09.2021
## 5 Tõrva spordiklubi „Viraaž“ heited Pokardi 30.04.3022
## 6 Tallinna seeriavõistlus TTÜ staadion 29.05.2022
## 7 Pokardi heiteseriaal III Pokardi st 15.06.2022
## 8 MM Tampere 06.07.2022
## 9 Viljandi heitjate seeriavõistlus Paalalinna st 18.07.2022
## 10 Eesti MV heidete mitmevõistluses Niidupargi st 27.08.2022
## 11 Tallinna seeriavõistlus TTÜ staadion 18.06.2023
## 12 Viljandi heitjate seeriavõistlus Paalalinna st 28.06.2023
## 13 Viljandi heitjate seeriavõistlus Paalalinna st 19.07.2023
## 14 Pokardi heiteseriaal III Pokardi st 26.07.2023
## 15 Viljandi heitjate seeriavõistlus Paalalinna st 16.08.2023
## 16 Tõrva spordiklubi „Viraaž“ vasaraheite võistlus Pokardi 19.08.2023
## 17 Pokardi heiteseriaal IV Pokardi st 23.08.2023
## 18 Eesti MV heidete mitmevõistluses Niidupargi st 02.09.2023
## 19 Tõrva spordiklubi „Viraaž“ vasaraheite võistlus Pokardi 04.05.2024
## Vasaraheide Kuulitõuge Kettaheide Odavise Raskusheide Punktid
## 1 38.83 8.79 29.92 27.84 11.99 2761
## 2 39.78 9.36 31.91 27.70 11.75 2844
## 3 38.02 9.71 32.05 28.78 12.56 2910
## 4 40.74 9.38 31.00 30.08 12.53 2943
## 5 41.68 9.65 32.30 31.33 12.66 3044
## 6 41.24 9.76 31.46 28.55 11.90 2921
## 7 40.40 9.89 32.44 30.65 11.98 2984
## 8 39.37 9.71 29.07 30.70 11.70 2867
## 9 40.27 9.61 33.05 28.59 12.00 2931
## 10 41.71 9.91 33.20 30.10 12.52 3047
## 11 39.84 9.34 31.91 25.12 11.12 2752
## 12 39.13 9.76 33.08 28.61 10.98 2861
## 13 38.02 9.22 32.86 28.03 11.61 2819
## 14 41.77 9.58 32.76 29.18 11.92 2960
## 15 38.82 9.47 32.22 28.15 12.58 2901
## 16 39.84 9.82 33.76 30.62 12.40 3018
## 17 40.97 9.32 32.76 29.24 12.21 2944
## 18 40.15 9.40 32.94 27.98 13.00 2957
## 19 42.65 9.75 32.55 29.56 13.15 3065
# Make model
lm_model <- lm(Punktid ~ Vasaraheide + Kuulitõuge + Kettaheide + Odavise + Raskusheide + Event + Location, data = data)
# View the summary of the model
summary(lm_model)
##
## Call:
## lm(formula = Punktid ~ Vasaraheide + Kuulitõuge + Kettaheide +
## Odavise + Raskusheide + Event + Location, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.4374 -0.2864 0.0000 0.3023 0.4469
##
## Coefficients: (5 not defined because of singularities)
## Estimate Std. Error
## (Intercept) -555.83800 12.94574
## Vasaraheide 19.76144 0.16117
## Kuulitõuge 73.67594 0.83965
## Kettaheide 20.14783 0.34199
## Odavise 21.27328 0.16083
## Raskusheide 59.04213 0.46278
## EventMM -0.14329 1.63348
## EventPokardi heiteseriaal III -0.05891 0.71797
## EventPokardi heiteseriaal IV 0.57403 0.82367
## EventTallinna seeriavõistlus -1.39171 0.88716
## EventTõrva spordiklubi „Viraaž“ heited 0.46824 0.82320
## EventTõrva spordiklubi „Viraaž“ vasaraheite võistlus -1.01916 0.54082
## EventViljandi heitjate seeriavõistlus 0.78496 0.54653
## LocationPaalalinna st NA NA
## LocationPokardi NA NA
## LocationPokardi st NA NA
## LocationTampere NA NA
## LocationTTÜ staadion NA NA
## t value Pr(>|t|)
## (Intercept) -42.936 1.07e-08 ***
## Vasaraheide 122.615 1.98e-11 ***
## Kuulitõuge 87.746 1.48e-10 ***
## Kettaheide 58.913 1.61e-09 ***
## Odavise 132.273 1.26e-11 ***
## Raskusheide 127.582 1.56e-11 ***
## EventMM -0.088 0.933
## EventPokardi heiteseriaal III -0.082 0.937
## EventPokardi heiteseriaal IV 0.697 0.512
## EventTallinna seeriavõistlus -1.569 0.168
## EventTõrva spordiklubi „Viraaž“ heited 0.569 0.590
## EventTõrva spordiklubi „Viraaž“ vasaraheite võistlus -1.884 0.108
## EventViljandi heitjate seeriavõistlus 1.436 0.201
## LocationPaalalinna st NA NA
## LocationPokardi NA NA
## LocationPokardi st NA NA
## LocationTampere NA NA
## LocationTTÜ staadion NA NA
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5293 on 6 degrees of freedom
## Multiple R-squared: 1, Adjusted R-squared: 1
## F-statistic: 4.358e+04 on 12 and 6 DF, p-value: 8.455e-14
Kokkuvõte:
Kõige stabiilsemate tulemustega odavise ja vasaraheide.
Ehkki kõik alad (loomulikult) mõjutavad lõpptulemust ja vahed mõjudel on väga väikesed, on kõige enam mõjutab mitmevõistluse tulemust kuulitõuke tulemus. Kui kuulitõuge õnnestub, on parem, on mitmevõistluse tulemus ka parem, st kuulitõuke mõju on suurim. Kuulitõuke järel tuleb raskusheide. Odavise, vasar ja ketas on suhteliselt sarnase mõjuga lõpptulemusele. Kokkuvõttes: kui kuulis on hea päev, tuleb kõvem lõpptulemus, samas kuul on kõige ebastabiilsem ala.
3-võistluse keskmisi ja trendi vaadates on vasar, kuul ja raskus tõusuteel, odaviske trend langusteel ning ketas kõige enam tõusuteel aladest.
2023 on olnud võistlustel kerge mõõn suvel kuni 2024 oled “back in business”.