17

I am looking for an implementation (or a document that describes the actual algorithm) for the energy expenditure/VO2/EPOC calculation from the heart rate variability.

A few white papers about

  • Oxygen consumption estimation
  • Energy expenditure estimation
  • EPOC (Excess post-exercise oxygen consumption)
  • Training effect
  • Athlete's recovery analysis

can be downloaded here.

According to Garmin's webpage, the error is about 50% smaller than for the generic method.

While these are fascinating to read, they don't tell us much about how to actually calculate these values from heart rate data. All it says:

Neural networks were used to construct a model that derives VO2 from R-R intervals (time between successive heart beats), using respiration rate and on/off-response information.

Even though the normal heart rate monitors don't make the data available, there are cheap receivers for polar and ANT+ around that allow beat by beat monitoring, like this one www.sparkfun.com/products/8661 (for polar) or http://www.abra-electronics.com/products/WRL%252d08840-Nordic-USB-ANT-Stick.html (for ant+) https://code.google.com/p/hrvtracker/ (program)

The conventional estimation of caloric expenditure as a function of the heart rate can be found in this paper: Prediction of Energy Expenditure from Heart Rate Monitoring During Submaximal Exercise.

Nathan Wheeler
  • 8,310
  • 7
  • 41
  • 71
Dan
  • 181
  • 5
  • 3
    Given that they use neural networks as the main technology component, it might be difficult to scientifically explain the mapping (see "Disadvantages" in http://en.wikipedia.org/wiki/Artificial_neural_network) – FredrikD Nov 21 '12 at 13:40
  • 2
    Agreed, NNs are unpredictable. Either they work or they don't, but explaining why is another story. – Baarn Nov 21 '12 at 15:23
  • I sent a link to this question to one of the staff at Firstbeat, we will see if they answer :-) Personally, I have been using Firstbeat Athlete for almost 4 years now and I am very happy with the system. – FredrikD Nov 21 '12 at 16:36
  • 1
    I found the thesis of one of the Firstbeat people https://jyx.jyu.fi/dspace/bitstream/handle/123456789/13267/951391707X.pdf?sequence=1 – Dan Nov 22 '12 at 02:46
  • 1
    Equation (106) gives relative VO2 as a function of the relative heartrate from a fit. pVO2 = 1.459(pHR)2 - 0.49*pHR+0.04. It's difficult to follow what the EPOC model really does with all the hidden parameters. I don't think they use a learning NN in a watch. From having a short look at the thesis, it looks like they use it as a black box function for a fit. Maybe someone with more knowledge about NNs can comment. – Dan Nov 22 '12 at 02:55
  • 3
    From reading his thesis it seems they use sigmoid/logistic units, which are non-linear. However, he uses the neural network to extract the respiratory frequency from the heart rate time series. Which means they didn't use it to directly create the linear regression formula, but instead used it as basis for the model on which the linear regression is based. So could you perhaps explain what your goal would really be? Probably you don't have to bother with the same data processing if you have access to cleaned up heart rate data, you could simply use the formula you found. – Ivo Flipse Nov 22 '12 at 06:56
  • I'd like to get a general understanding for the algorithms and their limitations. I am still reading Saalasti's thesis, it seems he is using a NN and trains it on the data, which gives a model that is not easy to understand and impossible to reproduce without the original dataset. For example all he states about EPOC is EPOC=f(EPOC_{t-1}, intensity, Dt) (107), what is really going on is hidden in the model. I am looking for algorithmic descriptions together with empirically obtained values to calculate things like Training Effect, EPOC, etc. myself. – Dan Nov 22 '12 at 19:35
  • I voted to close this as you'll probably get a lot faster answer on the cs site http://cs.stackexchange.com/questions/tagged/neural-networks – Chris S Nov 27 '12 at 13:08
  • 1
    @ChrisS This is not a reason to have a question closed. If the OP want to have the question moved it should be his decision. There is nothing wrong with keeping the question here. – Baarn Nov 27 '12 at 21:10
  • @Informaficker it's voted on rather than his decision – Chris S Nov 29 '12 at 12:13
  • @ChrisS In this case it should be his decision as the question is on topic on both sites. That a question could receive better answers on another site should not be a reason to migrate it there. – Baarn Nov 29 '12 at 12:23
  • @Informaficker I don't care either way, but the op may get more chance of an answer on CS – Chris S Nov 30 '12 at 14:03
  • 3
    I posted the question here because I am interested in an algorithm that I can run on my own HR data. The NN is nothing but a black box that gives more or less unverifiable and maybe unstable output after training with a huge dataset. As I don't have access to this training dataset, understanding the NN is not too useful for me. I am more interested in the physiological model + usable algorithm that depends only on a few coefficients. It is easier to understand the limitations of such a model, too. – Dan Dec 01 '12 at 22:04
  • I found this paper: Can HRV be used to evaluate training load in constant load.(http://link.springer.com/content/pdf/10.1007%2Fs00421-009-1240-1) "HRV recovery, suggesting that post-exercise HRV may enable an objective evaluation of TL in Weld conditions. The Wrst 2-min recovery seems to give enough information on HRV recovery for evaluating TL." They use do not use neural netw. But Short-time Fourier transform with Matlab-software with data from Suunto t6 wristop computer. – Patrik Lindström Jan 03 '13 at 16:38
  • related: [How to calculate calories burned while running](How to calculate calories burned while running) – arober11 Jul 02 '15 at 17:08

2 Answers2

1

I've just started looking into this, being Fitness.SE's most upvoted and unanswered question.

I came across two articles:

  1. Towards VO2 monitoring: Validation of a heart rate based algorithm
  2. Instantaneous VO2 from a wearable device

They both seem to point toward having an actual algorithm rather than a neural network for calculating VO2 from heart-rate. Unfortunately, both are behind paywalls. Fortunately, I think I can get access to the first (IEEE) through my University. I will have to report back at a later time.


Towards VO2 monitoring: Validation of a heart rate based algorithm

In 2005, Firstbeat Technologies proposed a VO2- estimation based on the RR intervals instead of the HR (5). More recent studies continued searching for new improvements (6), but the question on how to accurately estimate the VO2 based on HR while avoiding individual laboratory calibration is still open. In this article, we propose a new algorithm for the estimation of the VO2 during a walking/running training session.

Fitness.SE doesn't support MathJax so this is going to be messy, but, the article goes about calculating VO2 in three not simple steps. First is that it estimates you VO2max through the formula:

VO2max = 56.363 + 1.921*NPAC - 0.831*Age - 0.754*BMI + 10.978*Sex;
where NPAC stands for NASA Physical Activity Class, BMI is in kg/m^2, Sex = 0 if Female, 1 if Male.

The execution starts as soon as the activity classifier detects a walking or running activity. The core algorithm is structured as a state-machine. In each state, an estimate of the normalized oxygen intake pVO2=VO2/VO2max from the normalized heart rate pHR=HR/HRmax is provided. More precisely, at time i, the transformation

pVO2(i) = f_k(pHR(i))

is applied, where f_k is one of two following models. The first one uses the improved formula from Saalasti (2) and a second one (named Accelerating) is a new polynomial regression computed using the training dataset over the periods of increasing HR.

This new algorithm is the one the paper is proposing. The original Saalasti algorithm is based on the neural network. The Saalasti paper in question is referenced below.

In the last step, the VO2 is estimated by multiplying the resulting pVO2 with the subject’s VO2max:

VO2 = pVO2 * VO2max


(2) S. Saalasti, "Neural Networks for Heart Rate Time Series Analysis," 2003.

C. Lange
  • 4,588
  • 3
  • 11
  • 51
-1

While I don't have the algorithm, I do have a pretty decent sized library of .sdf files of exercises. From which someone could almost certainly reverse engineer something very close to the energy expenditure model. I have a strong suspicion it is mostly exponential smoothing.