HR Trimp coeficient calculation

390 views
Skip to first unread message

Martin Banas

unread,
Jan 11, 2022, 4:57:19 PM1/11/22
to golden-cheetah-users
Hi,
Over the years I've changed back from power based training to HR + Pace. Right now I try to setup GC to calculate at least somehow correct values for Trimp score.

The problem I'm facing is to determine correct coeficient for each HR Zone, since I'm using 80/20 Endurance zones. I could guestimate the Trimp k from the default Trimp k values, however I was wondering if there's a way of how to calculate that.

The 80/20 zones are as follows:

Zone.  % LTHR
1.  72-81
2.  81-90
X.  90-95
3.  95-100
Y.  100-102
4.  102-105
5.  >105

The best would be to plot a chart where I can see the koeficient for each %LTHR, however I didn't find a formula for doing that.

Any help appreciated.

Thanks,
Martin

Ale Martinez

unread,
Jan 11, 2022, 6:25:11 PM1/11/22
to golden-cheetah-users
If you define the 7 zones above and the corresponding Trimp k for each one, TRIMP Zonal Points metric will calculate you stress scores automatically.

If you want a formula you could fit a curve over that values, but I think this would add complexity without a tangible benefit.  

Martin Banas

unread,
Jan 12, 2022, 1:32:52 PM1/12/22
to golden-cheetah-users
The problem is that I don't know how to define Trimp k for each zone.

If Trimp k is the same as weighting factor (y) from here: https://www.veohtu.com/trimp.html , then for the Zone 1 (in my case BMP 118-133), it would be:

y = 0.64e^(1.92✕%HRR), Where %HRR = (mean HR during session − HRrest ) ÷ (HRmax − HRrest )  , so
y = 0.64e^(1.92✕((HR during session − HRrest ) ÷ (HRmax − HRrest ))). If I calculate zone 1 (118-133), then the middle is let's say 125, so I'll put HR during session as 125
y = 0.64e^(1.92X((125-42)/(187-42)))

Which seems very wrong, because based on Friel zones [1] the Trimp k for Zone 1 should be somewhere around 0.5 and actually is around 2.0 when it reaches Z5.


Dne středa 12. ledna 2022 v 0:25:11 UTC+1 uživatel Ale Martinez napsal:

Ale Martinez

unread,
Jan 12, 2022, 2:02:59 PM1/12/22
to golden-cheetah-users
El miércoles, 12 de enero de 2022 a la(s) 15:32:52 UTC-3, Martin Banas escribió:
The problem is that I don't know how to define Trimp k for each zone.

If Trimp k is the same as weighting factor (y) from here: https://www.veohtu.com/trimp.html , then for the Zone 1 (in my case BMP 118-133), it would be:

y = 0.64e^(1.92✕%HRR), Where %HRR = (mean HR during session − HRrest ) ÷ (HRmax − HRrest )  , so

Builtin TRIMP Points metric use this formula, also TRIMP Points (100) but this is scaled so 1hr at LTHR gives 100 points. 
 
y = 0.64e^(1.92✕((HR during session − HRrest ) ÷ (HRmax − HRrest ))). If I calculate zone 1 (118-133), then the middle is let's say 125, so I'll put HR during session as 125
y = 0.64e^(1.92X((125-42)/(187-42)))

Which seems very wrong, because based on Friel zones [1] the Trimp k for Zone 1 should be somewhere around 0.5 and actually is around 2.0 when it reaches Z5.

Friel table/coefficients are useful if you want to approximate TSS when mixing sessions with and without power, but this is not your case according to your OP.

Banister impulse-response model and Coggan simplified PMC are pretty robust WRT the metric used to quantify training load, there is no much need to sweat the small details when the final result of the model will be similar.

Laurent Caron

unread,
Jan 13, 2022, 10:13:32 PM1/13/22
to golden-cheetah-users
Hi Martin,

As mentioned by Ale, once you divide your y by the TRIMP @ LTHR you would probably get closer to the default values.

My recent analysis may be of help to you.

I am cycling with power (through my power meter) and heart rate indoors, and with only heart rate outdoors. I know my TSS using BikeScore and TRIMP are quite off from one another when I have both heart rate and power readings. I was then interested in seeing if I could use my indoor rides to better estimate the outdoor TRIMP, in order to improve the outdoors contribution to my PMC Stress. Here are my findings :

1. I made a linear regression using BikeScore as a target, and time in each zone as predictors. The coefficients of the regression would then be the stress associated to 1 extra unit of time in a given zone. However some higher coefficients are negative, and there is reversal in the magnitude of lower coefficients.
    i. I may not ride enough or have enough variety in my rides to get meaningful k estimates. The higher zones are quite thin in data volume, and the lower zones are probably biased by some noise : warmups for higher intensity rides, fitting sessions where my heart rate is sometimes erratic, etc.
    ii. You may have noticed when comparing Friel's coefficients (https://www.trainingpeaks.com/learn/articles/estimating-training-stress-score-tss/) with Golden Cheetah's implementation, but Friel acknowledges that associating a coefficient to zones 1 and 2 may not be granular enough since he needs to further break them down into high/low.

2. Knowing the 1st finding, I tried to see if I could now do a slightly different regression : predict TSS using TRIMP_Zonal_Points as the sole predictor. Since the default k coefficients have desirable properties (positive, monotonic increasing, most likely the result of in depth analysis/measurement), I thought I could leverage that score to predict TSS.
    i. Turns out the R^2 is close to 0.87-0.88 depending on the time periods I choose. Using your own rides, you could then determine an intercept and slope and predict TSS using the TRIMP_Zonal_Points that uses the default coefficients
    ii. I tried a different approach knowing weakness 1(ii) : predict TSS using TRIMP_100 instead. The R^2 was even better! Around 0.94-0.95. So you could do the same thing : TSS = intercept + slope * TRIMP_100.
    iii. I don't often do interval training, so that probably explains why TRIMP_100 picks up the signal better → it is better at picking up a notion of average heart rate for the ride, whereas TRIMP_Zonal_Points would be better at picking up the notion of variability since the coefficients are not linear (just like TSS).

My conclusion would be (of course, only based on my logs being a single data point) : since both TRIMP are a very good predictor of TSS, maybe you're good sticking with TRIMP as your PMC input. My issue comes from the fact that I want to add metrics that are on 2 different scales (hence the need for regressing 1 against the other to scale them, or to find decent K coefficients). But you mentioned using heart rate only, so most likely all your activities would be on a consistent scale.

Also, I assume you are running, not cycling, since you mention pace. If so, you might want to validate my findings on your own logs which hopefully have activities with both power and heart rate.

Hopefully that helps!

Laurent
Reply all
Reply to author
Forward
Message has been deleted
0 new messages