# 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)

Including Plots

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: