Smaller data: reken maar uit

Strava heeft jaaroverzichten gepresenteerd. Matig zou ik zeggen, want het gaat slechts om afstand en tijd, eigenlijk niet over mijn fitheid.

Het voordeel van een groot platform als Strava is wel dat er programmeurs zijn die met de data aan de haal gaan. Zo kun je op een kaart alle routes die je liep en fietste tonen in een periode (officieel alleen voor betalende Stravaleden, maar het kan ook gratis via Jonathanokeeffe). Mijn kaart voor afgelopen jaar ziet er zo uit. Ik vind het dus echt grappig om te zien dat ik nauwelijks uit de buurt kom. Dat ik maar weinig trainingen van meer een uur doe zou je ook kunnen zeggen. De routes verder uit de buurt zijn wedstrijdjes (en inderdaad, een date in Gent ;)). Niet op de kaart: de marathon in Rome en wat loopjes tijdens een reisje naar Viareggio.

Mijn persoonlijke Strava Heatmap van 2019 (via http://www.jonathanokeeffe.com/strava/map.php)

Terugkijken en vergelijken is leuk, maar ik wil vooral vooruit kijken, daarover zometeen een aankondiging….
Ik wil dus vergelijken in het perspectief van nieuwe doelen. Vorig jaar, vorig schooljaar is dat dus, kon dat slecht, want ik ging in 2017 van training-als-therapie naar een halve triathlon en in 2018 van een halve naar een hele, waarbij ik pas vanaf ongeveer maart 2019 dat systematisch deed en vastlegde en bovendien niet één keer een wedstrijd twee keer heb gedaan. Daarom zijn de jaaroverzichten voor mij nu dan wel handig.
Dus. Mijn trainingsjaar loopt van Brabantse Wal trail tot Brabantse Wal trail (10-11-2018 en 16-11-2019). Zie onderstaande tabel voor de verschillen in overzichten, een samenvatting van de data uit de apps waarin ik e.e.a. vastleg.

ZwemmenFietsenLopen
Totale afstand46 km3439 km999 km
Aantal trainingen3083107
Hoogtetoename20 km5,6 km

De data die ik voortdurend sportend genereer en verzamel intrigeren me immer mateloos. Sinds ik een fietstrainer voor binnen gekocht heb, meet ik ook mijn vermogen op die fiets als ik lekker zit te Zwiften – daarover later meer. Daarom heb ik inmiddels een borstband voor mijn hartslagmetingen, omdat die makkelijker praat met de apps voor het binnenfietsen en die zou ook nauwkeuriger zijn. Tot overmaat van overdaad heeft een oud-klasgenoot van de sportacademie me overtuigd om toch maar een sporttest te doen om mijn bloedwaarden te meten en zo de grenswaarden nauwkeuriger vast te stellen. Nauwkeuriger dus dan de hartslagtests die ik in mijn virtuele fietsapps heb gedaan. Kortom, ik duik nog dieper in mijn data. En dat roept allerlei vragen op.

Misschien is het goed te weten dat, na mijn afterracesentiment, ik uiteindelijk nog niet kon stoppen met (trainen) voor triatlons. Ik wilde door, met een nieuwe traininigsimpuls en een stoerdere uitdaging. Inmiddels heb ik me ingeschreven voor, tromgeroffel, de Embrunman, the Mythe! Afgelopen jaar deed ik daar al de korte afstand met veel plezier in een fantastische omgeving.

Daarnaast heb ik ook advies over mijn trainingen ingewonnen bij een coach van pro-triatleten, heb ik ook een tweedehands ATB gekocht en zit ik dus op Zwift, een fiets- en loopgame waar je tegen elkaar in een virtuele wereld kunt trainen en racen. Dikke pret en vooral nieuwe impulsen dus.

Met Zwift heb ik nu vier applicaties waarmee ik data verzamel over mezelf. Polar, dat praat met mijn horloge; Strava, synchroniseert met Polar Flow en deelt het met vrienden; Trainingspeaks, leest van Polar en analyseert en waarin ik mijn trainingen plan; Zwift om virtueel te fietsen, synchroniseert met Strava en Trainingspeaks.
Wat opvalt is dat die apps het niet helemaal met elkaar eens zijn. Nu zal dat voor mijn niveau en doelen niet heel veel uitmaken, maar ik denk dan: wat wordt er nu gemeten en wat wordt er nu berekend met een algoritme. Ik vind het interessant om dat preciezer te weten, omdat op basis van berekeningen van mijn gemiddelde hartslag, vermogen en snelheid, de apps weer analyses doen. Zwift geeft je bijvoorbeeld een klassering op basis van je vermogen in races. Strava suggereert allerlei uitdagingen en nieuwe vrienden. Van Trainingpeaks (TP) heb ik het uitgebreide pakket en die app analyseert mijn grenswaarden en past zo de intensiteit van mijn trainingen aan en doet zelfs voorspellingen over hoe fit ik ben op 15 augustus 2020 (Embrun) op basis van al die gegevens. Ze noemen dat de continuous training load (CTL)

Laat ik eens mijn meest recente virtuele fietstraining nemen. Ik kan dan Trainingspeaks, Strava en Zwift met elkaar vergelijken.

EenheidZwiftStravaTrainingspeaks
Tijd0:480:45:590:45:52
Afstand21,8 km21,77 km21,8 km
Gemiddelde snelheid28,8 km/u28,5 km/u
Gemiddeld vermogen137 W140 W137 W
Arbeid in Kj380379

Het eerste dat opvalt is dat Zwift maar zeer beperkt is in de gegevens die het naderhand nog laat zien. Tijdens de rit zie je bijvoorbeeld wel je snelheid en vermogen per kg. Ze doen ook wel degelijk iets met de arbeid, want ze berekenen ook het aantal punten pizza dat je in totaal al aan arbeid op de fiets heb geleverd. Met ander woorden, het is echt een spel met grappenmakers als ontwikkelaars. Gek genoeg geven ze wel nauwkeurig data door aan de apps waarmee je kunt synchroniseren. Zo nauwkeurig in ieder geval dat Trainingpeaks en Strava tot verschillen in de afronding komen. Geen grote verschillen, maar het betekent op zijn minst dat Zwift dus niet de door hen vastegestelde afstand, tijd en snelheid doorgeeft, maar iets ruwere data. Waarschijnlijk een soort datapunten over waar ik in de Watopia (de virtuele wereld in Zwift) ben op welk moment. Eerste conclusie: de apps berekenen zelf de eenheden die ze analyseren.
Van fietsen gaan we, net als bij de triathlon naar lopen. Mijn laatste serieuze loopje was een cross, in wedstrijdverband.

EenheidPolarStravaTrainingspeaks
Tijd0:47:570:47:560:47:59
Afstand9,75 km9,74 km9,75
Gemiddelde hartslag169170169
Calorieën in Kcal530530530

Op het eerste gezicht is er weinig vreemds te zien, behalve een paar afrondingsverschillen. Als we inzoomen op de details in de data, zien we iets opvallends met betrekking tot het maximale tempo dat ik heb gelopen. Bij TP is dat 02:49 per kilometer en Polar 03:47. Dat is geen afrondingsfout meer. Het zou kunnen betekenen dat Polar vreemde uitschieters minder of geen waarde toekent in de berekening. Dus dat het verschil tussen de tijd op plaats A en B, zo onwaarschijnlijk klein is dat het een meetfout moet zijn en Polar het daarom niet meerekent.
Een andere opvallend verschil laat zien dat beide programma’s waarschijnlijk ook andere referentiedata gebruiken. Het verschil in stijgen en dalen is bij Polar namelijk 85 en 80 meter, bij TP respectievelijk 86 en 71 meter. Meest logische verklaring is dat de informatie waar de gps-gegevens mee vergeleken worden verschillend zijn (bijvoorbeeld Google en Open Streetmap). In beide gevallen ben ik ook nog hoger geëindigd dan ik begon en dat klopt niet (want het waren rondjes).
De tweede conclusie is dus: behalve logische afwijking in afronding, kiezen algoritmes zelf welke data ze wel en niet meenemen bij het berekenen, waardoor wel degelijk verschillen ontstaan die relevant zijn en koppelen ze de data die ze krijgen aan verschillende referentiedata.

Laten we er nog een stukje dieper in duiken en kijken welke ‘adviezen’ de apps geven op basis van de data, de analyses en de verwerking daarvan.
Daarvoor moeten we een periode van vòòr mijn Zwiftavonturen nemen, want trainen op Zwift kan technisch niet gecombineerd worden met vastleggen in Polar (ingewikkeld bluetoothding en de reden dat ik een extra hartslagband heb).
Daarbij moet ik wel opmerken dat ik van Strava en Polar niet de betaalde versies heb. De reden is relevant: Polar en Strava geven in de onbetaalde versie al niet helemaal het type advies waar ik op zit te wachten, het is paternaliserend en aan de veilige kant bij Polar (‘Let op, u bent overtraind!’) en te veel gericht op competitie op het platform zelf bij Strava (‘Ga net als XX anderen de uitdaging aan!’).

Ik neem de maand augustus van 2019, toen ik al vol in training was voor de triathlon van Almere en ik de korte afstand van de Embrunman deed. Dat is meteen handig om me komend seizoen mee te vergelijken. Eerst Polar. Het best geeft de grafiek van de opbouw van de cardiobelasting mijn maand weer. De staven zijn de trainingen weer (en op 15-8 de wedstrijd) in de vorm de zogenaamde TRIMP.

Cardiobelasting in augustus 2019 via Polar

Dat is volgens Polar:

“Cardio Load is determined by a training impulse (TRIMP) calculation. It takes into account the duration and intensity of the session and can be calculated for all sports from which heart rate data is available. Typical values for a 60-minute training session range from 70 to 130.

De twee lijnen geven respectievelijk de belasting en tolerantie weer:

“Belasting laat zien hoeveel je jezelf de laatste tijd hebt belast met trainen. Het toont je gemiddelde dagelijkse belasting over de afgelopen 7 dagen.”
“Tolerantie beschrijft hoe goed je geoefend bent in cardiotraining. Het toont je gemiddelde dagelijkse belasting over de afgelopen 28 dagen.”

We zien mijn tolerantie mooi rustig stijgen en de belasting fluctueert met sessies die er per dag zijn.
Daarnaast heeft Polar ook een grafiek van de status van de cardiobelasting. Daar zien we dat Polar wel snel in paniek is, want ik was volgens deze grafiek de hele maand overbelast was en liep het risico dat ik geblesseerd zou raken. Wat natuurlijk eigenlijk wel waar is (als je veel traint loop je veel risico), maar over het hele jaar genomen was ik keurig op koers.

Status van mijn belasting in augustus 2019 volgens Polar

De verklaring daarvoor is dat Polar slechts een week voor de belasting en 28 dagen voor de tolerantie als referentie neemt. Wellicht dat in de betaalde versie iets meer data meegenomen worden bij het bepalen van de status van de belasting.
Dat is in ieder geval wel wat TP doet. Het overzicht dat het best mijn maand laat zien is de Performance management chart. In een eerder post heb ik die grafiek al laten zien. De blauwe stippen geven intensiteit van een training (of wedstrijd) weer (Intensity Factor, IF); de rode stippen de zwaarte van een training (Training Stress Score, TSS); de roze lijn de vermoeidheid (Fatique); de gele lijn de Form (Training Stress Balance, TSB); de blauwe lijn de Continuous Training Load (CTL), zeg maar mijn algehele fitheid.

Mijn prestatieoverzicht in augustus 2019 volgens Trainingspeaks

TP legt de verschillende termen en de berekening ervan als volgt uit:

‘Intensity factor is the ratio of the Normalized Power to the rider’s functional threshold power, which gives the user a relative intensity in relation to their threshold power. IF is used to calculate TSS.’

Training Stress Score (TSS) is a composite number that takes into account the duration and intensity of a workout to arrive at a single estimate of the overall training load and physiological stress created by that training session.  It is conceptually modeled after the heart rate-based training impulse (TRIMP).  By definition, one hour spent at Functional Threshold Power (FTP) is equal to 100 points. 

Dus TSS is vergelijkbaar met de TRIMP in Polar, maar dan ook met vermogen. Aangezien ik dat destijds nog niet registreerde gebruikt TP de TSS gebaseerd op hartslag (hrTSS).

Training Stress Balance (TSB) or Form represents the balance of training stress.
Form (TSB) = Yesterday’s Fitness (CTL) – Yesterday’s Fatigue (ATL)
Fatigue is an exponentially weighted average of your training stress scores from the past 7 days which provides an estimate of your fatigue accounting for the workouts you have done recently.
Fitness (CTL) is an exponentially weighted average of your last 42 days of training stress scores (TSS) and reflects the training you have done over the last 6 weeks. However, the workouts you did 15 days ago will impact your Fitness more than the workouts you did 30 days ago.

Hier zien we dat, behalve dat TP iets meer indicatoren gebruikt bij het weergeven van mijn fitness, ook de tijd waarover ze die gegevens meenemen groter is (42 dagen, ten op zichtte van 28 bij Polar). Het verschil in ‘advies’, als je dat van TP zo zou mogen noemen, is ook meteen helder uit de grafieken. Polar zegt eigenlijk dat ik rustiger aan moet doen; TP dat weliswaar mijn vorm achteruit gaat als ik een zware wedstrijd doe (de korte Embrunman op 15-8), maar dat daardoor mijn fitness weer iets stijgt.

Conclusie 3, zonder een appvergelijkingsite te willen worden, TP klinkt en is professioneler en preciezer. Niet alleen in data, maar ook in uitleg over die data. Je moet die wel zelf willen interpreteren. De onbetaalde versie van Polar Flow waarschuwt je vooral om niet te zwaar te trainen om blessures te voorkomen. Ik zou de apps op zichzelf dus niet als vervanging van een coach gebruiken. Daarover in een volgend blog meer.

Slotconclusie: er blijft ondanks en/of dankzij de hoeveelheid data veel ruis. Hoe dieper ik in de data duik, hoe relativerender ik wordt. Stel nu dat ik direct via neurofeedback spierspanning, hartritme etc. voel en exact op schema’s zou kunnen lopen en stel dat die schema’s dan ook exact op mij kunnen worden opgesteld, dan nog is er meer. Niet een hogere kracht ofzo, maar meer dan biologische factoren. Ik ben niet mijn brein en dus ben ik ook niet alleen maar mijn spieren en andere organen. Ik ben een geheel, ik ben één. Liefst ook één met en in mijn omgeving. Reken dat maar eens uit.