Blog post by Marco Altini
EDIT: VO2max estimation is now available for cyclists training with heart rate and power, please refer to this article for details.
We launched a new feature under the Insights section of HRV4Training: VO2max estimation. This is a topic I've been working on during my PhD, and I will detail our approach and algorithms below. Additionally, this post covers the following:
What is VO2max?
Cardiorespiratory fitness is defined as the ability of the circulatory and respiratory systems to supply oxygen during sustained physical activity. Cardiorespiratory fitness is not only an objective measure of habitual physical activity, but also a useful diagnostic and prognostic health indicator for patients in clinical settings, as well as healthy individuals . While cardiorespiratory fitness is considered among the most important determinants of health and wellbeing, in this post, our interest is purely related to performance in sports. So everything that follows should be considered in this context.
Current practice for CRF assessment is direct measurement of oxygen volume during maximal exercise, or VO2max. VO2max is the gold standard and is regarded as the most precise method for determining cardiorespiratory fitness . For more on VO2max and the science of VO2max estimation, jump to the third section below: "science behind VO2max estimation".
What do you need to be able to use the VO2max estimation in HRV4Training?
For reasons that will be clear after reading the "Science behind VO2max estimation" section below, a Strava account and training heart rate (HR) data are required for this feature to work. Additionally VO2max estimation will work only for runners (multisport is also fine, as long as you have running data). To recap:
Science behind VO2max estimation
As mentioned above, current practice for CRF assessment is direct measurement of oxygen volume during maximal exercise, or VO2max. VO2max is the gold standard and is regarded as the most precise method for determining cardiorespiratory fitness .
There are a series of practical limitations to VO2max testing, for example the need for specialized personnel, expensive medical equipment, high motivational demands of the subject, health risks for subjects in non-optimal health conditions (which limits applicability), and so on . Even when testing conditions are not a problem, performing a maximal test until exhaustion just to monitor fitness level might interfere with your current training program.
For these reasons, scientists have been working on submaximal tests, or tests that do not require maximal effort. Submaxmial tests have been developed already more than 60 years ago to estimate VO2max during specific protocols while monitoring HR at predefined workloads . Basically, these tests rely on the inverse relation between fitness and HR, with higher HR typically associated to lower fitness level and viceversa. Contextualizing heart rate (HR), e.g. determining the HR during specific activities, was a good step forward in terms of practical applicability, compared to maximal tests. However, some limitations still apply: the test needs to be re-performed every time that fitness needs to be assessed, still a pre-defined protocol is required.. etc.
Ideally, we would like to keep track of VO2max or cardiorespiratory fitness without the need to perform a specific test. As technology got better and we have plenty of sensors able to acquire accelerometer, GPS and HR data in free-living, during my PhD I've developed several machine learning models that would do just that, for the general population, so without even including exercise data (basically HR while walking at different intensities/locations as a predictor of fitness, see [5, 6, 7] for details).
My results as well as attempts from others that tried to estimate VO2max from rest data, for example HR or HRV, clearly show that using only rest data is insufficient to estimate VO2max with good accuracy . This is the reason why we haven't introduced these models before, and also why the feature is enabled only for users using Strava and a HR monitor during training. See for example the relation between HR at rest, HRV at rest and VO2max in a sample of 40 people which I collected during my PhD studies:
We can see very weak relations, I would say no relation between rMSSD and VO2max in this dataset, and a week inverse relation between resting HR and VO2max. We know that a lower HR is associated with higher fitness level, but this relation is not very strong.
Workout (& Strava) data to the rescue
While there are some associations between HRV and VO2max reported in literature, as well as stronger associations between resting HR and VO2max, these relations are still too weak to be used to predict VO2max effectively from rest data only . As soon as the stressor is a bit stronger, for example HR data while walking, the relation between submaximal HR and VO2max becomes much stronger [5-7].
Needless to say, HR data while running at a certain intensity is pretty much the best predictor of VO2max we can get, which is why submaximal protocols involving higher intensity activities, typically perform better than other protocols. Here is an example using HR data while running at 10 km/h, so an easy pace, and VO2max. I've also plotted quantiles to show more clearly how a lower sub-maximal HR is typically associated with higher VO2max.
The plot above shows for example that subjects that could keep their HR below 156 bpm while running at 10 km/h, show much higher VO2max with respect to runners that were already above 178 bpm. This is the whole principle behind submaximal HR testing.
Note that VO2max is highly dependent on anthropometrics data (weight, gender & age above all), and therefore what we are looking for here is a decent relation between submaximal HR and VO2max, which allows the model to significantly improve on top of what we could already predict using basic anthropometrics data, and we definitely do not expect a very strong linear relation between any two variables, given the more complex dependencies involved. Nevertheless when introducing and combining the right variables, we can obtain pretty good results.
Since we can now access workouts data thanks to Strava's APIs, we created models that use your running pace and HR, as well as your anthropometrics data, to predict VO2max with much better accuracy than using just rest HR & HRV.
In particular, using these data and building a model using as predictors body weight, age & gender we obtain R^2 = 0.35 and a standard error of the estimate of 6 ml/kg/min, meaning that our model can explain 35% of the variance in VO2max.
When adding additional variables captured via Strava, the model explains 70% of the variance, with a standard error of the estimate of 4 ml/kg/min, which is a 50% improvement in accuracy. In particular, I used BMI, gender and a combination of a user pace and HR as predictors. Combining a user pace and HR during a workout provides the most important information, contextualized HR, that allows us to model the relation between submaximal HR and fitness, as done for ages in research, but without requiring any specific test to be performed. Especially in "fitness apps" such as HRV4Training, where the population of runners is probably more homogeneous than the general population, including HR and pace data is key to predict more accurately VO2max. When including resting HR and HRV, I haven't seen any significant improvement in accuracy.
Before implementing the feature in the app, I've run a quick analysis on consumer generated data to see what kind of results we would get with this approach. This analysis includes 350 users who: 1) linked HRV4Training to Strava 2) trained with HR at least 15 times 3) ran mainly non-hilly runs. Here is what we get:
Below you can see two "case studies". One line represents me, currently at 49 ml/kg/min, while the second line towards the highest VO2max is a friend and much better runner, Massimiliano Milani, who just a couple of months ago ran his marathon PR in 2:30 (44 years old). While HRV4Training is used mainly by athletes, the percentage of users that can run at Massimiliano's level is probably very small, and while this is anecdotal evidence, the VO2max estimate seems to capture quite clearly differences in fitness & performance (we get a 61 ml/kg/min for his data):
According to Massimiliano's Garmin, his current VO2max is 64 ml/kg/min. The only way to find out who's right is probably to get Massimiliano to do a VO2max test :)
Limitations & considerations
In my opinion there are several limitations to VO2max testing, and even in using VO2max as a marker of fitness & performance. The most obvious limitations are the dependency of the VO2max test on the type of test performed, and body-weight normalizations. While VO2max is the gold standard, and by definition is the only way to determine fitness level, the exercise protocol performed highly influences results. If you do a bike test and a treadmill test, you’ll get two different results. And differences can be big, with running VO2max typically being higher. One of the reasons is that biking tests are often limited by muscle fatigue. However, such tests are the most commonly performed in research, since they are considered more practical and easier for participants that are not used to do sports (e.g. in more medical oriented studies).
One of the major issues with VO2max is the total lack of agreement on body weight normalizations. VO2max is reported most of the times normalized by body weight, however the relation between body weight and oxygen uptake is activity dependent. Again, literature on different normalizations (and allometric coefficients) for activity-specific body weight normalization is inconsistent. Especially when biking, the activity is non-weight bearing, which means the impact of body weight on oxygen uptake is very different compared to weight bearing activities such as running. VO2max categories are based on normalized units (i.e. VO2max/kg), however they don't take into account the type of test performed to obtain VO2max, often over-correcting results. Not-normalizing, while correct in principle, hinders interpretability since tables for different weight ranges don't exist.
Additionally, there are extra limitations associated to our specific modeling & input data. For example, we use pace and HR data collected from Strava, and therefore if there are issues with your training data, or your HR monitor doesnt work properly, your estimate might be inaccurate. If you use a wrist based HR monitor, make sure to wear it tight.
This being said, I've eventually decided to stick to VO2max (in the past I tried to propose alternatives, without much success). My main motivations for using VO2max instead of other custom made markers are the following:
I hope you will enjoy the new feature!
 D. Lee, E. G. Artero, X. Sui, and S. N. Blair, “Review: Mortality trends in the general population: the importance of cardiorespiratory fitness,” Journal of Psychopharmacology, vol. 24, no. 4 suppl, pp. 27–35, 2010.
 L. Vanhees, J. Lefevre, R. Philippaerts, M. Martens, W. Huygens, T. Troosters, and G. Beunen, “How to assess physical activity? how to assess physical fitness?” European Journal of Cardiovascular Prevention & Rehabilitation, vol. 12, no. 2, pp. 102–114, 2005.
 V. Noonan and E. Dean, “Submaximal exercise testing: clinical application and interpretation,” Physical Therapy, vol. 80, no. 8, pp. 782–807, 2000.
 P. O. Astrand and I. Ryhming, “A nomogram for calculation of aerobic capacity (physical fitness) from pulse rate during submaximal work,” Journal of Applied Physiology, vol. 7, no. 2, pp. 218–221, 1954.
 M. Altini, P. Casale, J. Penders, O. Amft, "Cardiorespiratory fitness estimation in free-living using wearable sensors" accepted for publication in Artificial Intelligence in Medicine. Full paper. 2016.
 M. Altini, P. Casale, J. Penders, O. Amft, "Cardiorespiratory fitness estimation using wearable sensors: laboratory and free-living analysis of context-specific submaximal heart rates". Accepted for publication in the Journal of Applied Physiology. Full paper. 2016.
 M. Altini, P. Casale, J. Penders, O. Amft, "Personalized Cardiorespiratory Fitness and Energy Expenditure Estimation Using Hierarchical Bayesian models" accepted for publication in the Journal of Biomedical Informatics. download pdf. 2015.
 Esco, Michael R., et al. "Cross-validation of the polar fitness testTM via the polar f11 heart rate monitor in predicting vo2 max." Journal of Exercise Physiology 14 (2011): 31-37.
Register to the mailing list
and try the HRV4Training app!
1. Context & Time of the Day
3. Paced breathing
4. Orthostatic Test
5. Slides HRV overview
1a. Acute Changes in HRV
1b. Acute Changes in HRV (population level)
1c. Acute Changes in HRV & measurement consistency
1d. Acute Changes in HRV in endurance and power sports
2a. Interpreting HRV Trends
2b. HRV Baseline Trends & CV
3. Tags & Correlations
4. Ectopic beats & motion artifacts
5. HRV4Training Insights
6. HRV4Training & Sports Science
7. HRV & fitness / training load
8. HRV & performance
9. VO2max models
10. Repeated HRV measurements
11. VO2max and performance
12. HR, HRV and performance
13. Training intensity & performance
14. Publication: VO2max & running performance
Camera & Sensors
1. ECG vs Polar & Mio Alpha
2a. Camera vs Polar
2b. Camera vs Polar iOS10
2c. iPhone 7+ vs Polar
2d. Comparison of PPG sensors
3. Camera measurement guidelines
4. Validation paper
5. Android camera vs Chest strap
6. Zoom HRV vs Polar
1. Features and Recovery Points
2. Daily advice
3. HRV4Training insights
4. Sleep tracking
5. Training load analysis
6a. Integration with Strava
6b. Integration with TrainingPeaks
6c. Integration with SportTracks
6d. Integration with Genetrainer
6e. Integration with Apple Health
6f. Integration with Todays Plan
7. HRV4T Coach advanced view
8. Acute HRV changes by sport
9. Remote tags in HRV4T Coach
10. VO2max Estimation
11. Acute stressors analysis
12. Training Polarization
13. Custom desirable range / SWC
14. Lactate Threshold Estimation
1. Intro to HRV
2. HRV normal values
3. HRV by sport
4. HRV, strength & power
5. AngelSensor & HRV
6. HRV 101: How to
7. Top 5 most read articles
8. HRV normalization by HR
9. How to use HRV, the basics