Tuesday, December 29, 2020

Active Recovery Day with HRV Logger

Update 3/23/22 - As discussed in this post, alternate preprocessing methods other than the type used in Kubios (detrending method - smoothness priors) may lead to DFA a1 results that are different than seen with Kubios software.  HRV logger does use an alternate method.  Therefore, results may not agree well with published studies.  If possible, a secondary check using Runalyze, AIenduance or Fatmaxxer is recommended.

 After doing some tough intervals and testing yesterday, my goal today was to just take it easy and recover with 90 minutes of easy cycling.  I also wanted to try the HRV Logger  "exercise mode", using the more aggressive artifact correction method of the software.  Test conditions were still the same, but the ride was essentially 155 watts (well below VT1) for the entire time except for an 8 minute block at about VT1 power (or slightly above it).

First the Logger View:

  • We can see that DFA a1 is well into the low intensity zone with well correlated values showing good fractal behavior (>1).  
  • The first red circle is the 8 minute interval at VT1, and indeed, the DFA a1 drops to below (or at) .75.  
  • After the interval, power resumed at very easy intensity but about 6 minutes later, the DFA a1 dropped unexpectedly.  After the brief drop, the values resumed their normal levels well above 1.  More about that later. 


Comparison with Kubios:

  • The agreement appears good between both methods.  Yes, it would be nice to have more points on the HRV Logger, but it provides useful information and helps one stay within their zone 1 range.  
  • The 8 minute interval does have finer detail in Kubios, but again, for practical purposes the Logger conveys the correct data.
  • The artifact (or whatever it is) is seen with both software methods - which is comforting.  What does that drop represent?  Is it an APC, VPC or something else?

I looked at the ECG (from the Movesense unit) and there was no arrhythmia.  In addition, the Kubios time varying plot of the DFA a1 shows exactly the same dip in values:

Whatever caused the dip in DFA a1 was present in both recordings and with no ECG abnormality.  Therefore the HRV Logger algorithm was not at fault!



  • Tracking of DFA a1 with the HRV Logger continues to provide accurate real time low intensity exercise information and should help with enforcing zone 1 training.  The observation of DFA a1 while doing a training session takes the guess work out of low to moderate intensity training.
  • The more aggressive artifact correction mode ("workout") seems to show good agreement with Kubios auto correction.  Further study of the effects of aggressive correction on DFA a1 would be of interest.
  • Occasional dips in DFA a1 can occur for no apparent reason, but they are transient, of short duration and are isolated.   

DFA a1 and exercise intensity FAQ 

Monday, December 28, 2020

Real time Aerobic thresholds and polarized training with HRV Logger

Update 3/23/22 - As discussed in this post, alternate preprocessing methods other than the type used in Kubios (detrending method - smoothness priors) may lead to DFA a1 results that are different than seen with Kubios software.  HRV logger does use an alternate method.  Therefore, results may not agree well with published studies.  If possible, a secondary check using Runalyze, AIenduance or Fatmaxxer is recommended.

 Part 1 - Review of HRV Logger

Part 3 - Active Recovery with HRV Logger 

The road from research to practical implementation is sometimes difficult.  However, in this post we will see that our ideas about using DFA a1 as a measure of the transition through the aerobic threshold (AT) can be done in real time, without a PC, without Kubios software and most importantly be accomplished during a simple low intensity training session.  The same test conditions were present as with my HRV Logger review.  Although some recommend using the "workout" mode for artifact correction, my initial DFA a1 values were suppressed with low intensity warmups using this setting.  I switched back to the 20% mode for the testing.

Ramp Procedures 

The first ramp was my usual 130 to 230 watt span but done over 10 minutes (not 20).  This was suggested to keep the time commitment short.  The other added benefit (if it works) is that time spent over the AT is minimized.

The second ramp was done about 10 minutes after the first.  It consisted of 3 intervals done without trainer guidance, to simulate outdoor riding.  The wattage varied somewhat but the average power was 155, 190 and 214 watts each for 5 minutes.

Whole ride results:


The ramps are circled in blue.  In the middle is a 3 minute x 110% VO2 max interval and towards the end are 2 x Wingate 30s intervals.  The green line is the average HR for each 2 minute window, black is DFA a1 via Kubios and red is DFA a1 from HRV logger.

  • Both ramps appear relatively linear (first > second) with fair agreement between Kubios and Logger.  Since the HRV Logger only displays a value every 2 minutes, we lose some fine granularity.


Ramp comparison for HR

To calculate the HRVT, one of our methods is to plot the linear drop of DFA a1 against the HR rise.  Below is a graph of Kubios (every 5 sec) vs HRV Logger (every 2 min):

  • The results were essentially the same, despite the lack of points in the Logger.


Next was a 3 interval constant power session, 155, 190 and 214 watts.


  • I called this a "simulated road ramp" because anyone can do this on the road.  
  • Here we see DFA a1 drops below .75 at 214 watts, but was well above it at 190 watts.  Therefore the HRVT was somewhere in between.  If a finer degree of resolution was needed, additional intervals around 200 watts could have been done.
  • One could also look at the HR for equivalent threshold values.


How did this look in real time?  

As I was doing the ramp, my eyes were glued to my ipad mini.

After passing 200 watts (my usual HRVT), the Logger showed that the DFA a1 did drop below .75 for the first time:

  • The first ramp is on the left (I labeled the 200 watt point where DFA a1 is about .71).
  • The "road ramp", with 3 constant power intervals is on the right.  Note that DFA a1 was above .75 until the last section (214 watts).

There were no APCs according to my also worn Movesense ECG (which if present could have lead to abnormal DFA a1 values from faulty artifact correction :


Real time Polarized training

Training intensity distribution is very important to both know and implement.  I'm a fan of the polarized approach, which is especially important in older athletes.  One of my usual practices is to do a 3 or 5 minute near max interval at or just above VO2 max power.  We know that this HIT interval is at zone 3 (any max interval below 20 min should be zone 3).  The question is, what happens to your "internal intensity load" measures post interval.  For instance, below is a look at lactate after one of the above HIT intervals

  • After the 3 minute max, the lactate was over 10 mmol (with suppressed DFA a1 on the bottom panel).  Toward the end, I did 500w for 1 minute, then just easy pedaling for about 15 minutes.
  • Despite that active recovery, the lactate was still 4.2 at the session end and it was associated with a suppressed DFA a1 (yellow circle below).
  • This is why we say that DFA a1 is a marker of internal load rather than external.  The bike power (external load) was well into my zone 1 but the lactate and DFA a1 (both internal load markers) showed a higher intensity state.

Back to real time DFA a1...

With the above example in mind, several implications are possible.  After the HIT interval is over, do we use the internal or external load measures to compute our polarized (or even pyramidal) ratios?  Does the post HIT lactate or DFA a1 indication of intensity affect the next interval quality?  Without sufficient recovery, you won't be able to achieve full HIT power nor interval duration.  The following are a couple of observations post HIT.

Post 110% VO2 max:


  • As in my lactate example above, the DFA a1 stays down post interval in both the Logger and Kubios.  I watched this for awhile and finally dialed down the effort after 10 minutes (even though I was not really tired).

Post 30s Wingate x 2:


In a similar fashion, the DFA a1 was down after the HIT intervals (even though the HR was not high and power was well below the AT).  Only at the end of the entire ride did the DFA a1 rise.

The entire session on the Logger:

  •  Two ramps, two HIT and the post HIT suppression noted.



  • The ability to follow DFA a1 in real time has great value.  Not only can you obtain your personal aerobic threshold, but you are able to do so immediately without a PC, Kubios or Excel software.
  • Observation of real time DFA a1 is an ideal way to enforce polarized training - simply by making sure that your values stay above .75.
  • Recovery post HIT.  Persistent DFA a1 suppression may be associated with residual high levels of internal load (lactate).  This may or may not be desirable.  On one hand if you wanted to enhance lactate disposal, keeping the DFA a1 down by being guided with the real time display may be helpful.  Conversely, if a true recovery segment is desired, allowing DFA a1 to rise above .75 could be helpful.
  • HRV Logger derived DFA a1 appears to strongly correspond to values derived from Kubios.  Although this is N=1 data, it appears a promising modality for athletic monitoring and training.

DFA a1 and exercise intensity FAQ 

Saturday, December 26, 2020

HRV Logger for iOS - review of real time DFA a1 metrics

Update 3/23/22 - As discussed in this post, alternate preprocessing methods other than the type used in Kubios (detrending method - smoothness priors) may lead to DFA a1 results that are different than seen with Kubios software.  HRV logger does use an alternate method.  Therefore, results may not agree well with published studies.  If possible, a secondary check using Runalyze, AIenduance or Fatmaxxer is recommended.


Over the past several months both a perspective review and validation study have been published detailing the usage of the HRV index DFA a1 as a potential means of defining the aerobic threshold for zone 1 training purposes.  Ideally, a real time look at this index would be quite helpful.  Since it is dimensionless and already "calibrated" to exercise effort, it should be able to inform the athlete about their current intensity load.  The iPhone/iPad app, HRV logger was recently upgraded to take advantage of this scenario.  The following post is an introductory look at how HRV Logger stacks up to Kubios in terms of DFA a1 during an exercise ramp.  In a previous post we looked at a comparison of the python based algorithm used in HRV Logger to that of Kubios and they were very close.  However, the question is how well the app will do when presented with the usual artifacts seen with moderate exercise as well as usability issues.  

Test setup and settings:  After a 20 minute warmup, a cycling ramp was done (Zwift controlled) from 130 to 230 watts (5w/min).  The app settings were a 20% artifact threshold and 2 minute measurement windows.  A Polar H10 chest belt was used with concurrent recording to a Garmin watch.


Before going over the results, a look at artifact correction effects should be done.  HRV Logger does correct for artifact.  This entails finding aberrant beats based on timing errors, then inserting a beat based on an educated guess (most commonly simple linear interpolation).   That usually works well especially for as missed beat, but not so well for APCs (since they may not flag as an error given the close timing to "normal").  Below is my ramp, first with "threshold correction" then with the newer "auto" correction (premium version only).


Notice the yellowed area (caused by 1 APC on each section), there is a dramatic drop that is not present in the "auto" corrected mode:


If your tracing does not contain beats such as this, there won't be an issue with "threshold" type corrections.  However, if it does - be aware of this issue.

Lets' now look at my ramp comparing Kubios (extracted from Polar H10 to Garmin .fit then processed with Kubios auto correction method) vs HRV Logger (Polar H10 to ipad mini running HRV Logger):

The green line is heart rate, showing the rise during the ramp. Blue is Kubios output (2 min windows but recalculation every 5 sec) and red is HRV Logger (2 min windows without overlapping recalculation).  For the most part, the agreement seems quite good.  The output of HRV Logger has timing markers but not matching HR per measurement window so I matched up as well as I could, but it could be off several seconds.


Getting back to the comparison, look at the circle I placed around the comment - (possible artifact).  That corresponds to the drop in DFA a1 seen with the Kubios threshold correction (which is why I went to trouble of explaining this).  

Why is that drop important to note?  If one were using this as a monitor of intensity during an exercise session, certain degrees and types of artifact can alter the DFA a1 value substantially.  Therefore if values suddenly don't make sense, consider the above possibility.

How well does HRV logger correct for missed beat artifact?  Actually very well!  Below is a Kubios tracing of the "cleaned" RR values from HRV Logger (using HRV Logger correction) alongside the raw Garmin data (using Kubios auto correction).  This was done over 2 hours including a ramp and some HIT intervals.  Unfortunately, I used the wrong window setting (30s instead of 2 min) so the DFA a1 values are not valid and not shown.

What this tells us is that the HRV Logger is able to handle moderate artifacts as well as the Kubios threshold method.  At very high artifact levels (seen at high HR), or during an APC activity the Kubios "auto" method may be better (but only available in the costly premium version).

HRVT difference

The heart rate variability threshold (aerobic threshold surrogate) calculation between the Kubios data and HRV Logger were very close:

Here we are graphing DFA a1 over time.  Since we know the cycling power over time, the point at which DFA a1 crosses .75 can be back calculated and converted into watts.  Although it would have been nice to have more points to play with, the Logger is within just several watts to that of Kubios.



  • HRV Logger for iOS devices is a powerful and generally accurate means of measuring DFA a1 in real time or in a retrospective manner.
  • Artifact correction is similar to the "threshold" method of Kubios.  However, both methods are prone to error with even 1 or 2 atrial premature beats.  When doing a session, be mindful of a sudden drop of DFA a1 then a rise at the same exercise intensity.
  • Price point?  A steal!  Kubios premium is about 400$ initially then 80$ a year.  Sure, you could use the free version but still not get real time DFA a1 on a mobile device.

Wish list:

  • Separation of measurement window choice (should be 2 min) with "grid interval" (rolling recalculation time).  I know the app can handle a recalculation every 30 seconds since I used that already (but that time is too short for measurement accuracy).  Finer granularity in ramp or constant power sessions is helpful for aerobic threshold determination and was our method of choice in the validation study.  In fact, I think we were the first to use this technique. 
  • Real time and historic graphing of HR and DFA a1.  Since many users will be runners, knowing heart rate "breakpoints" would be helpful. Having the DFA a1 and HR side by side on the same graph and .CSV would facilitate that.  This is not as needed using a bike on a trainer doing constant power intervals.
  • Indication of degree of artifact per measurement window.  High artifact associated data should be suspect even with correction.
  • Perhaps some UI changes to account for usage either riding on a bike or running.  Note should be made that the DFA a1 concept was added on to an app that is mainly used at rest.  Hopefully the developer will consider a spinoff app aimed as a real time DFA a1 display with appropriate additional metrics for both threshold concepts and training intensity monitoring.

Real time Aerobic thresholds and polarized training with HRV Logger  

Active Recovery with HRV Logger 

DFA a1 and exercise intensity FAQ 

Saturday, December 19, 2020

Frontiers in Physiology - Validation of DFA a1 as a marker of VT1

Although many prior posts in this blog assumed DFA a1 reached VT1 at about .75, until yesterday, no published peer reviewed data existed to verify this concept.  However, we now have a high quality validation study published in Frontiers in Physiology confirming that.  Before getting into a brief summary of our findings I would like to thank both my co authors, the Frontiers reviewers (Drs Lars Brechtel, Daniel Boullosa) and Editor (Dr Clint Bellenger).  We were very fortunate in having reviewers who were both knowledgeable in HRV and exercise physiology (which is not a common skill set) who understood what we were trying to accomplish.  It was an incredible experience (and much fun) to work with Dave, Nick, Olaf and of course my very good friend Thomas. 

The article:


The full version is in the "production department" at this point, therefore I need to wait until it is in final form to get into more detail, review some interesting figures, stats and correlations with gas exchange.  However, the abstract should provide more assurance for using DFA a1 to help determine your VT1 and assist with the low intensity portion of zone training. 

In the meantime, the following posts should help guide implementation of using the index in practical terms:

Heart rate variability during dynamic exercise


Thursday, December 17, 2020

DFA a1 calculation - Kubios vs Python mini validation

Update 3/23/22 - As discussed in this post, alternate preprocessing methods other than the type used in Kubios (detrending method - smoothness priors) may lead to DFA a1 results that are different than seen with Kubios software.  HRV logger does use an alternate method.  Therefore, results may not agree well with published studies.  If possible, a secondary check using Runalyze, AIenduance or Fatmaxxer is recommended.


Just his past week, Marco Altini a prominent HRV advocate and researcher created a python based process to take an RR data series and output DFA a1/HR related values.  Although python is not part of my skill set (as in the old Star Trek line - "I'm a doctor not a ...."), some friends at Suunto happened to be working on something similar and we decided to take a look.  The idea was to test the "agreement" between the gold standard Kubios to that of a python derived DFA a1.  To do so we used the Polar H10 recorded running ramp from the prior post.  The RR time series was fed through a python based program with the following settings:

  • hrvanalysis.remove_outliers(low_rri=300, high_rri=2000)
  • hrvanalysis.interpolate_nan_values(interpolation_method="linear")
  • hrvanalysis.remove_ectopic_beats(method="malik")
  • hrvanalysis.interpolate_nan_values
  • Basic script from here
  • DFA a1 package here 
  • This is not the software from Marco Altini's site but it does use many of the same Python tools

In summary, we have the same Polar H10 RR series, comparing Kubios (auto correction mode) with the Python method.  I'm going to comment up front that artifact identification and correction methods are going to be different.  This could have a major impact on DFA a1 values.


Time varying output (2 min windows with recalculation every 5 sec)

  • If this looks like the graph from the last post, it's not your imagination.  This is the same data, but now the Python derived DFA a1 is added in purple triangles.
  • There is reasonable (but not perfect) tracking of each data point.

How does this look with regression analysis.  Here is a pair by pair plot of DFA a1 at all values:

R squared is .85 which is decent (but not excellent) and the slope is .82 indicating possible bias.

This was confirmed in a Bland Altman analysis:

I circled the area of concern, at DFA a1 below.75, the bias (relative difference between paired values) and standard deviation (scatter) becomes much larger.  This could be related to a few more artifacts in this region (zero to 1%) or simply the underlying method of calculation.

Aerobic threshold calculations

Does the 20% bias at DFA a1 < .75 affect the HRVT (the VT1 related heart rate variability threshold)?

  • Not really.
  • Although the values are different in the DFA a1 1.5 to .3 region, the HRVT is quite close, only about 2 bpm divergent.  There was more of a differential with lines drawn from 1.0 to .3, but still within several bpm.

Some observations:

  • Kubios is and remains a gold standard for HRV and DFA a1 calculation. 
  • The above python implementation seems (based on very limited data) to resemble that of Kubios.  
  • A time varying look at DFA a1 using python scripting has enormous potential to help guide ones training regime.  Both a retrospective look at an exercise session as well as a real time mini app on a smartwatch or phone may even be possible.  One of my wish list items is a simple green, yellow, red marker on your watch indicating what your last 2 minute DFA a1 result was (with some sort of "confidence indicator" for artifacts).
  • Issues to be worked out include artifact identification and correction (not necessarily the same thing) and more validation study.
  • Many thanks to Olli-Pekka Koistinen and the Suunto team for the python calculations and background scripting information.  
  • Thanks to Marco Altini for increasing awareness of nonlinear HRV related fractal correlation properties as a tool to help guide training intensity distribution and measurement of the aerobic threshold.  I hope he continues to work on the app and improve the agreement to Kubios.


Addendum 12/20/2020

  The following figures will compare the Suunto python method, Marco's method and of course the gold standard Kubios.

Bland Altman Difference analysis:

  • The Python based algorithm used by HRV logger yields similar results as the method used by the engineers at Suunto to compute DFA a1.  This is not agreeing well with Kubios HRV at low DFA a1.
  • Although further study and verification is needed, this is an exciting development for athletic intensity modulation and zone identification.
  • Looking forward to HRV logger improvements.

Frontiers in Physiology - Validation of DFA a1 as a marker of VT1 

Real time Aerobic thresholds and polarized training with HRV Logger 

Active Recovery with HRV Logger  

DFA a1 and exercise intensity FAQ