Category Archives: Strength & Conditioning

The Nordic Hamstring Exercise, Hamstring Strains, & the Scientific Process

Doing science in lab is hard.

Doing science in the applied environment is hard — maybe even harder than the lab, at times, due to all of the variables you are unable to control for.

Reading and understanding science is also hard.

Let’s face it, science is tough! So tough, in fact, that scientists themselves have a difficult time with all of the above, and they do this stuff for a living! As such, to keep things in check, science applies a peer-review process to ensure that a certain level of standard is upheld.

Science has a very adversarial quality to it. One group of researchers formulate a hypothesis, conduct some research, and make a claim. Another group of researchers look at that claim and say, “Yeah, but…”, and then go to work trying to poke holes in it, looking to answer the question from a different angle, or trying to refute it altogether. The process continues until some type of consensus is agreed upon within the scientific community based on all of the available evidence.

This back-and-forth tennis match of science has a lot to teach those looking to improve their ability to read and understand research. Reading methodological papers and letters to the editor offer a glimpse into how other, more seasoned, scientists think and approach a problem. You get to see how they construct an argument, deal with a rebuttal, and discuss the limitations of both the work they are questioning and the work they are conducting themselves.

All of this brings me to a recent publication from Franco Impellizzeri, Alan McCall, and Maarten van Smeden, Why Methods Matter in a Meta-Analysis: A reappraisal showed inconclusive injury prevention effect of Nordic hamstring exercise.

The paper is directed at a prior meta-analysis which aggregated the findings of several studies with the aim of understanding the role of the Nordic hamstring exercise (NHE) in reducing the risk hamstring strain injuries in athletes. In a nutshell, Impellizzeri and colleagues felt like the conclusions and claims made from the original meta-analysis were too optimistic, as the title of the paper suggested that performing the NHE can halve the rate of hamstring injuries (Risk Ratio: 0.49, 95% CI: 0.32 to 0.74). Moreover, Impellizzeri et al, identified some methodological flaws with regard to how the meta-analysis was performed.

The reason I like this paper is because it literally steps you through the thought process of Impellizzeri and colleagues. First, it discusses the limitations that they feel are present in the previous meta-analysis. They then conduct their own meta-analysis by re-analyzing the data, however, they apply an inclusion criteria that was more strict and, therefore, only included 5 papers from the original study (they also identified and included a newer study that met their criteria). In analyzing the original five papers, they found prediction intervals ranging from 0.06 to 5.14. (Side Note: Another cool piece of this paper is the discussion and reporting of both confidence intervals and prediction intervals, the latter of which are rarely discussed in the sport science literature).

The paper is a nice read if you want to see the thought process around how scientists read research and go about the scientific process of challenging a claim.

Some general thoughts

  • Wide prediction intervals leave us with a lot of uncertainty around the effectiveness of NHE in reducing the risk of hamstring strain injuries. At the lower end of the interval NHE could be beneficial and protective for some while at the upper end, potentially harmful to others.
  • A possible reason for the large uncertainty in the relationship between NHE and hamstring strain injury is that we might be missing key information about the individual that could indicate whether the exercise would be helpful or harmful. For example, context around their previous injury history (hamstring strains in particular), their training age, or other variables within the training program, all might be useful information to help paint a clearer picture about who might benefit the most or the least.
  • Injury is highly complex and multi-faceted. Trying to pin a decrease in injury risk to a single exercise or a single type of intervention seems like a bit of a stretch.
  • No exercise is a panacea and we shouldn’t treat them as such. If you like doing NHE for yourself (I actually enjoy it!) then do it. If you don’t, then do something else. Let’s not believe that certain exercises have magical properties and let’s not fight athletes about what they are potentially missing from not including an exercise in their program when we don’t even have good certainty on whether it is beneficial or not.

Force Decks – Force Plate Shiny Dashboard

Last week, two of the data scientists at Vald Performance, Josh Ruddy and Nick Murray, put out a free online tutorial on how to create a force plate reports using R with data from their Force Decks software.

It was a nice tutorial to give an overview of some of the power behind ggplot2 and the suite of packages that come with tidyverse. Since they made the data available (in the link above), I decided to pull it down and put together a quick shiny app for those that might be interested in extending the report to an interactive web app.

This isn’t the first time I’ve build a shiny app for the blog using force plate data. Interested readers might want to check out my post from a year ago where I built a shiny interactive report for force-velocity profiling.

You can watch a short preview of the end product in the below video link and the screen shots below the link show a static view of what the final shiny App will look like.

A few key features:

  1. App always defaults to the most recent testing day on the testDay tab.
  2. The user can select the position group at the top and that position group will be maintained across all tabs. For example, if you select Forwards, when you switch between tabs one and two, forwards will always be there.
  3. The time series plots on the Player Time Series tab are done using plotly, so they are interactive, allowing the user to hover over each test session and see the change from week-to-week in the tool tip. When the change exceeds the meaningful change, the point turns red. Finally, because it is plotly, the user can slice out specific dates that they want to look at (as you can see me do in the video example), which comes in handy when there are a large number of tests over time.

All code and data s accessible through my GitHub page.

vald_shiny_app

Loading and preparing the data

  • I load the data in using read.csv() and file.choose(), so navigate to wherever you have the data on your computer and select it.
  • There is some light cleaning to change the date in to a date variable. Additionally, there were no player positions in the original data set, so I just made some up and joined those in.

### packages ------------------------------------------------------------------
library(tidyverse)
library(lubridate)
library(psych)
library(shiny)
library(plotly)

theme_set(theme_light())

### load & clean data ---------------------------------------------------------
cmj <- read.csv(file.choose(), header = TRUE) %>%
  janitor::clean_names() %>%
  mutate(date = dmy(date))

player_positions <- data.frame(name = unique(cmj$name),
                               position = c(rep("Forwards", times = 15),
                                            rep("Mids", times = 15),
                                            rep("Backs", times = 15)))

# join position data with jump data
cmj <- cmj %>%
  inner_join(player_positions)

 

Determining Typical Error and Meaningful Change

  • In this example, I’ll just pretend as if the first 2 sessions represented our test-retest data and I’ll work from there.
  • Typical Error Measurement (TEM) was calculated as the standard deviation of differences between test 1 and 2 divided by the square root of 2.
  • For the meaningful change, instead of using 0.2 (the commonly used smallest worthwhile change multiplier) I decided to use a moderate change (0.6), since 0.2 is such a small fraction of the between subject SD.
  • For info on these two values, I covered them in a blog post last week using Python and a paper Anthony Turner and colleagues wrote.

change_standards <- cmj %>%
  group_by(name) %>%
  mutate(test_id = row_number()) %>%
  filter(test_id < 3) %>%
  select(name, test_id, rel_con_peak_power) %>%
  pivot_wider(names_from = test_id,
              names_prefix = "test_",
              values_from = rel_con_peak_power) %>%
  mutate(diff = test_2 - test_1) %>%
  ungroup() %>%
  summarize(TEM = sd(diff) / sqrt(2),
            moderate_change = 0.6 * sd(c(test_1, test_2)))

Building the Shiny App

  • In the user interface, I first create my sidebar panel, allowing the user to select the position group of interest. You’ll notice that this sidebar panel is not within the tab panels, which is why it stands alone and allows us to select a position group that will be retained across all tabs.
  • Next, I set up 2 tabs. Notice that in the first tab (testDay) I include a select input, to allow the user to select the date of interest. In the selected argument I tell shiny to always select the max(cmj$date) so that the most recent session is always shown to the user.
  • The server is pretty straight forward. I commented out where each tab data is built. Basically, it is just taking the user specified information and performing simple data filtering and then ggplot2 charts to provide us with the relevant information.
  • On the testDay plot, we use the meaningful change to shade the region around 0 in grey and we use the TEM around the athlete’s observed performance on a given day to specify the amount of error that we might expect for the test.
  • One the Player Time Series plot we have the athlete’s average line and ±1 SD lines to accompany their data, with points changing color when the week-to-week change exceeds out meaningful change.
### Shiny App -----------------------------------------------------------------------------

## Set up user interface

ui <- fluidPage(
  
  ## set title of the app
  titlePanel("Team CMJ Analysis"),
  
  ## create a selection bar for position group that works across all tabs
  sidebarPanel(
    selectInput(inputId = "position",
                label = "Select Position Group:",
                choices = unique(cmj$position),
                selected = "Backs",
                multiple = FALSE),
    width = 2
  ),
  
  ## set up 2 tabs: One for team daily analysis and one for player time series
  tabsetPanel(
    
    tabPanel(title = "testDay",
             
             selectInput(inputId = "date",
                         label = "Select Date:",
                         choices = unique(cmj$date)[-1],
                         selected = max(cmj$date),
                         multiple = FALSE),
             
             mainPanel(plotOutput(outputId = "day_plt", width = "100%", height = "650px"),
                       width = 12)),
    
    tabPanel(title = "Player Time Series",
             
             mainPanel(plotlyOutput(outputId = "player_plt", width = "100%", height = "700px"),
                       width = 12))
  )
  
)


server <- function(input, output){
  
  ##### Day plot tab ####
  ## day plot data
  day_dat <- reactive({
    
    d <- cmj %>%
      group_by(name) %>%
      mutate(change_power = rel_con_peak_power - lag(rel_con_peak_power)) %>%
      filter(date == input$date,
             position == input$position)
    
    d
    
  })
  
  ## day plot
  output$day_plt <- renderPlot({ day_dat() %>%
      ggplot(aes(x = reorder(name, change_power), y = change_power)) +
      geom_rect(aes(ymin = -change_standards$moderate_change, ymax = change_standards$moderate_change),
                xmin = 0,
                xmax = Inf,
                fill = "light grey",
                alpha = 0.6) +
      geom_hline(yintercept = 0) +
      geom_point(size = 4) +
      geom_errorbar(aes(ymin = change_power - change_standards$TEM, ymax = change_power + change_standards$TEM),
                    width = 0.2,
                    size = 1.2) +
      theme(axis.text.x = element_text(angle = 60, vjust = 1, hjust = 1),
            axis.text = element_text(size = 16, face = "bold"),
            axis.title = element_text(size = 18, face = "bold"),
            plot.title = element_text(size = 22)) +
      labs(x = NULL,
           y = "Weekly Change",
           title = "Week-to-Week Change in Realtive Concentric Peak Power")
    
  })
  
  ##### Player plot tab ####
  ## player plot data
  
  player_dat <- reactive({
    
    d <- cmj %>%
      group_by(name) %>%
      mutate(avg = mean(rel_con_peak_power),
             sd = sd(rel_con_peak_power),
             change = rel_con_peak_power - lag(rel_con_peak_power),
             change_flag = ifelse(change >= change_standards$moderate_change | change <= -change_standards$moderate_change, "Flag", "No Flag")) %>%
      filter(position == input$position)
    
    d
  })
  
  ## player plot
  output$player_plt <- renderPlotly({
    
    plt <- player_dat() %>%
      ggplot(aes(x = date, y = rel_con_peak_power, label = change)) +
      geom_rect(aes(ymin = avg - sd, ymax = avg + sd),
                xmin = 0,
                xmax = Inf,
                fill = "light grey",
                alpha = 0.6) +
      geom_hline(aes(yintercept = avg - sd),
                 color = "black",
                 linetype = "dashed",
                 size = 1.2) +
      geom_hline(aes(yintercept = avg + sd),
                 color = "black",
                 linetype = "dashed",
                 size = 1.2) +
      geom_hline(aes(yintercept = avg), size = 1) +
      geom_line(size = 1) +
      geom_point(shape = 21,
                 size = 3,
                 aes(fill = change_flag)) +
      facet_wrap(~name) +
      scale_fill_manual(values = c("red", "black", "black")) +
      theme(axis.text = element_text(size = 13, face = "bold"),
            axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1),
            plot.title = element_text(size = 18),
            strip.background = element_rect(fill = "black"),
            strip.text = element_text(size = 13, face = "bold"),
            legend.position = "none") +
      labs(x = NULL,
           y = NULL,
           title = "Relative Concentric Peak Power")
    
    ggplotly(plt)
    
  })
  
  
}



shinyApp(ui, server)

Acute:Chronic Workload & Our Research

Some research that myself and a few colleagues have worked on for the past year (and discussed for far longer than that) regarding our critiques of the acute-chronic workload model for sports injury have been recently published.

It was a pleasure to collaborate with this group of researchers and I learned a lot throughout the process and hopefully others will learn a lot when they read our work.

Below are the papers that I’ve been a part of:

  1. Bornn L, Ward P, Norman D. (2019). Training schedule confounds the relationship between Acute:Chronic Workload Ratio and Injury. A causal analysis in professional soccer and American football. Sloan Sports Analytics Conference Paper.
  2. Impellizzeri F, Woodcock S, McCall A, Ward P, Coutts AJ. (2020). The acute-crhonic workload ratio-injury figure and its ‘sweet spot’ are flawed. SportRxiv Preprints.
  3. Impellizzeri FM, Ward P, Coutts AJ, Bornn L, McCall A. (2020). Training Load and Injury Part 1: The devil is in the detail – Challenges to applying the current research in the training load and injury field. Journal of Orthopedic and Sports Physical Therapy, 50(10): 577-584.
  4. Impellizzeri FM, Ward P, Coutts AJ, Bornn L, McCall A. (2020). Training Load and Injury Part 2: Questionable research practices hijack the truth and mislead well-intentioned clinicians. Journal of Orthopedic and Sports Physical Therapy, 50(10): 577-584.
  5. Impellizzeri FM, McCall A, Ward P, Bornn L, Coutts AC. (2020). Training load and its role in injury prevention, Part 2: Conceptual and Methodologic Pitfalls. Journal of Athletic Training, 55(9). 893-901.

Many will argue and say, “Who cares? What’s the big deal if there are issues with this research? People are using it and it is making them think about training load and it is increasing the conversations about training load within sports teams.”

I understand this argument to a point. Having been in pro sport for 7 years now, I can say that anything which increase conversation about training loads, how players are (or are not) adapting, and the potential role this all plays in non-contact injury and game day performance is incredibly useful. That being said, to make decisions we need to have good/accurate measures. Simply doing something for the sake of increasing the potential for conversation is silly to me. It is the same argument that gets made for wellness questionnaires (which I have also found little utility for in the practical environment).

When we measure something it means we are assigning a level of value to it. There is some amount of weighting we apply to that measurement within our decision making process. Even if we are under the belief that collecting the metric is solely for the purpose of increasing the opportunity to have a conversation with a player or coach. In the back of our minds we are still thinking, “Jeez, but his acute-chronic workload ratio was 2.2 today” or “Gosh, I don’t know. He did put an 8 down (out of 10) for soreness this morning”.

Of course challenging these ideas doesn’t mean we sit on our hands and do nothing. Taking simple training load measures (GPS, Accelerometers, Heart Rate, etc.) and applying basic logic about reasonably safe training load increases from week-to-week, doing some basic analysis to understand injury risks and rates within your sport (how they differ by position, age, etc), and identifying players that might be at higher risk of injury to begin with (IE, higher than the baseline risk) and having a more conservative approach with their progression in training can go a long way. Doing something simple like that, doing well, and creating an easy way to report said information to the coach and player can help increase the chance for more meaningful conversation without using measures that might otherwise give a flawed sense of certainty around injury risk.

Regardless of our work, people will use what they want to use and what they are (or have been) most comfortable with in practice. However, that shouldn’t deter us from challenging our processes, critiquing methodologies, and trying to better understand sport, training, physiology, and athlete health and wellness.

Concurrent Training – The Effect of Intensity Distribution

Periodization and planning of training is a topic that fascinates me as I enjoy studying how good coaches structure training and develop athletes. Lots of thoughts exist regarding the best periodization strategy to use (e.g., Linear, Block, Conjugate, Vertical Integration, Undulating, Daily Undulating, Fluid, etc.).

Concurrent training is one approach to structuring a training program where multiple qualities are trained within the same session. Of course, this may present problems where one quality (e.g., strength) may interfere with another quality (e.g., aerobic training) that you are looking to also develop in that session. For more on this issue, referred to as the interference phenomenon, see THIS blog post I wrote about 4 years ago.

A new study by Varela-Sanz and colleagues evaluated the effect of concurrent training between two programs that had equivalent external loads (volume x intensity) but differed in training intensity distribution. This evaluation may provide practitioners with a better understanding of the optimal dose and intensity needed to minimize the interference phenomenon. In team sport athletes, this may be essential as training and developing multiple qualities needed for sport is crucial and the shortened offseason periods can make program planning a challenge.

Study Overview

Subjects: 35 sport science students (30 men / 5 women)
Duration: 8 weeks
Independent Variable: External training load
Dependent Variables:

  • Counter Movement Jump
  • Bench Press (7 – 10 RM was performed and used to estimate 1 RM)
  • Half Squat (7 – 10 RM was performed and used to estimate 1 RM)
  • Max Aerobic Speed (Université de Montréal Track Test)
  • Body Composition (body weight & skinfold measurements)
  • HRV
  • RPE
  • Feeling Scale
  • Training Impulse (TRIMP)

Training Groups

  • Traditional Training Group
    • N = 12
    • This group followed the exercise guidelines recommended by the American College of Sports Medicine (ACSM), which suggests that moderate-to-vigorous intensity aerobic exercise is performed on most days of the week.
  • Polarized Training Group
    • N =12
    • This group followed a polarized training program. Polarized training programs have been recommended for endurance athletes as a method of distributing training intensity. Despite this polarized approach, external load was matched to the Traditional Training Group.
  • Control Group
    • N = 11

Training Program

  • Training Frequency: 3x/week (Mon, Wed, Fri)
    • Monday & Friday sessions were ~120min
    • Wednesday’s session was ~60min
  • Training Set Up
    • Monday/Friday Training
      • Cardiovascular Training
      • Resistance Training
    • Wednesday Training
      • Cardiovascular Training

      Screen Shot 2016-06-19 at 2.41.03 PM

Results

  • No differences for total workload, RPE, TRIMP, or Feeling Score were found between groups over the 8-week period.
  • The traditional training group was the only group to see a decrease in resting HR (both supine and standing) following the training program. No changes in HRV were seen for any group.
  • Both training groups saw improvements in 1RM for the bench press, half squat, and Max Aerobic Speed.
  • The polarized group saw an increase in body weight (without a change in body fat) following the 8-week training program and was still able to maintain their vertical jump abilities.

Practical Applications

I don’t know that this study moves us any closer to understanding the optimal distribution of training intensity when performing a concurrent training program. The polarized group performed easier cardiovascular training on days where they performed resistance training (Monday & Friday) and on Wednesday’s they performed easy cardiovascular training followed by high intensity interval training. The traditional group performed the same training session each day, with the same intensities for the duration of the 8-week program. Despite the differences in intensity distribution, both groups appeared to make improvements so it is really difficult to tell which method may be more beneficial (or perhaps, they are really just the same).

There are a number of things to consider when reading this study:

  • The subjects are not high-level athletes and it is possible that any form of training is going to provide a positive training effect.
  • Resistance training volume was low (they only used two exercises – Bench Press and Half Squat) so we don’t know what would happen if there were more resistance training in the program.
  • The polar training group trained opposite qualities during their training sessions, which is interesting given that a commonly held belief amongst coaches is to try and group similar qualities together in one session rather than mix them (IE, sprinting + heavy strength training or aerobic training + lower intensity resistance training).

Probably the most important thing that I think about with papers like this is that we need to begin to dig down into understanding individual differences. Comparing group means doesn’t really tell us how the individual’s responded and then allow us to make better inference to our own athletes about what sort of outcome we might expect to get when we write a training program. Training is a very individualized process and how someone responds to the program we apply to them is dependent on a number of factors – some that we might be able to measure and quantify and others which we might not be able to measure and quantify (and a few others that we might not even be aware of yet). In the process of evaluating individual differences we may find that some athletes in each group got better, a few stayed the same, and some may have gotten worse. Without understanding these individual differences and then attempting to unpack the deeper question of “why” it will be hard to plan individualized training programs in the future. If we can get to the bottom of how people respond to training and we can start to go down the road of figuring out the factors that influence that response we will start to have a better idea of the impact our training program will have for that athlete, allowing us to make individual adjustments that may lead to more favorable outcomes.

 

 

Daily Undulating Periodization & Performance Improvements in Powerlifters

Dr. Mike Zourdos and colleagues just published a new paper on Daily Undulating Periodization (Zourdos MC, et al. Modified Daily Undulating Periodization Model Produces Greater Performance Than a Traditional Configuration in Powerlifters. J Strength Cond Res 2015. Published Ahead of Print). Being a fan of the Daily Undulating Periodization approach to training structure I thought I would summarize the paper and share some of my thoughts.

Subjects

  • 18 Male, college-aged powerlifters
  • Subjects were assigned to one of two groups: Hypertrophy, Strength, & Power (HSP) or Hypertrophy, Power, & Strength (HPS)
  • The groups were balanced to ensure that relative and absolute strength were similar

Training Programs

  • Hypertrophy, Strength, & Power: This group performed three sessions per week, on non-consecutive days. Day 1 had a primary emphasis of hypertrophy, day 2 had an emphasis of strength, and day 3 had an emphasis of power.
  • Hypertrophy, Power, & Strength: This group performed three sessions per week, on non-consecutive days. Day 1 had a primary emphasis of hypertrophy, day 2 had an emphasis of power, and day 3 had an emphasis of strength.
  • The rationale for testing the outcome between these two weekly training schemes is that in the former, which is a common weekly set up for Daily Undulating Periodization in research, the strength session takes place ~48 hours following the hypertrophy session, which is the higher volume training session of the three. This may create an issue with the subject’s ability to perform their strength session due to the lack of recovery from the high volume hypertrophy session.
  • The variables for each of the training days are described in the chart below:

Screen Shot 2015-09-06 at 2.52.09 PM

Summary of Strength Results

The strength change results from both of the 6-week training programs are summarized as follows:

Screen Shot 2015-09-06 at 3.14.57 PM

  • No statistical difference in the squat and deadlift were found between groups; however a statistical improvement was seen in the bench press for the HPS group compared to the HSP group.
  • No statistical difference was found between groups for powerlifting total.
  • Effect sizes greater than 0.5 were noted for the squat, bench press, and powerlifting total in favor of HPS, which may suggest a practically significant improvement in HPS versus HSP when developing training programs for powerlifters.

Comments & Thought

This was an interesting study and I like the approach of trying to find an optimal scheme within the training week. Perhaps someday we may find that the optimal scheme for the Daily Undulating Periodization Model (or any training model!) is one where the emphasis of training on a given day is dictated based on how the athlete reports and what they are able to tolerate? This very fluid approach to programming – where we are attempting to strike a balance between training variety, to prevent monotony, and a concentrated dose of training, to increase fitness in a certain capacity – has been suggested by John Kiely’s work on periodization. In the paper by Zourdos and colleagues, they used an autoregulation approach on the hypertrophy day to dictate the training load/intensity for that session (an approach discussed by Mel Siff in Supertraining and researched by Bryan Mann, as referenced above). Perhaps, in a practical setting, we could extend this a bit further and utilize a linear position transducer or some other form of velocity based approach (the folks at PUSH have come up with an affordable and easy to use solution) to dictate the load/intensity on the power and strength training days. If the athlete is sluggish and moving the bar slowly, then lower the load to stay within a desired range of bar velocity. Additionally, because training takes place on non-consecutive days in this type of frame work (E.g., 3 sessions over 7 days) it may be possible to utilize monitoring strategies (bar velocity, daily wellness, RPE training loads, HRV, etc) to make the suggestion that the athlete take a rest day, instead of performing the scheduled training session, and see how their body is the following day and if it is prepared to tolerate the load.

The use of effect sizes in this paper allows us to get a better understanding of whether or not the average difference between groups is of practical significance. One of the things that I find  critical when looking at research on training interventions is the understanding of inter-individual differences. It is very possible that some athletes in this study responded favorably to either of the training approaches while others had no result or a poor result.  The paper also look at things like changes in total volume and some hormonal measures. When it comes to understanding responders and non-responders in training, it isn’t good enough to just say, “Some people get better and others don’t”. At some point, we need to figure out who doesn’t respond and why they don’t respond. Perhaps there is something to additionally look at in this paper with the hormonal changes and the individual’s ability to increase training volume or get stagnant during certain periods of the training program.

Hopefully this group continues to do more research on the topic of Daily Undulating Periodization because I find it to be a practical method of programming training and they have done some good work thus far that they can certainly follow up on. While Mike Zourdos tends to aim his approach at Powerlifters (I believe because he is competitive lifter himself) there are concepts within this framework that can easily be extended to training team sport athletes as well as concepts that could be used for sport coaches when establishing the weekly practice structure.