Aerobic Training

7 min read

Continuing on the previous post, how can I determine if my aerobic capacity has improved over the past year? The easy way would be to directly compare how my pace changes over time, if there is no improvements to the pace at the same heartrate then my training would have been ineffective. The challenge comes when we consider that there are various factors which can impact running pace: how hot the temperature is that day, the route I am taking (elevation?), distance of run and also the shoe. Most importantly of all, I changed from Fitbit to Garmin, which would be the single biggest change seeing that the data I have collected before the switch would be useless for comparison. 

To fix this, I could force myself to run the same route with the same shoe at the same time of day and weather conditions for an extended period of time. But this would be hard to control and any single factor being off would complicate the comparison, hence I turned to ChatGPT for help. Who would be better to figure out a way to extract the aerobic improvements other than an AI agent who can absorb large amounts of data and formulate the different variables into something that actually makes sense? 

The headline numbers thrown out looks promising. 

Analysis Test Number of Runs Estimated Improvements
Fitbit Only 52

+8.2%

All Runs 60 +6.9%
Garmin Only 28 +8.5%

Data Cleaning

For a simplier comparison, we are not interested to include tempo runs or intervals training where the anaerobic system plays a larger part. As a first step, any runs which included the keywords of tempo/hard/intervals in the description were removed. To factor for runs where the proper description might not have been entered, a second condition of checking the average heartrate was also included. The threshold was set at 162bpm, anything that was higher than this threshold would be disregarded. 

This striped out a lot of the recent faster runs I did with other runners, which might have given a false sense of improvement as the heartrate would be much higher than my usual runs. Shorter runs below 20 minutes were also removed, as these would be too short for the heartrate to settle to a steady state pace. There are not too many of these runs anyways. 

Some formulas used for calculations: 

vi=di/tiv_i=d_i/t_i
pi=60/vip_i=60/v_i
yi=ln(vi)y_i=ln⁡(v_i )

Standardizing Runs and Building a Model

The heavy lifting of analyzing all the run datapoints was left to ChatGPT, after which this formula was derived.

(ln(vi)=β0+ft(Ti)+fh(HRi)+fd(lnDi)+βgln(1+Gi)+γt(i)+δs(i)+εi)(ln⁡(v_i )= β_0 + f_t (T_i )+f_h (HR_i )+f_d (ln⁡D_i) +β_g ln⁡(1+G_i )+γ_t (i) +δ_s (i) +ε_i )

With the constants found, this model can then be used to predict how I would perform when most variables are fixed. As I collect more run data over time across different routes/paces/heartrate, the model would become more accurate in predicting my pace.

x(t)=1ni=1nx(t,Zi)\bar{x}(t) = \frac{1}{n} \sum_{i=1}^{n} x(t, Z_i)
μ^(t)=x(t)β^\hat{\mu}(t) = \bar{x}(t)^\top \hat{\beta}
v^(t)=eμ^(t)\hat{v}(t) = e^{\hat{\mu}(t)}

All runs were averaged and summed up to determined the predicted run pace. With this information, we can then compare two points over time to determine the performance change in percentage.

I(t)=100exp[μ^(t)μ^baseline]I(t) = 100 \exp[\hat{\mu}(t) – \hat{\mu}_{\text{baseline}}]
Δ=(xRxB)β^\Delta = (\bar{x}_R – \bar{x}_B)^\top \hat{\beta}
100(eΔ1)100(e^{\Delta} – 1)

The initial run would be deemed as the baseline of 100 and a score of 106 would indicate a 5% improvement over the baseline. To start, we are using only the Fitbit data which was the most abundant dataset. With about 52 individual runs which fit the criteria, the model returned a 8.2% improvement in speed from September 2025 to July 2026. In other words, a gain from 7:50/km to 7:14/km when keeping to Zone 2 heartrate only. Interestingly, ChatGPT picked up a distinction between the first phase of training and the later stages of training.

TestFirst 3 monthsLast 3 months
Runs931
Avg Distance7.1KM12KM
Median Distance4.97KM10.98KM
Avg Duration54.8 min88.7min
Avg Pace7:38min/km7:20min/km
Avg Heartrate147bpm147bpm
Avg Distance in prior week6KM29.5KM

This table clearly shows the difference in run distance and pace at the beginning and end of the period in question, which neatly ties in with the effort I have invested into serious running. It is true that running more in mileage per week is useful for building the aerobic base, the results above would prove this especially considering that the heartrate was exactly 147bpm throughout. 

Post Garmin Switch

Throwing in the datapoints recorded after switching to Garmin, this is also split into 2 groups which is the first 3 weeks and most recent 3 weeks to date. Perhaps the heartrate tracker on the Garmin is recording differently from Fitbit or it might just be a coincidence, the average heartrate across all runs post switch now registers as 148bpm, a slight increase compared to Fitbit. 

There are a total of 28 eligible datapoints, of which 20 was with my new daily trainers. I do feel that the new shoe gives me a performance advantage over my other well used shoes, thus we need to be careful in splitting the contributions of the shoe from the aerobic gains. ChatGPT decided to use a different formula with a linear date trend due to the shorter time period compared to the Fitbit tracking window.

ln(vi)=β0+βtT30,i+βhHi+βdLi+βgQi+γtime(i)+δshoe(i)+εi\ln(v_i) = \beta_0 + \beta_t T_{30,i} + \beta_h H_i + \beta_d L_i + \beta_g Q_i + \gamma_{\text{time}(i)} + \delta_{\text{shoe}(i)} + \varepsilon_i

The model throws out a run speed improvement of 8.5%, in other words jumping from 7:20min/km to 6:45min/km. Striping out datapoints which used older shoes, the speed improvement inched up to 9.6%, which confirms that the improvement can be attributed to aerobic base gains. 

How much is Fitbit overcounting distances

With the pace gains estimated, this unlocks the ability to determine how much more distance is Fitbit calculating over Garmin. Using the model to hold other variables such as shoe/heartrate/elevation constant, the estimated inflation is approximately 4.6%. Not fantastic but I’m glad that this is lower than the figure calculated for my aerobic improvements. 

Stability Shoe vs Race Shoe

Before I started aerobic base training seriously, most of my runs were done in the Kiprun KD900, which is marketed as a speedier shoe due to its lightweight design and PEBA based foam. This is way lighter than the Anta PG7 stability shoe which I used to absorb Zone 2 miles. The Anta shoe is build like a tank, barely having any wear and tear to the outsole nor showing any signs of damage after more than 500KM, other than the fact that the white color is not pale yellow from sun exposure and remnants of mud stuck in the upper. Dirt stuck there is impossible to remove, the more you try to rub it off the more it seeps into the fabric. Anyways to compare these 2 shoes, not that its even a fair comparison, there is a 0.6% advantage in favor of the Kiprun. No surprises there but this is a commendable result for the Anta given how small the difference is.

Pitting the new Xtep daily trainer against the Anta tells a different story, the advantage now widens to 4% in favor of the Xtep shoe. This number is probably not too accurate since I barely use the Anta shoe for my runs after buying the Xtep daily trainer. As time goes and I accumulate more runs in the Anta shoe, I expect to see this difference shrink. 

Leave a comment

Your email address will not be published. Required fields are marked *