Wednesday, March 4, 2015


That's a nice post. I saw that an older post of mine made it to the DCRainmaker Week in Review. Wow that's a nice honour!!!! Thanks Ray!!

Monday, February 9, 2015

Results Powermeter study

Via the link below you can download the results of the Powermeter survey. Hope you enjoy it. If there are comments / questions, just let me know.

Thanks for your participation!!

Here the short summary:

The powermeter market is in general a very functional attribute driven market. However, different groups could be identified which differ in terms of the importance to give to each attribute. In this instance a more price oriented (‘’Low price’’) and a more functional (read technical) driven (‘’Engineers’’) segment were found with. In the middle of these two there was a ‘’Usability’’ segment. These 3 groups showed differences on several dimensions, but also w.r.t price perception.

Clearly each powermeter brand shows different strengths in terms of their brand funnel. In this sense marketing efforts should also be differentiated to areas in which the brand stays behind, i.e. shows bottlenecks compared to other brands and within the own brand purchase-loyalty funnel.

Segmentation is also what powermeter manufacturers look for of course. That is, there are simply different buyer groups, with different needs who all have a different budget they want to spend on a powermeter. So, here again some confirmation for a statement (DCRainmaker) ‘’If someone asks you what powermeter they should buy you can say: it depends’’

Friday, December 5, 2014

New Powermeter survey

The survey is closed per 16-12-2014. Data preparation started. Results will follow.

If you like you can participate in my new powermeter survey. Click on this link:

It's about powermeter brands. You can participate if you have a powermeter, but also if you don't have a powermeter. If you don't have a powermeter not all questions will aplly to you as you can see in the last responsecode in question 1.
By the way I am not selling powermeters. I am just interested in how they (brands) are perceived and in that sense I have no commercial intention for my questionnaire. I also cannot see any respondent information so I cannot contact respondents!
I will publish the results again on this blog (like last year in which I also published the results). Last year however the questionnaire was only open for Dutch speaking people.
Wrt the country of residence question. I selected those countries which have highest visitnumbers on this blog. So I hope you don't feel offended if you do not see your country in the list.
The questionnaire was made on surveymonkey (the non-paid version) so I was limited in the amount of questions, the type of questions and the amount of response I can generate at max (100).

Hope you will participate and encourage others to participate as well!

Monday, October 6, 2014

Lost without your powermeter

Not everyone has a powermeter on all their bikes. During winter time you probably ride a bike which is less expensive than your race bike or you do some cyclo-X training without a powermeter. However, since we all love to fill our PMC (Performance Manager Chart) to track our training load we need TSS* (A.Coggan) for our rides. But because we don’t have a powermeter on all our bikes we must have an alternative to derive our TSS.

There are some measures available in terms of training strain like TRIMPS (Bannister, 1974) or RPE (Rate of Perceived Exertion)  (Borg 1970,1998). However these measures do not relate to TSS (and no wonder because TSS is based on power). There is also a table from triathlete guru trainer Joe Friel (see Table below) in which he converts from RPE/HRs to TSS. You can also use your own experience if you do the same rides under same conditions which you registered before.

I decided to look at some of my own data to see whether I could come to a reasonable estimate. I do not register RPE (something I will start doing for next season) so I used some other data for some small analyses to derive a TSS. I used TRIMPS, TRIMP zonal score and average HR which are calculated per ride in Golden Cheetah (GC). I used average HR just as a possible extra (explanatory) variable. I did not change the weights in the zones in GC to calculate the TRIMP zonal score. The idea behind this zonal score is that when you get into higher heart rate zones there is a higher weight applied in the TRIMPS formula.
My objective was to see whether I could use the above metrics (and which was best) to relate to actual TSS. I was also interested to see how Joe Friels table matched with actual TSS. In this way I could determine which metric (method) better related to TSS. This last exercise turned out to be some more difficult than I expected. You can easily export your aggregate ride metrics data from GC, but to calculate the estimated ‘Joe Friels’ TSS (from now TSS_Friel). I had to export all my raw data files and append them. I used a macro for this task which I found on the internet (, because the problem is not appending (you could use a DOS statement for that), but to include a ride name to be able to aggregate the data per ride after derivering the TSS_Friel for each record.

I exported my metrics data (TRIMPS, etc.) and uploaded it to SAS. I cleaned the data files in which my HR monitor was off, rides with no powerdata (so no TSS to estimate), etc. I also had a few rides with TSS above 300. Since I do not do rides in winter times with TSS above 300 I excluded those data, because if I don’t do those rides it’s no use of trying to predict them. The calculated TSS_Friel were later merged to the GC aggregate file. Below some statistics w.r.t the rides.

Basically on average I do quite some rides of around 1.5 hours. My average HR is around 145 (OBLA HR is around 155) and most of the time HR is between 138-150 (89%-97% of OBLA HR).  In terms of TSS on average 111. Mind these are just averages and as such does not say that much of how TSS is generated.
Below the Pearson correlations (all significant p<0.01) between the metrics with TSS:
Average HR is least correlated with TSS (as expected of course). TRIMPS and the TSS_Friel derived metric are most correlated with TSS. In itself a correlation does not say much, only that there seems to be a relation between the two. To get a better visual sight on the relation of the metrics with TSS I ran some scatterplots depicted in the figure below  (I also included a regression spline for visual sake). I have looked at all the measures, but only two the two best related TRIMPS and TSS_Friel.
You see that the relation between TRIMPS / TSS_Friel is not linear with the actual TSS score so a linear equation is not a good idea. The R2 of TRIMPS and TSS_Friel under the above models are 0.8 and 0.83. You also see some outlier points going towards the top right corner. In the figure below you see the scatterplots of the error terms.  
The spread of the error terms seems a little larger for the TRIMPS model than for the TSS_Friel model, but both models show heteroskedasticity. Again the Friel model just a tiny better. In terms of total model error the judgement is 335 vs 376 in favor of TSS_Friel.
I also ran a model with the TRIMPS and average HR: R2 goes to 0.84 and error to 305. Statisticians would say “be parsimonious in parameters’’, because now we have 3 + 3 + 1 intercept in the model. Since I also want to keep it simple for myself I will agree on that one. In the figure below you see both model plotted in terms of model predicted TSS and actual TSS. The left one is the TSS_Friel and the right one TRIMPS.
On the whole the TSS_Friel table seems a good alternative way to estimate my TSS when not riding on your ‘powermeterbike’. In all fairness TRIMPS is not really (practically) that much worse. For my rides (so for my ‘domain’’) I however will choose to use the TRIMPS. The reason is a practical one. Because for the TSS_Friel I have to first export my ride and convert on a record level with the Friel table. This is a bit too much work and so if I impute the TRIMPS (which is automatically calculated in GC) in the equation (which I put in Excel) I immediately have my  estimatedTSS.
Of course TSS and TRIMPS won’t align and that’s not strange because they are two different things. As you get in better form your HR for producing the same wattage will go down (and vice versa for less form). Since TRIMPS is based upon heart rate is it also more variable due to extraneous influences like temperature, stress, etc. It will also give you less "credit" for supramaximal efforts (there is a ceiling effect due to maximal HR). This last remark, however can be counteracted by placing more weighting on the zonal scores (which I let on default in GC). TSS is based on power and as such more responsive.
Hopefully it gives some inspiration for your own data and this kind of estimate is good enough for you too. If you do not use have HR data (anymore) try to use RPE scores and multiply those scores by the time of your ride and see what the relation is with TSS. Maybe try some other data transformations to tweak the relation with TSS. If you are a Strava Premium Member try to use the Sufferscore to model. Maybe that gives an acceptable result too.
*TSS is a registered trademark from Trainingpeaks

Sunday, September 21, 2014

End of season

Yesterday I had a last race. It turned out to be a race of 54km 1.15h. The course was too easy; a lap of around 3 km and only 3 corners. No wind. So basically it is very hard to get away and with these kind of conditions you know it will end up in a sprint. Why? Because there are too many guys who can bridge a gap when conditions are OK. It's not a 'survival' kind of race so the sprinters will be there in the end. And so it was. Ended up 12th. Let's forget it quickly.

Race 1: 1.12h, VI 1.05, NP 297, AP 283, IF 0.928, AR 22%, Anaerobic 11%, Neuro 9%
Race 2: 1.03h, VI 1.12, NP 273, AP 243, IF 0.854, AR 51%, Anaerobic 7%,   Neuro 19%
Race 3: 1.27h, VI 1.14, NP 292, AP 255, IF 0.911, AR 44%, Anaerobic 10%, Neuro 17%
Race 4: 1.28h, VI 1.13, NP 296, AP 262, IF 0.926, AR 37%, Anaerobic 11%, Neuro 14%
Race 5: 1.17h, VI 1.13, NP 290, AP 256, IF 0.983, AR 46%, Anaerobic 8%,   Neuro 24%
Race 6: 1.11h, VI 1.12, NP 296, AP 266, IF 1.004, AR 31%, Anaerobic 14%, Neuro 18%
Race 7: 1.09h, VI 1.12, NP 296, AP 263, IF 0.97   ,AR 32%, Anaerobic 12%, Neuro 15%

Race 8: 1.22h, VI 1.23, NP 308, AP 249, IF 0.984 ,AR 46%, Anaerobic 8%, Neuro 20%
Race 9: 2.45h, VI 1.18, NP 259, AP 219, IF 0.826 ,AR 46%, Anaerobic 9%, Neuro 10%
Race 10: 1.15h, VI 1.15,NP 285, AP247, IF 0.912, AR 42%, Anaerobic 10%, Neuro 15%
Time for some reflection now. An overview and analysis of the season. Some things that went good, some things that went wrong with the goals I defined (and refined) beginning of this season. But first time for some fun rides. Next post will be on W'.