Assessment 1: Critical Appraisal
Chosen study: Hsieh, Cheng-Hsuan

Part 1

  1. Investigate how triathletes use and perceive the effectiveness of their recovery strategies
  2. Analyze the differences in recovery strategy usage between a normal training week and a week following a competition, to determine how these patterns might shift with participation in competitive events

Part 2

R coding

2.1

#import data
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
library(patchwork)
data<-read.csv("Frequency_long2.csv")
data<-data|>
  rename(
    'Active recovery'=Active_recovery,
    'Additional sleep'=Additional_sleep,
    'Compression garments'=Compression_garments,
    'Cryotherapy chambers'=Cryotherapy,
    'Float tank'=Float_tank,
    'Foam rolling'=Foam_rolling,
    'Hydrotherapy'=Water_immersion,
    'Massage gun'=Massage_gun,
    'Paracetamol/other painkiller'=Paracetamol,
    'Professional massage'=Professional_massage,
    'Topical magnesium'=Topical_magnesium
    
  )
#transform the data
df<-data |> 
  mutate(across('Active recovery':'Topical magnesium',~ case_when(
    .=="Almost never"~0,
    .=="Rarely"~1,
    .=="Sometimes"~2,
    .=="Often"~3,
    .=="Almost always"~4)
  )) |>
  mutate(Level=ifelse(Level==1|Level==2,'1','2')) |> 
  group_by(Level,Time) |> 
  summarise(across('Active recovery': 'Topical magnesium',~sum(.)/(n()*4),.names = " {.col}"))
## `summarise()` has grouped output by 'Level'. You can override using the
## `.groups` argument.
df_long<- df |> 
  pivot_longer(cols = starts_with(" "),
               names_to = "methods",
               values_to= "percentage")

# seting the data for transverse transform
df_new <- df_long %>%
  mutate(percentage = ifelse(Time == "competition", percentage, -percentage))
correct_levels <- c(
  ' Topical magnesium',
  ' Stretching',
  ' Sauna',
  ' Professional massage',
  ' Paracetamol/other painkiller',
  ' Massage gun',
  ' IPC',
  ' Hydrotherapy',
  ' Foam rolling',
  ' Float tank',
  ' Cryotherapy chambers',
  ' Compression garments',
  ' Additional sleep',
  ' Active recovery'
)
df_new<- df_new |> mutate(
  methods=factor(methods,levels=correct_levels),
  Level=factor(Level,levels=c('2','1')))

2.2

P1<-ggplot(df_new, aes(x = methods, y = percentage, fill = Level)) +
  geom_bar(stat = "identity", position = 'dodge', width = 0.5) +
  coord_flip() +
  scale_y_continuous(breaks = seq(-.75, .75, by = .25),labels = abs, sec.axis = dup_axis(name = NULL)) + 
  scale_fill_manual(values = c("1"="black","2"="gray"))+
  labs(x = NULL,  
       y = NULL) + 
  theme(strip.placement = "outside",
        strip.background = element_blank(),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank(), 
        legend.position = "none") + 
  geom_hline(yintercept = 0, color = 'white', size = 2)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
P1

2.3

df_new2<-df_new |> 
  mutate(percentage=ifelse(percentage<0,-percentage,percentage))
P2<-ggplot(df_new2, aes(x = methods, y = percentage, fill =interaction(Time, Level), color = interaction(Time, Level), group = interaction(Time, Level))) +
  geom_bar(stat = "identity", position = "dodge", width = 0.7, alpha = 0.5, color = 'white') +
  geom_line(aes(linetype = Time), size = 1) + 
  geom_point(size = 3) +
  scale_y_continuous(breaks = seq(-.75, .75, by = .25), labels = abs) +
  scale_fill_manual(
    values = c(
      "competition.1" = "blue",
      "normal.1" = "lightblue",
      "competition.2" = "black",
      "normal.2" = "red"
    ),
    labels = c(
      "competition.1"="Elite & competitive - After competition week",
      "normal.1"="Elite & competitive - Normal week",
      "competition.2"="Recreational & novice - After competition week",
      "normal.2"="Recreational & novice - Normal week"
    )
  ) +
  scale_color_manual(
    values = c(
      "competition.1" = "blue",
      "normal.1" = "lightblue",
      "competition.2" = "black",
      "normal.2" = "red"
    ),
    labels = c(
      "competition.1"="Elite & competitive - After competition week",
      "normal.1"="Elite & competitive - Normal week",
      "competition.2"="Recreational & novice - After competition week",
      "normal.2"="Recreational & novice - Normal week"
    )
  ) +
  labs(x = NULL, y = NULL, fill = "Type of Week and Level", linetype = "Type of Week") +
  theme(
    panel.grid.major.y = element_blank(),
    panel.grid.minor.y = element_blank(),
    legend.position = "bottom"
  )
P2

PlotA and PlotB

combined_plot <- P1 + P2 + plot_annotation(title = "Plot", 
                                            tag_levels = 'A')
combined_plot

In the figures above, Plot A shows the data I have created from the paper. Note that I’m not sure how the author calculated the frequency, so I used my own way to calculate it. I set “almost never” to 0, “rarely” to 1, “sometimes” to 2, “often” to 3, and “almost always” to 4, and summed the scores for each recovery method to calculate it’s percentage. The data shows overall similar results, but there are still some differences. Plot B is my attempts to improve the presentation. These were done by:

  • Changing the horizontal bar chart back to a standard bar chart, which provide better comparison of data across different weeks.

  • Using contrasting colors to make the lines, points, and bars more clearly represent different variables. The different colors also allow for quick differentiation of data levels, even in overlapping areas.

  • Organized all bars into a standard charts and scale for better comparison of frequency differences between various recovery methods

  • Adding the original charts with lines and points. Although the points on the graph can be difficult to interpret due to overlap when comparing a single method with identical data, there are no instances of data being too close. Therefore, the visual representation can intuitively show frequency changes within the same method due to different variables.

  • The most notable aspect of the line graph is that it allows us to estimate the area occupied below the lines under different variables, providing a general understanding of whether athletes choose different recovery methods or if there are frequency differences under varying conditions.