{"id":1428,"date":"2019-01-20T07:13:29","date_gmt":"2019-01-20T07:13:29","guid":{"rendered":"http:\/\/optimumsportsperformance.com\/blog\/?p=1428"},"modified":"2019-12-21T05:50:08","modified_gmt":"2019-12-21T05:50:08","slug":"testing-syntax-highlighter-evolved","status":"publish","type":"post","link":"https:\/\/optimumsportsperformance.com\/blog\/testing-syntax-highlighter-evolved\/","title":{"rendered":"A Simple Approach to Analyzing Athlete Data in Applied Sports Science"},"content":{"rendered":"<p><span style=\"text-decoration: underline;\"><strong>Intro<\/strong><\/span><\/p>\n<p>Evaluating whether an athlete has or has not improved in some key performance indicator is critical to understanding the success of a prescribed training or rehabilitation program. In the applied setting, practitioners are faced with <em>\u00adN = 1<\/em> decisions as they are training or rehabilitating individual athletes, each of whom is unique in their own way. As such, tests that allow practitioners to understand these individual improvements are imperative to quantifying the training process.<\/p>\n<p>The analysis of athlete testing data first requires an understanding of what the test is measuring (whether it is valid or not) and the amount of noise\/error within the test (whether the test is reliable or not). Tests that are overly noisy make it challenging for practitioners to reliably know whether or not changes exhibited by the athlete are due to real performance improvement, measurement error (e.g., issues with the test itself) or biological variation. Approaches to analyzing test-retest data to evaluate typical error measurement (TEM) and smallest worthwhile change (SWC) have been previously discussed by authors such as Hopkins<sup>1<\/sup>, Swinton<sup>2<\/sup>, and Turner<sup>3<\/sup>. Recently, my friend and colleague, <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/twitter.com\/Shaun_McLaren1\">Shaun McLaren<\/a><\/span>, wrote a <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/www.trainwithpush.com\/blog\/how-to-interpret-training-and-testing-data\">blog post<\/a> <\/span>on understanding statistics when interpreting individualized testing data. Such approaches are important in the applied setting as the last thing a practitioner or clinician wants to do is report inaccurate information regarding an athlete\u2019s current physical state to the coach or management. From a medical\/return-to-play standpoint, such information is important for ensuring that the athlete is making progress and meeting certain benchmarks to ensure a safe return from injury.<\/p>\n<p>The analytical approaches Shaun discussed are relatively easy to perform, and interested readers can <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"http:\/\/www.sportsci.org\/2015\/ValidRely.htm\">download Excel sheets<\/a><\/span> that will automatically calculate these measures and only require the practitioner to provide test-retest data. My aim in this blog post is to walk though similar statistical approaches using the coding language <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/www.r-project.org\/\">R<\/a><\/span> and build a function that will automatically calculate these metrics once the practitioner provides their data (analysis for this blog post was built of of the methods proposed by Swinton and Colleagues<sup>2<\/sup>, who provide similar methods in excel on the <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/www.frontiersin.org\/articles\/10.3389\/fnut.2018.00041\/full\">article&#8217;s webpage<\/a><\/span>).<\/p>\n<p><span style=\"text-decoration: underline;\"><strong>Simulating Data<\/strong><\/span><\/p>\n<p>First, we need to create some data to <em>play<\/em> with. I\u2019ll simulate two different data sets:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><strong>Data Set 1: Test-Retest Data<\/strong>\n<ul>\n<li>This data set will serve as our test-retest trial data. We will use this data set to calculate measures to get a sense for how noisy the test is and calculate measures such as TEM and SWC. For example, let\u2019s say that this test-retest trial is something like a simple vertical jump test. We want to have the athletes perform the test, take a rest period, and then perform the test again. We will then calculate how much error there is in the test.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li><strong>Data Set 2: Training Intervention Data<\/strong>\n<ul>\n<li>Once we\u2019ve established TEM and SWC, we will simulate a second data set that represents a group of athletes performing an experimental training intervention (strength training only) and another group of athletes performing a control condition (endurance training only). We will write a function to evaluate the responses from this data to understand how successful the intervention truly was.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong><span style=\"text-decoration: underline;\">Test-Retest Data Simulation<\/span><br \/>\n<\/strong><\/p>\n<p>Our test-retest data will be a simulation of a vertical jump test for 20 athletes.<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n\r\n### Load packages\r\n\r\nlibrary(dplyr)\r\nlibrary(ggplot2)\r\nlibrary(reshape)\r\n\r\n### Simulate data\r\n\r\nset.seed(2018)\r\nsubject &lt;- LETTERS&#x5B;1:20]\r\ngroup &lt;- rep(c(&quot;experimental&quot;, &quot;control&quot;), each = 10)\r\ntest &lt;- c(round(rnorm(n = 10, mean = 25, sd = 4),1), round(rnorm(n = 10, mean = 25, sd = 3), 1))\r\nretest &lt;- c(round(rnorm(n = 10, mean = 25, sd = 5),1), round(rnorm(n = 10, mean = 24, sd = 4), 1))\r\n\r\nreliability.data &lt;- data.frame(subject, test, retest)\r\nhead(reliability.data)\r\n\r\n  subject test retest\r\n1       A 23.3   31.3\r\n2       B 18.8   26.3\r\n3       C 24.7   26.3\r\n4       D 26.1   33.9\r\n5       E 31.9   18.9\r\n6       F 23.9   23.8\r\n\r\n<\/pre>\n<p>Two metrics we are interested in obtaining from the data are TEM and SWC.<\/p>\n<ul>\n<li>Typical error of measurement (TEM) is calculated as the standard deviation of the difference between test-retest scores divided by the square root of 2.\n<ul>\n<li style=\"text-align: center;\"><em>TEM = sd(Difference) \/ sqrt(2)<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Smallest worthwhile change (SWC) is calculated as the standard deviation of Test 1 multiplied by an effect size of interest. Hopkins and Batterham<sup>4<\/sup> recommend this effect size to be 0.2, as 0.2 represents the \u201csmallest worthwhile effect\u201d according to Jacob Cohen.\n<ul>\n<li style=\"text-align: center;\"><em>SWC = sd(Test1 Scores) * magnitude threshold<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Note on the magnitude threshold: <\/strong><em>With a very homogeneous group of athletes the standard deviation, and ensuing SWC, can be very small, perhaps so small that it is almost meaningless (Buchheit<sup>5<\/sup>) . However, I encourage practitioners to determine the effect size of interest based on the magnitude of change that they feel would be meaningful to worry about or meaningful to report to a coach. This might come down to the type of test being performed or the age\/experience of the athlete. I don\u2019t think it is as easy as simple saying \u201c0.2 is always our benchmark.\u201d Sometimes we may want to have a larger magnitude of interest (perhaps 0.8, 1.0, or 1.2). To be consistent with the scientific literature, I&#8217;ll use 0.2 in for this example, however, in the test-retest function below, I allow the practitioner to choose the magnitude threshold that is most important to them.<br \/>\n<\/em><\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n\r\n######### Test-Retest Function ######################\r\n#####################################################\r\n\r\nTest_Retest &lt;- function(test1, test2, magnitude.threshold){\r\n\t\r\n\trequire(dplyr)\r\n\t\r\n\t# combine the vectors into a dataset\r\n\tdataset &lt;- data.frame(test1, test2)\r\n\t\r\n\t# calculate difference\r\n\tdataset$Diff &lt;- with(dataset, test2-test1)\r\n\t\r\n\t# Calculate Mean &amp; SD\r\n\tstats &lt;- as.data.frame(dataset %&gt;%\r\n\tsummarize(PreTest.Mean = round(mean(test1, na.rm =T),2),\r\n\t\tPreTest.SD = round(sd(test1, na.rm = T),2),\r\n\t\tPostTest.Mean = round(mean(test2, na.rm = T), 2),\r\n\t\tPostTest.SD = round(sd(test2, na.rm = T), 2),\r\n\t\tMean.Difference = round(mean(Diff, na.rm = T), 2),\r\n\t\tSD.Difference = round(sd(Diff, na.rm = T), 2)))\r\n\t\t\r\n\t# Calculate TEM\r\n\tTEM &lt;- sd(dataset$Diff, na.rm = 2)\/sqrt(2)\r\n\t\r\n\t# Calculate SWC\r\n\tswc &lt;- magnitude.threshold*sd(test1)\r\n\t\r\n\t# Function output\r\n\tlist(SummaryStats = stats, TEM = round(TEM,2), SWC = round(swc, 3))\r\n\t\t\r\n}\r\n\r\n<\/pre>\n<p>With the function loaded, we can now supply it with the data from our simulated test-retest trial. All that is required are three inputs:<\/p>\n<ol>\n<li>A vector representing the the scores for test 1.<\/li>\n<li>A vector representing the scores for test 2 (the re-test).<\/li>\n<li>The magnitude of threshold of interest. (Again, in this example I&#8217;ll use 0.2, to represent the smallest worthwhile change. Feel free to change this to a different magnitude threshold, such as 0.8 or 1.2, and see how it effects the results.)<\/li>\n<\/ol>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n\r\ntest.retest.results &lt;- Test_Retest(test1 = reliability.data$test, test2 = reliability.data$retest, magnitude.threshold = 0.2)\r\n\r\ntest.retest.results\r\n\r\n<\/pre>\n<p><a href=\"https:\/\/optimumsportsperformance.com\/blog\/wp-content\/uploads\/2019\/01\/Screen-Shot-2019-12-20-at-9.47.54-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1570\" src=\"https:\/\/optimumsportsperformance.com\/blog\/wp-content\/uploads\/2019\/01\/Screen-Shot-2019-12-20-at-9.47.54-PM.png\" alt=\"\" width=\"624\" height=\"145\" srcset=\"https:\/\/optimumsportsperformance.com\/blog\/wp-content\/uploads\/2019\/01\/Screen-Shot-2019-12-20-at-9.47.54-PM.png 624w, https:\/\/optimumsportsperformance.com\/blog\/wp-content\/uploads\/2019\/01\/Screen-Shot-2019-12-20-at-9.47.54-PM-300x70.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/a><\/p>\n<p>Looking at the output, we see that the results are returned as a list with three elements:<\/p>\n<ol>\n<li>Summary statistics of both tests and the difference between tests<\/li>\n<li>The TEM<\/li>\n<li>The SWC<\/li>\n<\/ol>\n<p>This type of list format is useful if you want to call specific parts of the analysis. For example, if I need the TEM to be included downstream, in a later analysis, I can simply call it by typing:<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n\r\ntest.retest.results$TEM\r\n&#x5B;1] 4.83\r\n\r\n<\/pre>\n<p>One thing we may notice from the output of our function is that the error for this test is rather large, relative to the SWC. This could potentially be an issue when attempting to interpret future results for this test, given the error is so large. In this case, we may want to go back to the drawing board with our test and try to figure out a way to minimize the test error (or potentially consider using a different test). Alternatively, using this test would mean that we need to have a rather large change in the athlete&#8217;s performance to be certain that improvement the athlete had was &#8220;real.&#8221;<\/p>\n<p><strong><span style=\"text-decoration: underline;\">Training Intervention Simulation Data<\/span><br \/>\n<\/strong><\/p>\n<p>The training data that we&#8217;ll simulate will have baseline vertical jump scores and follow-up vertical jump scores at 8 weeks. Group 1 will only perform strength training while Group 2 will only perform endurance training.<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n\r\n### Simulate data\r\n\r\nset.seed(2018)\r\nsubject &lt;- LETTERS&#x5B;1:20]\r\ngroup &lt;- rep(c(&quot;experimental&quot;, &quot;control&quot;), each = 10)\r\nbaseline &lt;- c(round(rnorm(n = 10, mean = 24, sd = 3),1), round(rnorm(n = 10, mean = 24, sd = 3), 1))\r\npost.intervention &lt;- c(round(baseline&#x5B;1:10] + rnorm(n = 10, mean = 8, sd = 5), 1), round(rnorm(n = 10, mean = 27, sd = 5), 1))\r\n\r\nstudy.data &lt;- data.frame(subject, group, baseline, post.intervention)\r\nhead(study.data)\r\n\r\n  subject        group baseline post.intervention\r\n1       A experimental     22.9              35.1\r\n2       B experimental     20.1              31.0\r\n3       C experimental     21.4              30.3\r\n4       D experimental     27.2              33.0\r\n5       E experimental     23.6              31.2\r\n6       F experimental     27.1              30.5\r\n\r\ntail(study.data)\r\n\r\n   subject   group baseline post.intervention\r\n15       O control     23.4              30.4\r\n16       P control     25.4              24.5\r\n17       Q control     21.2              17.7\r\n18       R control     32.2              30.7\r\n19       S control     25.0              26.6\r\n20       T control     22.1              32.4\r\n\r\n<\/pre>\n<p>Next, we create a function called <strong>outcome<\/strong>, which takes the following eight inputs:<\/p>\n<ol>\n<li>A vector of baseline scores<\/li>\n<li>A vector of post-test scores (follow-up scores)<\/li>\n<li>A vector denoting which subjects belong to each of the groups<\/li>\n<li>A vector of subject IDs<\/li>\n<li>The TEM established from our test-retest trial above<\/li>\n<li>The SWC established from our test-retest trial above<\/li>\n<li>The number of samples in our test-retest trial (Reliability.N = 20)<\/li>\n<li>The confidence interval we are interested in. For this example I&#8217;ll use 95%. However, feel free to change this value and see how it influences the results<\/li>\n<\/ol>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n\r\noutcome &lt;- function(baseline.test, post.test, groups, subject.IDs, TEM, SWC, Reliability.N, Conf.Level){\r\n\t\r\n\t# Combine the vecotors into a data set\r\n\tdf &lt;- data.frame(subject.IDs, groups, baseline.test, post.test)\r\n\t\r\n\t# True Baseline Score Calculation\r\n\t\r\n\tdf$LowCI.baseline.true &lt;- round(baseline.test - qt(p = (1-Conf.Level)\/2, df = Reliability.N - 1, lower.tail = F)*TEM, 2)\r\n\t\r\n\tdf$HighCI.baseline.true &lt;- round(baseline.test + qt(p = (1-Conf.Level)\/2, df = Reliability.N - 1, lower.tail = F)*TEM, 2)\r\n\t\r\n\t# create a difference score\r\n\tdf$Pre.Post.Diff &lt;- with(df, post.test - baseline.test)\r\n\t\r\n\t# create confidence intervals around the difference score\r\n\tdf$LowCI.Diff &lt;-  round(df$Pre.Post.Diff - qt(p = (1-Conf.Level)\/2, df = Reliability.N - 1, lower.tail = F) * sqrt(2) * TEM, 2)\r\n\tdf$HighCI.Diff &lt;-  round(df$Pre.Post.Diff + qt(p = (1-Conf.Level)\/2, df = Reliability.N - 1, lower.tail = F) * sqrt(2) * TEM, 2)\r\n\t\r\n\t# Summary Stats of Change\r\n\t\r\n\tPre.Post.Summary.Stats &lt;- df %&gt;% \r\n\t\t\t\t\tgroup_by(groups) %&gt;%\r\n\t\t\t\t\tsummarize(\r\n\t\t\t\t\t\tMean = mean(Pre.Post.Diff),\r\n\t\t\t\t\t\tSD = sd(Pre.Post.Diff))\r\n\t\t\t\t\t\r\n\t# SD of the response\r\n\tdiff &lt;- as.data.frame(Pre.Post.Summary.Stats)\r\n\tsd.response &lt;- sqrt(abs(diff&#x5B;1,3]^2 - diff&#x5B;2,3]^2))\r\n\t\r\n\t# Proportion of Response\r\n\t\r\n\tmean1 &lt;- diff&#x5B;1,2]\r\n\tmean2 &lt;- diff&#x5B;2,2]\r\n\t\r\n\tprop.response.group.1 &lt;- ifelse(SWC &gt; 0, 100-pnorm(q = SWC,\r\n\t\tmean = mean1,\r\n\t\tsd = sd.response)*100, pnorm(q = SWC,\r\n\t\tmean = mean1,\r\n\t\tsd = sd.response)*100)\r\n\t\r\n\tprop.response.group.2 &lt;- ifelse(SWC &gt; 0, 100-pnorm(q = SWC,\r\n\t\tmean = mean2,\r\n\t\tsd = sd.response)*100, pnorm(q = SWC,\r\n\t\tmean = mean2,\r\n\t\tsd = sd.response)*100)\r\n\t\r\n\tlist(Data = df, \r\n\t\tOutcome.Stats = Pre.Post.Summary.Stats, \r\n\t\tStdev.Response = sd.response, \r\n\t\tPerct.Responders.Group1 = paste(round(prop.response.group.1, 2), &quot;%&quot;, sep = &quot;&quot;),\r\n\t\tPerct.Responders.Group2 = paste(round(prop.response.group.2, 2), &quot;%&quot;, sep = &quot;&quot;)\r\n\t)\r\n\t\r\n}\r\n\r\n<\/pre>\n<p>Now we are ready to use the <strong>outcome <\/strong>function on our simulated intervention data set.<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n\r\noutcome(baseline.test = study.data$baseline, \r\n\t\tpost.test = study.data$post.intervention, \r\n\t\tgroups = study.data$group,\r\n\t\tsubject.IDs = study.data$subject, \r\n\t\tTEM = 4.83, \r\n\t\tSWC = 0.756,\r\n\t\tReliability.N = 20, \r\n\t\tConf.Level = 0.95)\r\n<\/pre>\n<p><a href=\"https:\/\/optimumsportsperformance.com\/blog\/wp-content\/uploads\/2019\/01\/Screen-Shot-2019-12-20-at-9.49.30-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1571\" src=\"https:\/\/optimumsportsperformance.com\/blog\/wp-content\/uploads\/2019\/01\/Screen-Shot-2019-12-20-at-9.49.30-PM.png\" alt=\"\" width=\"773\" height=\"577\" srcset=\"https:\/\/optimumsportsperformance.com\/blog\/wp-content\/uploads\/2019\/01\/Screen-Shot-2019-12-20-at-9.49.30-PM.png 773w, https:\/\/optimumsportsperformance.com\/blog\/wp-content\/uploads\/2019\/01\/Screen-Shot-2019-12-20-at-9.49.30-PM-300x224.png 300w, https:\/\/optimumsportsperformance.com\/blog\/wp-content\/uploads\/2019\/01\/Screen-Shot-2019-12-20-at-9.49.30-PM-768x573.png 768w, https:\/\/optimumsportsperformance.com\/blog\/wp-content\/uploads\/2019\/01\/Screen-Shot-2019-12-20-at-9.49.30-PM-624x466.png 624w\" sizes=\"auto, (max-width: 773px) 100vw, 773px\" \/><\/a><\/p>\n<p>Similar to our test-retest function, the results are returned as a list. Let&#8217;s look at the results in more detail:<\/p>\n<ul>\n<li>The first element of the list provides a table of our original data, except we have a few new columns. First we see that we have Low and High Confidence Interval columns (in this case, these columns represent 95% CI, since that is what I specified when I ran the function). These confidence intervals are specific to the baseline test score. They are important for us to consider because when measuring an athlete we can never be truly confident that the performance they produced is their <em>true<\/em> performance (due to a variety of factors and, in particular, biological variability). Thus, the function uses the TEM from the test-retest trial to calculate the confidence interval around the athletes&#8217; observed baseline scores. Finally, the last three columns provide us with the post-pre score differences and 95% CI around those difference scores for each individual athlete.<\/li>\n<li>The second element of list gives us the summary statistics for each group based on how they performed in the trial. In this element, we can see that the experimental group (Group 1, strength training-only group) observed a larger improvement in vertical jump height, on average, following 8 weeks of training, compared to the control group (Group 2, endurance training-only group). <strong><em>TECHNICAL NOTE:<\/em> R automatically sorted the two groups alphabetically. As such, even though Group 1 (the experimental group) was first in the original data set, it comes out as being &#8220;Group 2&#8221; in the output.<\/strong><\/li>\n<li>The third element is the standard deviation of individual responses. Hopkins<sup>6<\/sup> suggest that this standard deviation represents the amount that the mean effect of the intervention is seen to vary between individuals. This standard deviation will be used in the fourth and fifth elements to help understand the individual responses observed within groups.<\/li>\n<li>The fourth and fifth elements of the list display the percentage of <em>responders<\/em> to the treatment. This proportion of response is calculated by evaluating the variability in change scores from the intervention (standard deviation of individual responses) and the specified SWC (from our test-retest trial)<sup>2<\/sup>. In the case of our simulated data set we see that Group 1 (remember, this is the endurance group, since R organized the data by group alphabetically)\u00a0 had a lower response than Group 2 (the strength training group).<\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline;\"><strong>Wrapping Up<\/strong><\/span><\/p>\n<p>When analyzing data in the applied sport science setting it is important to establish measures such as TEM and SWC so that you can have a higher amount of certainty that athletes are progressing and making true performance improvements. In this blog post, I showed a very simple way to analyze such data while also showing that some basic R coding can be used to produce functions that make our job easier and provide quick results (and quick results are important in the applied setting where decisions between games need to be made in a timely fashion).<\/p>\n<p>Two future considerations:<\/p>\n<ol>\n<li>The training intervention example I provided may not be terribly realistic in many applied sports settings. For example, rarely will a coach allow the staff to separate players into two groups that train in different ways. In a future blog post, I hope to provide some code for analyzing individuals when serial measurements are taken across a season.<\/li>\n<li>I didn&#8217;t provide any visualization of the data. Data visualization is not only critical to understanding the data you are analyzing but also important for presenting your data to coaches, managers, and other practitioners. I hope to address data visualization approaches in a future blog post.<\/li>\n<\/ol>\n<p><span style=\"text-decoration: underline;\"><strong>References<\/strong><\/span><\/p>\n<ol>\n<li>Hopkins WG, Marshall SW, Batterham AM, Hanin J. (2009). <strong>Progressive statistics for studies in sports medicine and exercise science<\/strong>. <em>Med Sci Sports Exer<\/em>, 41(1): 3-12.<\/li>\n<li>Swinton PA, Hemingway BS, Saunders B, Gualano B, Dolan E. <strong>A statistical framework to interpret individual response to intervention: Paving the way for personalized nutrition and exercise prescription<\/strong>. <em>Front Nutr<\/em>, 5(41): 1-14.<\/li>\n<li>Turner A, Brazier J, Bishop C, Chavda S, Cree J, Read P. (2015). <strong>Data analysis for strength and conditioning coaches: Using excel to analyze reliability, differences, and relationships<\/strong>. <em>Strength Cond J<\/em>, 31(1): 76-83.<\/li>\n<li>Hopkins WG, Batterham AM. (2016). <strong>Error rates, decisive outcomes and publication bias with several inferential methods.<\/strong> <em>Sports Med<\/em>, 46(10): 1563-1573.<\/li>\n<li>Buchheit M. (2014). <strong>Monitoring training status with HR measures: Do all roads lead to Rome?<\/strong> <em>Front Phys<\/em>, 5(73): 1-19.<\/li>\n<li>Hopkins WG. (2015). <strong>Individual responses made easy<\/strong>. <em>J Apply Physiol<\/em>, 118: 1444-1446.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Intro Evaluating whether an athlete has or has not improved in some key performance indicator is critical to understanding the success of a prescribed training or rehabilitation program. In the applied setting, practitioners are faced with \u00adN = 1 decisions as they are training or rehabilitating individual athletes, each of whom is unique in their [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43,42],"tags":[],"class_list":["post-1428","post","type-post","status-publish","format-standard","hentry","category-sports-analytics","category-sports-science"],"_links":{"self":[{"href":"https:\/\/optimumsportsperformance.com\/blog\/wp-json\/wp\/v2\/posts\/1428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/optimumsportsperformance.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/optimumsportsperformance.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/optimumsportsperformance.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/optimumsportsperformance.com\/blog\/wp-json\/wp\/v2\/comments?post=1428"}],"version-history":[{"count":42,"href":"https:\/\/optimumsportsperformance.com\/blog\/wp-json\/wp\/v2\/posts\/1428\/revisions"}],"predecessor-version":[{"id":1572,"href":"https:\/\/optimumsportsperformance.com\/blog\/wp-json\/wp\/v2\/posts\/1428\/revisions\/1572"}],"wp:attachment":[{"href":"https:\/\/optimumsportsperformance.com\/blog\/wp-json\/wp\/v2\/media?parent=1428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/optimumsportsperformance.com\/blog\/wp-json\/wp\/v2\/categories?post=1428"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/optimumsportsperformance.com\/blog\/wp-json\/wp\/v2\/tags?post=1428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}