Elevate: Estimated stress scores for activities without HR sensor or power meter

Created on 11 Dec 2016  ·  34Comments  ·  Source: thomaschampagne/elevate

Tasks:

- [x] Change no sync / no data messages

Hi,

First of all, thank you very much. This addon looks very good :)
I'm a runner but I dont take my HR Sensor all the time... and curves takes only activities with HR sensor...

Could we imagine that we 'guess' (low assumption) activities without sensor. Like based on the average last 2 month?
Something like I did 10km with 120m up hill, 80m down hill in 1h and my IMP is 52.
10 000 + 120 * 1 - 80 * 0.25 = 10 100 (~meter with difficulty)
10 100 / (60*60) = 2.8055 / seconde

With these rules we can imagine that we could estimate IMP for activities without HR sensor... and make new point on graph?

What do you think? :)

Most helpful comment

I agree with some of the suggestions above, instead of trying to develop logic to figure out the TRIMP just allow people to enter an estimation.

All 34 comments

Hi @jycouet.

Indeed you right, training impulsion could be calculed even without HRM. It could be cool for people without HRM and power meter (cycling) (users with IOS, Android app... ). Of course as an estimation...

We have to find something working also for cycling (and swimming ??) . Did you made some tests/correlations between your formula and trimp values inside excel sheet as example?

Ok to dive in and develop around.

Tom

Hi @thomaschampagne,
Thank you for your comment.
Since then, I looked a bit more into it and it's not that easy! (If not a lot of people would have already done it :p)

My first idea is not to provide a estimated value for someone who doesn't have a HR sensor, but more to estimate the suffer score of someone who forget the sensor sometimes... Like this your nice fitness graph can still update. (I say that because I went out without my sensor last time, and it look like I didn't do anything in your fitness graph :()

I tried a lot of stuff on my data and here is the result:
stravix

If I just Add Distance(m) + Elevation (m) + Moving time (s) and I display this against the suffer score. We can sort of see that there is a "link", but not accurate (AT ALL)
The idea is to have a value for each activity so if I take the more conservative value I take the red line.

Suffer Score = (Dist + Ele + Moving Time) * 0.00187503

Maybe we can be a bit less conservative and say I admit 10% of over estimated value so that we can go with the green line.

Suffer Score = (Dist + Ele + Moving Time) * 0.00356830

The problem is that everyone will have a different slope.

proposal

  1. For people without Sensor, you can put something very conservative (At least you will have something?!)
  2. For people with a sensor sometimes you can calculate the slope with the history (Taking maybe only last 12 months). like this we will see that we did something and it will be at least this number (not introducing overestimated data)

Should I try? :p

Nice investigation :)

Just to know what are X and Y labels?

X: (Dist + Ele + Moving Time) ?
Y: Suffer score?

Maybe you can share your excel/calc file here if no sensitive/private data? Just to play with :)

Thanks

Tom

Yes,
X: (Dist + Ele + Moving Time)
Y: Suffer score

Here is my excel file... not sure it's easy to understand...
activities.xlsx

I put data from strava in blue

HF! :)

Some interesting links how trainingpeaks calculates TSS for running and swimming without HRM:
rTSS: http://home.trainingpeaks.com/blog/article/running-training-stress-score-rtss-explained
sTSS: http://home.trainingpeaks.com/blog/article/calculating-swimming-tss-score

Can you use this formulas? We only need a configuration for running and swimming FTP.

Interresting... I think i can...

I would first clean up data before doing an analysis. Just look at the comments and see if you need to exclude certain activities. You could also use excel to put in all your datapoints and calculate the TRIMP score based on your calculation and compare it to the actual TRIMP value. Then sum up all the differences. You want to minimize this value, this can easily be done by excel by an optimization algorithm built in excel.

In general this would also help for adding different activities, for example adding a soccer match activity. Just put a standard 50 TRIMP value or 80 to give an indication.

I will handle Swimming stress score (sTSS) at first. Since it's a big hole in the fitness calculation process.

Next... rTSS if no HRM and running...

For all other sports. @HeijnenPeter i'm not sure i understood you.

Tom

I created a separate ticket for swimming score: https://github.com/thomaschampagne/stravistix/issues/327

Does someone could link me .fit/.gpx files for:

  • Pool swimming
  • Open water swimming

Thanks :)

Pool swimming:
swim.zip

Thx martin

What I meant was, I have 3 activities per week with TRIMP score, and one activity without TRIMP/Heart rate or any other score, but it is still a high intensity activity (in my case: a soccer match). For my graph, it looks like a resting day since there is no logged activity. So my form goes up at this day which in reality is not the case. I would like to use the form graph to plan new activities and without this soccer match, or any other activity without heart rate, the form trend is inacurate. Hope this helps....

It would be helpful if we could enter an avg heart rate for that activity (manually) where we don't use heart rate, and then use that estimated guess to make the trend more reliable!

For example, If I race an Ultra Marathon, I don't wear a heart rate monitor because it consumes too much battery. But I can relate pace quite good to heart rate myself. So for that particular event it would be a huge difference in the fatigue and fitness graph...

So for me it would be also alright if we could just ENTER a certain heartrate in the list.


It would also be interesting to see if you could enter "phantom activities" in the future, to see how a different activity would help you to peak at race day, to recover the most, to get a certain stress score etc...

To play around a bit to construct a solid training schedule :)


THANKS A LOT FOR ALL THIS, IT IS ABSOLUTELY AWESOME ALREADY.

I just ran into this, I managed to forget my garmin on a long sportive and so I've got not HR or Power data for that event. This obviously completely skews my fitness trend.

It would be good if I could punch in an approximate TRIMP score manually that I'd estimate based on feel vs other similar activities - then my form graph would be relatively in-line with the truth.

+1
Maybe HR over GAP stats could be of use ?

+1
The Training Peaks definition looks like a good starting point. This would be a great addition :)
(Another case where HR is sometimes not worn is racing.. especially triathlon)

I am a bit curious about the calculation though from TP as the IF seems to be NGP / FTP referring to pace.. I think that may be the wrong way around and it should be FTP / NGP?? i.e. IF should be lower if I run slower and higher if I run faster?

2 hours run = 7200s
NGP on flat = 4:47 or 287s
FTP = 3:50 or 230s
=> IF = (I think) 230 / 287 = 0.8

rTSS = 100 * (7200 * 287 * 0.8) / (230 * 3600) = 199.7
(Strava gave me 177 when using HR, which is pretty close especially as HR seemed low that day)

I agree with some of the suggestions above, instead of trying to develop logic to figure out the TRIMP just allow people to enter an estimation.

Thanks @thomaschampagne for pointing me to this one. Are there any plans for the implementation yet? Otherwise I may look into this

Just an experiment: how estimated average power (running) would be related to TRIMP.
I took my 430 runs and for each one plotted: x=TRIMP and y=(Avg.power * minutes of activity)/100.
Seem correlated.
image

As TRIMP is HRR-based and not dependent on one's weight, we should probably divide average power by weight in the above equation. So now it'd be y=(Avg. power / weight) * seconds of activity / 80

+1 for stress score estimation when no HR data available

I often leave my HR monitor at home resulting "rest time" in the finess chart. Estimated stress score is still better than zero. I will experiment with mathematical formulas at the weekend.

Just an experiment: how estimated average power (running) would be related to TRIMP.
I took my 430 runs and for each one plotted: x=TRIMP and y=(Avg.power * minutes of activity)/100.
Seem correlated.

I'm sure it would be correlated but the exact relationship between TRIMP (or HRSS) and average power would be different per person. Allowing the person to set the score when HR monitor isn't available would be more accurate as they know how hard they pushed.

I often leave my HR monitor at home resulting "rest time" in the fitness chart. Estimated stress score is still better than zero.

Allowing the person to set the score when HR monitor isn't available would be more accurate as they know how hard they pushed.

instead of trying to develop logic to figure out the TRIMP just allow people to enter an estimation.

I absolutely agree with these statements. Allowing the user to input their own score is much preferable to having an erroneous "off day" in the fitness trend. This could be easily implemented without coming up with some complicated algorithm. Give the people what they want!

Workaround: create additional manual swimming training like 30m in 2s, will not mess much with your swimming sessions but will let you add TSS for the day. Name it TSS so you can delete it later.
Not for regular use but good enough occasionally.

@jycouet @mickeymccool @glenjamin @martin-au @HeijnenPeter @AdriaanPan @grzeg1 @compmaster @cdt105 @zecrazytux @ct2034 @derekhiggins

I pushed a preview build that support "Estimated Fitness Trend" for No Sensors Athletes. it's here: https://www.strava.com/clubs/242874/posts/2454527

Thanks!
I've just downloaded the sources and built it myself.
It turned out the activities I missed the most were in fact my all-day-long moutain trips which I save as Hikes.
So I needed to modify the code a bit: const hasRunningData: boolean = ( activity.type === "Run" || activity.type === "Hike" )
Do you think you could somehow incorporate Hikes into HRSS calculations?

@grzeg1 If you have heartrate data on your Hikes you should get HRSS automatically. Try to resync to get the results

Thanks you rock! 👍🤘🤙

Beats trying to make a swimming exercise that corresponds to my
self-estimated effort. I can be a space cadet heading out the door and will
often forget my dork strap.

On Wed, May 16, 2018, 3:38 AM grzeg1 notifications@github.com wrote:

Workaround: create additional manual swimming training like 30m in 2s,
will not mess much with your swimming sessions but will let you add TSS for
the day. Name it TSS so you can delete it later.
Not for regular use but good enough occasionally.


You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/thomaschampagne/stravistix/issues/314#issuecomment-389474208,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AlViSMXYViLx6hF8BzBrs8CZKYnx7LjFks5tzAGLgaJpZM4LJ56x
.

@thomaschampagne if Ihad HR data on my Hikes I wouldn't have asked
I don't, that's why I needed this feature.

@grzeg1 HRSS is _stress score as a function of heart rate_, so your question doesn't make sense unless you assume you had heart rate data available.

I think you mean to ask about incorporating hikes as a general stress score, possibly using RSS from the current implementation. This may be hard to do because I don't know if running threshold would be a reliable indicator of hiking effort (I'd argue it's not because one of the limitations of rTSS for running is that it underestimates effort when there is large elevation changes involved).

@grzeg1 can you send me a gpx/tcx of one of your hike activity? I will debug/understand that and provide fix :)

@chrisfosterelli RSS don't fit with hiking for sure :(

ok, for sure I meant RSS
will send you gpx/tcx

@thomaschampagne Sorry for the delay with gpx/tcx sending. Meanwhile I discovered another issue. I started some swimrun activities. One day I forgot my HRM and the whole HRSS was calculated as 10. The previous day (with HRM) it was 80. But it's next to impossible to calculate RSS for swimruns. So I have one more proposal. For most activities that I couldn't use my HRM, I know (almost precisely) what the average HR would be. But Strava won't let me enter an avg HR value for activities.

What if one could enter such a value in the description field like [AVGHR:140] and then Stravistix would pick it up and use for calculations accordingly? Do you think that would be possible?

Why it's so important for me: if I have a missed activity instead of just a bit off, imprecise SS by let's say 10%, the whole fitness chart becomes irrelevant for many days.

Was this page helpful?
0 / 5 - 0 ratings