Friday, April 23, 2021

DFA a1, Sample rates and Device quirks

Although this may seem to be an obscure topic to cover, the subject of heart rate monitor sample rate and R peak detection is of paramount importance to accurate DFA a1 computation.  Since this index is one of "correlation" properties and fractal patterns, having inaccurate beat to beat time measurement will lead to loss of pattern detail and an erroneous a1 value.  If we recognize that having an accurate pattern measurement is of importance, two factors in monitoring device function should have significance.  First, and perhaps easiest to understand is the "sample rate" of the device.  This is the frequency of signal measurement in Hz.  In other words a device that samples at 1000 Hz, measures the signal across the chest belt electrodes at 1000 times per second.  Obviously, if a device sampled at a much lower rate, the waveform would not be as distinct and the peak of the R wave not as precise.  Here is an example of a 125 Hz waveform vs a 500 Hz sample:

Although the 125 Hz peak seems pretty sharp, if it was sampled a bit later on it could look like this:

Kubios is "guessing" where the peak is and puts the red X in the center, but it could be elsewhere.

If sample rate can alter the accuracy of the R peak, can other factors do so as well?  Here we have to consider the "black box" of how RR times are reported by the HRM device such as the Polar H10.  The unit is measuring the ECG signal, but more importantly, using internal software algorithms (and maybe hardware as well) to transform that into the RR interval data series (like Kubios is doing to the raw ECG above).  Therefore it is certainly possible that one or both of the two "systems" (sample rate and RR transformation) can be problematic and produce erroneous RR correlation patterns (hence DFA a1).

In the following post, we are going to take a closer look at these issues and discuss some fascinating findings.

The simplest "test comparison" is using sample rate "downsampling" to produce near identical time duration sequences of exercise ramp data.  For instance, I recorded a 2 hour ramp and HIT session with the Movesense Medical ECG (across the upper L chest to optimize waveform) at 500 Hz, then down-sampled the data sequence to 250 and 125 Hz. How is this done - simple - just remove every other data point.  Warning, Excel has trouble doing this and is limited to just over a million records anyway.

Here is a plot of DFA a1 over time during a ramp, followed by active recovery then 5 minutes at VO2 max power (the last third of the session was not shown due to excessive artifact):

  • The black arrow is the ramp (130 to 230w, 5w per min) the blue circle is the HIT interval.  Yellow is HR.
  • All three sample rates produce similar looking values over time!  Even though the low sample rate 125 Hz has waveform loss of definition, the end result a1 appears not to be affected.

A zoomed view of both the ramp and HIT interval confirms this:

If we look at a Bland Altman plot of the differences per point, the 125 and 500 Hz are very close, with some scatter at low DFA a1 values:


Is this real or a fluke?  I was very surprised at these results, therefore took a look at another ramp recorded at 500 Hz, and compared to a 125 Hz downsampled version. This ramp was done almost to failure, well past the VT2/LT2/RCP/MLSS.

  • We see again the close tracking of both 500 and 125Hz sample rates.
  • There was some deviation (blue circle) at very low DFA a1, that may or may not matter for physiologic analysis.
  • The Bland Altman difference plots also reflect the above - close agreement in the DFA a1 .5 to 1.0 range.  Part of the scatter at DFA a1 near .3 is that section circled above.


  • Manipulation of sample rate via downsampling appears not to affect DFA a1 to a major degree in the range we are interested in.  There may or may not be some issues at very low a1 values.


Next problem - do device related algorithms play a role?

To introduce this topic, I'm going to go back to an old ramp comparison I did between the Movesense HR+ in RR mode vs the Polar H10.  By way of some background info, the Movesense unit use 125 Hz sample rates when transmitting RR data to a Garmin watch or head unit as opposed to the Polar H10 which uses 1000 Hz.  The Movesense unit had stock firmware (not the Medical module version).  I wore the HR+ module on a gel pad strip high on the chest so as to get a clean signal and not bump into the H10.

Here is a comparison of heart rate values for each data point.  The correlation coefficient was above .999 - showing that the match up of each ramp was very, very close (important to show since they are different devices)

The DFA a1 values over time:

  • The Movesense HR+ markedly underestimates the DFA a1 at all time points.
  • If we were to use this for HRVT training information, a gross error would have been produced in power or heart rate.

I had originally thought that the issue with the underestimated DFA a1 data out of the HR+ device was caused by a low sample rate.  That's in part why I wanted to see what happened to downsampling the ECG data - to show that's what caused the issue, and encourage Suunto to boost the sample rate.  It now appears that this underestimation of DFA a1 is caused by an issue of internal signal processing of the time sequence data rather than sample rate.  

To fully put the sample rate question to rest, we are going to look at ramp data using a Polar H10 in RR mode (sample rate 1000Hz) vs a concurrent Polar H10 ECG recording (same device, same session) done at a sample rate of 130 Hz recorded simultaneously and compare both to the Movesense HR plus module with updated firmware (as opposed to the stock version used above).

  • H10 in RR mode (1000 Hz)
  • H10 in ECG mode (130 Hz)
  • Movesense in RR mode with new firmware (125 Hz)

For the recording of the Polar H10 ECG, an android app called Polar Sensor logger is recommended.  Recording with this was covered in a previous post. Data is saved to your android device storage for later analysis.  It can now be read by Kubios (premium) with waveform display and proper time stamps (no more guessing what the sample rate was).

Exercise protocol was a near "full ramp" - 100 to 330w, at 10w/min rise using Zwift as the control for the smart trainer.

Entire session - with ramp, then active recovery, then Wingate 60s, then near VT1 power for 7 minutes.

Zoomed Ramp:

Zoomed Wingate and near VT1 x 7 min:


  • Although the H10 RR and H10 ECG are close especially after the HIT session, there appears to be some divergence in the ramp data values.
  • The Movesense unit, even though it has the same sample rate as the H10 in ECG mode, reads lower during the ramp and the HIT interval.  But it seems much improved with the newer firmware!  Therefore, software implementation can make a huge difference even with the same hardware in regards to DFA a1 tracking.

These observations are confirmed with a look at the Bland Altman difference plots:

Same device (H10) but comparing RR mode (sample rate 1000Hz) vs ECG mode (sample rate 130 Hz)

  • The mean difference is near zero, although the scatter is higher at low a1 values.

Different devices but near equal sample rates - H10 in ECG mode (sample rate 130 Hz) vs Movesense in RR mode (sample rate 125 Hz)

  • The Movesense, even with newer firmware, is reading lower than the similar sample rate Polar H10 in ECG mode. 

Final Summary:

No comments:

Post a Comment