17 min read

Philly Marathon 2017: Training Plan Data Analysis

Marathons hurt and wind is the embodiment of all that is evil. That’s what I’ve learned from the two marathons I’ve run thus far. My case in point:
1st Marathon ever:

Not much has changed:

So, last year, I followed the 18-week, 55-70 mile peak week plan from Pete Pfitzinger’s Advanced Marathoning. I blew up pretty bad around mile 20 to mile 22 (I don’t remember, exactly, as my mind was busy focusing on the fact that it. hurt.) This is apparently typical of first-time marathoners who aren’t experienced enough to know if/when they’ll hit the dreaded Wall and are typically not prepared to mentally and physically deal with it. And I was not. I fully remember my calves screaming and my hips almost fully tightening up in that last 10k, and from this I just assumed that maybe I just didn’t have the muscular endurance to last the whole race at a consistent pace. For the majority of the race, I felt I was going to be able to maintain the comfortably-hard 6:50 minute per mile pace until the finish, and then I entered the pain cave.

I decided to go with a higher mileage plan this year in hopes of remedying this, so I went with a sort-of ad-hoc modification based off of the 18 week/85 mile and 18 week/more than 85 mile plans from the same book, with most of the workouts taken as-is from the 85+ mile plan, with some extra miles here and there on some runs depending on how I felt at the time.

Table 1: Total Number of Runs
Marathon Name Count
Philly 2016 114
Philly 2017 153

There were a lot more runs, and not just miles, in this year’s prep. This was pretty much all due to the double days (all of which consisted of double recovery runs), as well as the warm up and cool downs of two tune-up race workouts that, for some reason, I decided to count as separate activities. And even though I missed some days completely due to some injuries, I still had almost 40 more runs in this time around. I got hit with a real sharp quad pain around the middle of September, which reared its ugly head again in October, forcing my oh-so-stubborn self to take some days off. I believe that I sustained this injury thanks to my impatience that led to me running my “easy” runs too hard while also not having as long of a base-building period prior to this marathon plan compared to last year.


Let’s start off with a simple histogram of how many miles I ran throughout each marathon prep.

Just like last year, I again can see the actual marathon itself and my one 24-mile run, the longest Long Run of the plan, all the way to the right of the plot. It also looks like I had fewer runs that were between 16-18 miles and more runs between 22-24 miles this year. This distribution is, like lasy year, right/positively-skewed, with the majority of the runs being less than 12 miles. Also, as expected after choosing a higher mileage plan, the 2017 histogram has taller bars with respect to 2016, indicating a larger number of runs overall, with bars for the same distance being noticeably higher in 2017 compared to 2016.

The majority of my runs in this 2017 training block were around 4-6 miles, with the next highest frequency being from 10-12 miles. The fact that most of my runs were from 4-6 miles is not surprising when remembering that the majority of my runs were recovery runs, which went from a minimum of 3 miles up to a maximum of 7 miles, for the most part. Sometimes I combined two recovery runs into one run due time constraints, and more-so to my regrettable obsession with hitting as much of my planned mileage as possible at the expense of truly recovering from hard efforts.

Table 2: Total Number of Runs by Run Type
Marathon Name GA Long Misc ML Race Recovery Workout
Philly 2016 23 10 NA 23 1 39 18
Philly 2017 25 11 6 21 1 72 17

The above table shows that for 2017, I actually had less workouts and middle long runs (runs that’re longer than a “general aerobic” run but shorter than a long run), but more long runs, recovery runs, and general aerobic runs (If unfamiliar, just think of these a just a run for the sake of running, but with a bit more effort than recovery runs). This makes me think that, had I followed the plan correctly, I would’ve been taking it a bit easier overall in this build-up thanks a higher number of easier runs. I believe the lower number for total workouts was due to me missing it thanks to my quad injury. For example, let’s look at those runs that fall under Misc:

Table 3: Miscellaneous Runs
Run Name Date Run Category
mental health jog 2017-09-11 Misc
definitely hurt quad yesterday 2017-09-13 Misc
cool down 2017-10-09 Misc
Afternoon warm up 2017-10-09 Misc
cool down 2017-10-20 Misc
warm up 2017-10-20 Misc

Four of these runs were the warm up and cool downs to some tune-up race workouts, but the other 2 were runs I kept short due to injury, one physical, one mental. As mentioned earlier, I strained my quad twice in this build-up. I took a couple of days off in each instance, as I started to realize that I didn’t have to hit every run on the schedule during the span of this plan and that pushing through legitimate injury and not just some soreness or a niggle could have some legitimate long-term consequences. I can see the periods I took off were highlighted by the empty spaces in the middle of September and October when looking at a plot of runs over time.

That very tiny bar around September 14th was where I hurt my quad for the first time within a mile and a half of the planned run for that day, with the run the following day being cut short after 10 miles of a planned 12 miles when the pain came biting back (again, due to my stubbornness for not missing runs). Then again, in the second half of October, the same pain resurfaced right before a tune-up race workout, so I took two days off to be safe and avoid any further aggravation of my quad so as to not miss another workout.

Next, I wanted to look at the quick summary of both marathon plans’ overall distance data:

Table 4: Statistical Summaries of Training Blocks
Marathon Name Mean Median StdDev Min Max Count
Philly 2016 9.984035 10.00 5.237604 1.0 26.27 114
Philly 2017 8.688039 7.01 5.163569 0.5 26.41 153

So, since I have a skewed distribution, I’d want to look at median to compare measures of center. I can see the median number of miles ran in a run for 2017 was 7 miles, which is lower than 10 miles for last year (this year’s mean was also lower), which I can infer was due to the higher number of the shorter recovery runs this time around, especially during the double-run days. And again, we see that the maximum distance here is, of course, the actual marathon, even though something must have been up with my GPS watch or the course, as it says I ran about 0.15 miles more-so than the actual race distance. Like I needed that.

I then looked at the total number of miles ran each month, with an initial expectation to see the total rise month by month as they had last year, with a drop in November coinciding with my taper.

Somewhat against what was expected, my total mileage in November was actually shorter this time around, while all other months in 2017 all in fact higher mileage totals. It makes sense in hindsight that September and October had a bit lower of total mileage than August, as August was the only month in which I did not take time off due to injury. But, I believe I also took some more days off in November this year because I was feeling quite fatigued and was worried I would go into the race too beat up, which I still think I did in the end (but it could’ve been worse, right?).

Table 5: Total Number of Runs in November
Marathon Name Count
Philly 2016 20
Philly 2017 15

Looks like I did make an effort to rest up a bit more this year, so maybe I started to learn from some of my mistakes.


Last year, my cadence generally increased month over month, and ended up averaging between 170 and 180.

I had a much more consistent cadence this year, as indicated by the smaller boxes for each month, and also my median average cadence for each month in 2017 was higher than the highest median average cadence from last year, with the exception of November, which, overall, is good. This suggests my running form has become more efficient. But, there was a decrease in average cadence over those last 2 months. Could this have been due to fatigue? Or to due more speed workouts which included recovery intervals, during which I was quite content to just plod on through, bringing the average cadence down. Either way, my median average cadence was consistently in the high 170’s, which is an improvement compared to 2016.

Also, I have some significant outliers in those first two months, which I again would assume were mainly recovery runs, as I was mainly concerned with keeping my heart rate down so I could actually recover on them than I was with making sure my cadence was optimal.

Table 6: 10 Runs with Lowest Average Cadence
Run Name Date Average Cadence
Tempo run turned into tempo intervals 2017-07-18 162
4 mi tempo intervals 2017-08-01 164
lt run 2017-08-16 166
mp long run 2017-07-29 173
Morning Recovery to move car 2017-08-07 174
evening 2nd recovery on treadmill 2017-07-19 175
evening outdoor recovery 2017-08-14 175
Evening recovery 2017-08-09 176
indoor morning recovery 2017-08-14 177
Morning Run 2017-07-28 178

Huh, so my tempo/lactate threshold runs, where I would’ve hoped my cadence would’ve been higher to better prepare me to run more efficiently at a quicker pace during the actual marathon, were the only runs with an average cadence lower than 170. This should instruct me to focus more on form and on picking up my pace during these types of workouts in my next build-up so as to better prepare myself to be a more efficient runner as my speed increases.

Heart Rate

Another metric to look at would be my average heart rate during runs over the course of my training. Compared to the rise of my average cadence, I would hope that my average heart rate would have decreased over time like last year, as my fitness should have increased as a result to higher mileage and an increasing number of workouts.

So, it looks like my average heart rate stayed pretty steady over the course of this plan, with possibly a minuscule increase there at the end. This may lend credence to my hypothesis that I went into the race too beat up, so my heart rate was higher than it would’ve been had I been fully rested. But, a more positive indication to note is that my average heart rate started and ended at a significant lower amount than last year. This indicates that, given most of my paces were similar to last year, I was more fit this year, which I would’ve hoped for, even considering I took pretty unstructured break from running from the end of 2016’s marathon up to this year’s base-building in May.

In contrast to cadence over time, I had more variance in average heart rate for each month in 2017. It’s a positive indicator that my average heart rate for the first four months of the plan were all lower, thisi year, and that I had less outliers this time (which menas I was more consistent). But, November 2017 shows a very similar median average heart rate, but quite a signiciant increase in variance. I would assume it’s due to more recovery runs at lower heart rates making these boxes taller for each month, as there would be more data points at the bottom-end of the boxes for those type of runs.

Now let’s look at cadence and heart rate by run type as well for comparisons.

Similar to the pattern of cadence over time for 2016 vs. 2017, I had a higher average cadence for each run type this year, and less variance among each run type, especially in the workout category. I see the my long runs had highest median cadence. This is something I can be happy with, as the length of these runs mimic the marathon the most, so I would hope to keep a higher and more consistent cadence through these runs. My recovery runs had the lowest cadence, which does not surprise me as I find it difficult to keep up cadence while my pace slows down. My workouts had the second lowest average cadence this year, but with the most outliers. From my experiences last year, where workouts had the lowest average cadence, I can be quite confident that the recovery jogs between intervals and tempos were the cause of this, similar to how in recovery runs I find it hard to keep up cadence while slowing down. This is one of the key factors I am working on in my spring marathon build-up.

Now, I will again look see if there’s a relationship between my average cadence and average heart rate.

Similar to last year, there is no concrete relationship here. But, we can note that there’s again more evidence of the higher average cadence overall, as most data points are above 170 steps per minute and hovering near 180 steps per minute. Also, recovery runs are more concentrated at lower average heart rate values.

We can now flip this run type analysis from cadence to heart rate.

Average heart rate decreased a bit this year for each type of run, but general aerobic runs increased in variety quite a bit. I would assume this is due to some of the middle-long runs that I wasn’t taking as easy as I should’ve been. Also, looking those higher outliers in the recovery runs, I can only assume are those more “beat-up” runs where I should’ve been skipping the run and fully recovering between harder efforts. But overall, I was much better at keeping my heart rate lower this year around during recovery runs, and while doing so at a relatively more consistent rate. My average workout heart rate was similar to last year, which is nice. These runs in the book have some suggested targets to hit, so it looks like I was able to do so.


Let’s now check out my average pace over time, split out by run type. I would hope that, similar to average heart rate, it would have decreased due to both better form and increased fitness compared to last year as well as hopefully compared to the beginning of this year. The decreased in outside temperatures may have also made it easier to run faster, as the body wouldn’t be so concerend with cooling itself off and could focus just of the physical demands of running.

It looks like the recovery runs slowed down the pace as I approached the midpoint of the plan, but sped back up a tad at the end. Overall, I kept them slower this year and more consistent, as noted by the less severe curvature. My other three types of runs were also slower this year, indicating that I got better at pacing myself it a bit easier during my runs this year. But I don’t think it was enough when considering the fatigue I felt this year. There was an uptick in the last third of the plan in general aerobic and middle-long runs, but not as gradual as the increase from last year. Long run paces were more consistent, with some decrease in speed as time went on, while workouts had a bit of a similar shape to last year but with a smoother curve.

It also looks like one could discern the different phases of workouts over time. I started with tempo runs, so I was going at a pretty quick pace with no rests, so the overall average pace was relatively pretty high. Then I moved into speed workouts, which involved intervals with recovery jogs between. I took the recovery pretty seriously, so I slowed down quite a bit, which looks to have brought the average pace down. Then, as I moved to more race-specific workouts, the pace began to pick up again.


Let’s see if my elevation gain had any affect on my average heart rate. I expect that it would, since a larger eleveation gain meant I was climbing more, which required more exertion from me as I wasn’t that adept at adapting my pace to account for the gradient increases and decreases.

There does seem to be a slight trend of a sort-of linear increase in heart rate after about 300 ft. of total gain in 2017. I’m not surprise to see the increase in average heart rate as elevation gain increased because of the change in required exertion, and as this also suggests longer runs which brings cardiac drift into play.

Also, it appears that Philadelphia and the Kelly Drive trails are flatter than Chalfont, as noted by the fact that most data points for 2017 are below 250 feet of total elevation gain. But, it’s also worth noting that the overall top four runs in terms of elevation gain were from 2017. I am certain that this was due to the fact that my longer runs in this year’s training block took me through Forbidden Drive and the Wissahickon Valley Park Trail, which involved rolling hills througout. So while there may have been some more gain in the earlier parts of my runs back in the suburbs, as I went longer on some nice trails and hills, my elevation gain significantly increased.

Indeed, at just under what would be the halfway point of a marathon, we see the start of a linear increase in elevation as distance increased. This is something I should keep in mind while planning my runs for the Pittsburgh marathon this May, which involves a sharp hill about halfway through the race and continues with rolling hills throughout the second half of the race. Yippee.


After looking at this data, I’d say I got better at running my recovery runs slower than last year, but it may not have been enough to fully get the benefits out of a ture recovery run. I also believe I ran my other runs a bit too hard, also delaying full recovery between hard efforts. I was able to get much more consistent with my paces, and improved my ability to maintain a lower heart rate at comparable paces. I also believe that my flatter training my have kept me from being to strong enough to hit hills hard enough during the race, and this forced me to slow down my pace compared to my original goal. I felt that I also lost some speed even though I improved my muscular endurance.

I think that having 2 marathons under my belt has now bolstered me to be able to listen to my body and to know what is needed to break that 3 hour marathon goal that I originally set for myself back in the beginning of 2016. I’m signed up for the Pittburgh marathon this upcoming May, and this marathon has a killer hill at the halfway point, and rolling hills for the rest of the race. This means I’m going to need to search out routes around me that incoporate similar terrain so I can get as race-specific training as possible. So, my goals for my current training block are to incorporate more hills, improve uphill and downhill running form, and to incorporate more strides to get more comfortable with faster leg turnover to get that speed back.

If you’ve actually read this far down and have any suggestions or questions, let me know on Twitter or GitHub.

The code for all plots and tables in this write-up can be found here, and the code for the cleaning and initial creation of the dataset here.