miro
Runalyzer
Posts: 22
Joined: Thu 4. Jan 2018, 22:10

VO2max Schätzung und Berechnung

Thu 4. Jan 2018, 22:41

Hallo liebe Runalyzer,

erstmal kurz ein Danke für Euer Mühen beim Aufbau dieser tollen Plattform! Habe schon einige Portale durchprobiert, aber keine liefert mir so übersichtlich so viele Trainingsdaten wie Runalyze!

Allerdings habe ich auch ein kleines Problem mit Runalyze, und das sind die Berechnungen von VO2max. Im Vergleich zu anderen Programmen (Garmin, HRV4Training) sind die Werte in Runalyze deutlich niedriger. Das an sich ist ja kein Problem - ich halte die Werte von Garmin und HRV4Training für deutlich zu hoch, da sie mit den Jack Daniels Formeln auf viel zu gute Wettkampfzeiten schließen lassen. Auch die Garmin-geschätzten Wettkampfzeiten sind deutlich zu gut. Doch immerhin sind die VO2max-Werte von Garmin und HRV4Training konstant bzw. passen sich nur dann an, wenn es tatsächlich Leistungsveränderungen gibt.

Bei Runalyze ist das anders: Alle Tempoläufe bekommen einen höheren VO2max (der meiner Meinung nach halbwegs realistisch ist) und alle Langen Läufe einen sehr niedrigen. Gerade der sehr niedrige Wert für LLs stört mich, da eine Wettkampfschätzung mit diesem VO2max auf deutlich schlechtere als die von mir erreichbaren Zeiten kommt. Damit ist er definitiv falsch.

Ich habe im Forum schon gelesen, dass Ihr da momentan dran seid, das Berechnungsmodell zu verbessern. Gerade der Ansatz nach dem Whitepaper von Firstbeat (also die Berechnung für einzelne Teilstrecken) scheint mir ein guter zu sein, und zwar aus folgendem Grund: Bei einem Langen Lauf, bei dem am Ende noch ein schnelles "Intervall" gemacht wird, hebt das Intervall den Durchschnitt kaum. Der VO2max ist also nahe dem des langsamen Tempos (also bei Runalyze sehr niedrig). Misst man den VO2max für den schnellen Abschnitt separat, erhält man einen höheren VO2max-Wert, der deutlich über dem liegt, der im Durchschnitt heraus kommt. Da der VO2max ja den MAXIMALEN VO2-Wert darstellen soll, ist der Wert für den schnellen Intervall der richtige, der VO2max für den langsamen Teil ist meiner Meinung nach zu ignorieren. Teilt man die Strecke nun in viele Teilstrecken ein und berechnet hierfür die jeweiligen VO2max, so dürfte der höchste daraus resultierende Wert recht korrekt sein. Ich würde hierbei aber nicht bis auf 30s herunter gehen, sondern eher so 2-3 Minuten Segmente bestimmen. Selbst wenn der Puls hier schwankt, der Durchschnitt über dieses Segment dürfte realistischer sein als ein 30s-Wert, der mögilcherweise einen hohen anaeroben Leistungsteil beinhaltet, also einen nicht mit VO2max korrelierenden Wert.

Aber jetzt bin ich abgeschweift. Ich wollte eigentlich zur Berechnung der VO2max Schätzung etwas anmerken. Sehe ich mir die Seite für meinen heutigen Lauf an, so berechnet mir Runalyze einen VO2max von 30.34 (nach JD). Die Umrechnung mittels Herzfrequenz kommt auf 82% HRmax und setzt ihn mit 76% vVO2max gleich. Daraus errechnet es dann VO2max von 37.57. Und genau diesen letzten Schritt kann ich nicht nachvollziehen. Wenn der VO2max von 30.34 bei einer %HRmax von 82 einem %vVO2max von 76 entspricht, so wären 100% vVO2max doch gleich 30.34/0.76 und da kommen bei mir 39,95 heraus statt 37,57. Ist das nun ein Fehler im Programm oder habe ich da die Umrechnungsformel falsch verstanden?

Viele Grüße
Michael
0 x


User avatar
laufhannes
Core developer
Posts: 731
Joined: Mon 29. Jul 2013, 20:59

Re: VO2max Schätzung und Berechnung

Fri 5. Jan 2018, 08:54

Hinsichtlich der VO2max-Umrechnung mit Blick auf die Prozentzahlen hat elske dich ja schon auf den passenden Thread verwiesen.
miro wrote:
Thu 4. Jan 2018, 22:41
Da der VO2max ja den MAXIMALEN VO2-Wert darstellen soll, ist der Wert für den schnellen Intervall der richtige, der VO2max für den langsamen Teil ist meiner Meinung nach zu ignorieren. Teilt man die Strecke nun in viele Teilstrecken ein und berechnet hierfür die jeweiligen VO2max, so dürfte der höchste daraus resultierende Wert recht korrekt sein. Ich würde hierbei aber nicht bis auf 30s herunter gehen, sondern eher so 2-3 Minuten Segmente bestimmen.
Das Ding ist aber: Den VO2-Wert können wir gar nicht berechnen. Unser Modell geht ja davon aus, dass sich aus dem Verhältnis von Herzfrequenz und Geschwindigkeit die Leistungsfähigkeit bestimmen lässt. Es wird also eigentlich anhand dieses Verhältnisses auf eine mögliche Wettkampfzeit geschlossen (indem die Herzfrequenz auf die theoretische Wettkampf-Herzfrequenz angehoben wird und die Geschwindigkeit auch entsprechend umgerechnet wird). Für diese Annahme brauchen wir Abschnitte, in denen das Verhältnis von Herzfrequenz und Geschwindigkeit dem "Normalfall" entspricht. Wenn wir nun aber den Abschnitt (wie auch immer der geartet ist) mit maximalen Wert suchen, finden wir einen Abschnitt, in dem das Verhältnis von Geschwindigkeit und Herzfrequenz ganz stark verzerrt ist, bspw. nach einer kurzen Pause gut erholt mit Rückenwind einen Berg runter laufen. Der Puls wird weit unten, das Tempo weit oben sein.

Am besten wäre es, wenn ein paar versierte Nutzer Zugriff auf unseren "Playground" erhalten. Ich kläre mal mit @mipapo, ob sich das auf unserer Testplattform realisieren lässt.

In viewtopic.php?p=3462#p3462 hatte ich ja schon ein Bild gezeigt, dass die neue Berechnung über den gesamten Zeitraum vergleich. Ich hänge hier aber noch zwei Bilder an, wie ich die neue Berechnungsmethode im Playground für eine einzelne Aktivität betrachten kann. Das Problem bei den ganzen Betrachtungen ist natürlich: Ich kenne nicht die Wirklichkeit. Weder beim Form-Verlauf über die Jahre und noch viel weniger für eine einzelne Aktivität weiß ich, welcher Wert am Ende rauskommen sollte. Das könnte ich letztlich nur für einen optimalen Wettkampf selbst bestimmen. (Wobei fraglich ist, ob man sagen kann, dass ein Wettkampf wirklich optimal war.) Ziel ist aber natürlich in erster Linie, aus den Trainingsdaten eine vernünftige Prognose erstellen zu können.

In den Grafiken ist jetzt oben die Aktivität zusammengefasst und darunter sind die aktuellen Einstellungen dargestellt: Für die "Geschwindigkeit" wird der Mittelwert der Grade Adjusted Pace des jeweiligen Abschnitts verwendet. Das lässt sich dynamisch auswählen. Außerdem können auch die Einstellungen wie 30s-Abschnitt und das Betrachten welches Zeitraums (hier 360-1200s, also 6 bis 20 min) über die URL-Parameter definiert werden. Nicht dort angezeigt aber auch möglich ist das Ändern der "geforderten Konstanz" der Herzfrequenz eines Abschnitts (default: 2bpm, also z.B. 150-152bpm).

Darunter sind die berechneten Werte dargestellt. Mean und Abs. error sind nicht robust gegen einzelne Ausreißer, während Median und MAD error robuste Statistiken sind. Über den MAD error lässt sich somit auch bestimmen, wie "zuverlässig" ein Schätzwert ist. In diesem Fall sind bei den schwarzen Punkten quasi zwei Ausreißer dabei, die restlichen vier liegen fast auf einer Linie. Das Ergebnis ist ein entsprechend niedriger MAD error (also eine hohe Zuverlässigkeit des geschätzten VO2max).

Im ersten Plot sind dann die einzelnen geschätzten VO2max-Werte dargestellt, je nach gewählter Methode. Die grauen Punkte sind außerhalb des betrachteten Bereichs, die schwarzen die tatsächlich gewählten. Es wird auch eine Trendline angezeigt, um zu sehen, wie dieses Verhältnis über die Zeit schlechter wird (schwarz: lineare Regression, blau: robuste Theil-Sen-Regression). In den weiteren Plots sind dann Pace, Grade Adjusted Pace, Höhenprofil, Höhenprofil nach Butterworth-Filter und Steigungsprofil dargestellt, jeweils mit grau markierten 30s-Bereichen.
New-VO2max-20170912-1.png
New-VO2max-20170912-1.png (100.33 KiB) Viewed 2636 times
New-VO2max-20170912-2.png
New-VO2max-20170912-2.png (106.2 KiB) Viewed 2636 times
0 x
User help -- short questions via Twitter, Facebook

User avatar
laufhannes
Core developer
Posts: 731
Joined: Mon 29. Jul 2013, 20:59

Re: VO2max Schätzung und Berechnung

Fri 5. Jan 2018, 09:55

Unter testing.runalyze.com ist das Ganze jetzt freigeschaltet. Wer also zu unseren Testern gehört, kann sich dort mit seinem normalen Account einloggen und findet auch seine Daten wieder (je nach Zeitpunkt der letzten Kopie). Änderungen werden aber natürlich nicht übertragen, werden also spätestens beim nächsten Aufsetzung der Test-Plattform wieder gelöscht. Wer bisher kein Tester ist, kann sich einfach dort bei der Testplattform neu anmelden. (Das Übertragen aller Daten der Testnutzer dauert zu lange, als dass wir das jetzt nach und nach für jeden Interessierten machen könnten.)

Du könntest dort also ein paar deiner Trainings hochladen und einmal den Korrekturfaktor in der Konfiguration auf deinen richtigen stellen. Die oben gezeigten Grafiken erhältst du dann über https://testing.runalyze.com/_playground/new-vo2max/ID, wobei die ID natürlich durch die eines deiner Trainings ersetzt werden muss.
0 x
User help -- short questions via Twitter, Facebook

miro
Runalyzer
Posts: 22
Joined: Thu 4. Jan 2018, 22:10

Re: VO2max Schätzung und Berechnung

Tue 9. Jan 2018, 00:40

Hallo Laufhannes,

danke für den ausführlichen Post!

Nach ein bisschen Überlegung muss ich sagen: Ja, da hast Du natürlich recht, es wird nicht VO2 berechnet sondern VO2max geschätzt.

Dein Argument, der maximale ermittelte VO2max Wert würde nicht korrekt sein, da er vermutlich ein Zufallswert aus noch nachziehendem Puls und vielleicht Lauf Bergab sei, ist vermutlich auch richtig (obwohl ja der Grade Adjusted Pace die Höhe schon berücksichtigt haben müsste). Aber das war ja gerade der Punkt meiner Aussage aus dem Eingangspost, dass die kurze Zeit von 30 Sekunden noch einen hohen Anteil an diesen "nachhängenden" Pulswerten enthalten kann (egal ob durch anaerobe Leistungsbereitstellung oder noch einer hohen Belastung nachfolgend ein immer noch erhöhter Puls). Durch deine niedrig gewählte Puls-Toleranz hast Du dafür natürlich wieder einen guten Filter, der diesen Fall eliminieren sollte und dadurch nur Abschnitte mit schon eingeschwungenem Puls berücksichtigt.

Trotzdem ist das Ergebnis aus dem Playground für mich überraschend: Die VO2max Werte der 30-Sekunden-Abschnitte sind sowohl bei Dir als auch bei meinem Testlauf sehr breit streuend. Das kommt mir nicht richtig vor. Natürlich kann man da mit Regression eine Gerade durch ziehen, aber die Standardabweichung ist für meine Begriffe dabei doch enorm. Mein Lauf zeigt einen Maximalwert im Bereich 68 und einen Minimalwert im Bereich 28. Das ist schon ein gewaltiger Unterschied.
In Deinen Daten ist es nicht ganz so krass, aber der letzte und auch höchste VO2max-Wert dort ist ein gutes Beispiel für meine Bedenken: Die (ggf. auch Grade Adjusted) Pace ist vorher niedrig, ebenso der Puls, dann gibst Du Gas, der Pace steigt sprungartig an, der Puls steigt auch, hinkt aber nach. Dann geht die Pace wieder etwas herunter, was dazu führt, dass der Puls gleich bleibt. Dein Filter gibt grünes Licht und ermittelt für einen Zustand, bei dem der Körper noch nicht entsprechend der Pace ausbelastet ist, und demzufolge der Puls noch zu niedrig ist, einen zu hohen VO2max.

Abhilfe könnte schaffen:
1. Neben dem Puls sollte auch die Belastung möglichst konstant sein. Steigung alleine reicht nicht (man könnte ja einfach schneller laufen), genau so wenig wie Pace alleine (es könnte ja bergauf gehen). Beide müssen verrechnet werden, z.B. Steigung/Pace. Vielleicht ist das ja Deine Grade Adjusted Pace. Nur wenn dieser Wert in gewissen Grenzen bleibt, vor allem auch vor dem betrachteten Intervall mit gleichem Puls, ist die VO2max-Berechnung valide.
2. Längere Zeitfenster im Minutenbereich statt 30s-Bereich sollten gewählt werden. Dadurch ist das "nachhinken" des Pulses nicht mehr so stark ausschlaggebend. Die Puls-Toleranz muss man dann natürlich etwas anheben, um noch genügend Abschnitte zu bekommen.

Nachteil der längeren Zeitfenster mit den dann größeren Schwankungen ist natürlich die Tatsache, dass man wieder Mittelwerte für Puls und Pace bilden muss oder gleich integrieren über die Strecke. Generell denke ich aber, dass dadurch die Genauigkeit eher steigt.

Insgesamt sehe ich aber auch noch ein Problem mit dem Endergebnis: VO2max nach der neuen Methode ist bei meinen Daten DEUTLICH höher als die bisherige Berechnung. Damit erreicht sie wieder Werte, die meiner Meinung nach zu hoch sind. Aber da meine Beispielberechnung mit aktuellen Daten erfolgt ist und keine aktuellen Wetkampfdaten vorliegen, kann ich das leider nicht belegen. Werde wohl nochmal alte Daten vor einem Wettkampf berechnen lassen.

Noch ein paar Fragen zu den Formeln im Link aus dem 2. Beitrag:
a) Die Formeln zeigen Berechnungen nach JD mit VDOT. Setzt Ihr das mit VO2max gleich?
b) Die Formeln zur Umrechnung von HR in %VDOT am Ende der Datei stammen aus einer Regression. Ist bekannt, wie gut diese gelungen ist? Möglicherweise liegt hier ja der Grund dafür, dass meine LLs so niedrige VO2max-Werte bekommen. Oder stehe ich mit diesem Effekt alleine da?

Viele Grüße
Michael
0 x

User avatar
laufhannes
Core developer
Posts: 731
Joined: Mon 29. Jul 2013, 20:59

Re: VO2max Schätzung und Berechnung

Tue 9. Jan 2018, 10:05

Danke für deine Rückmeldung und die Beobachtungen!
miro wrote:
Tue 9. Jan 2018, 00:40
1. Neben dem Puls sollte auch die Belastung möglichst konstant sein. Steigung alleine reicht nicht (man könnte ja einfach schneller laufen), genau so wenig wie Pace alleine (es könnte ja bergauf gehen). Beide müssen verrechnet werden, z.B. Steigung/Pace. Vielleicht ist das ja Deine Grade Adjusted Pace. Nur wenn dieser Wert in gewissen Grenzen bleibt, vor allem auch vor dem betrachteten Intervall mit gleichem Puls, ist die VO2max-Berechnung valide.
Ja, das ist bereits die Grade Adjusted Pace. Die stammt aus einem Paper von Minetti (sodass der Einfluss bei einem Gefälle ab 10% wieder "schlechter" wird). Allerdings halte ich es für unpraktikabel, hier noch einen direkten Filter anzuwenden, dass dieser Wert "konstant" bleiben soll. Durch die hohe Abtastrate (meist 1 Datenpunkt pro Sekunde) und die GPS-Ungenauigkeit, streut das Geschwindigkeitssignal enorm. Das ist ja auch in den Grafiken zu sehen.

Was ich für möglich halte: Ein Abschnitt gilt nur als zuverlässig, wenn dessen durchschnittliche Geschwindigkeit (GAP) sich nicht großartig von der durchschnittlichen Geschwindigkeit der vorigen X Sekunden unterscheidet.

Als Beispiel (für 30s-Bereiche):
Sekunden 500 bis 530 werden bzgl. der anderen Kriterien als zuverlässig eingestuft. Avg. GAP in diesem Abschnitt: 5:00/km.
Wenn nun die avg. GAP in den Sekunden 470 bis 500 z.B. 4:50/km oder 5:10/km beträgt, ist das okay. Wenn es aber 5:30/km oder 4:30/km wäre, würde man den Abschnitt nicht verwenden. Das führt aber natürlich zu noch mehr Stellschrauben: Wie groß darf der Unterschied in der GAP sein? Und sollte der nicht in km/h statt min/km angegeben sein? Und wie groß soll der Zeitbereich sein, auf den zurückgeschaut wird? Gleich groß wie der für die VO2max-Schätzung gewählte Bereich oder größer?

miro wrote:
Tue 9. Jan 2018, 00:40
2. Längere Zeitfenster im Minutenbereich statt 30s-Bereich sollten gewählt werden. Dadurch ist das "nachhinken" des Pulses nicht mehr so stark ausschlaggebend. Die Puls-Toleranz muss man dann natürlich etwas anheben, um noch genügend Abschnitte zu bekommen.
Da würde ich die obige Variante vorziehen, mit der ja einigermaßen explizit geprüft werden kann, ob der Puls einer Belastungsänderung nachhinkt. Alternativ, um nicht von den Schwankungen des Geschwindigkeitssignals abzuhängen, könnte man das gleiche Prinzip stattdessen für den Puls anwenden: Ein 30s-Abschnitt gilt als verlässlich, wenn der Puls in diesen 30s und in den vorherigen 30s im konstanten Bereich von bspw. 2 bpm liegt. Für die Schätzung selbst wird dann aber nur der abschließende 30s-Bereich genutzt.

miro wrote:
Tue 9. Jan 2018, 00:40
Trotzdem ist das Ergebnis aus dem Playground für mich überraschend: Die VO2max Werte der 30-Sekunden-Abschnitte sind sowohl bei Dir als auch bei meinem Testlauf sehr breit streuend. Das kommt mir nicht richtig vor. Natürlich kann man da mit Regression eine Gerade durch ziehen, aber die Standardabweichung ist für meine Begriffe dabei doch enorm. Mein Lauf zeigt einen Maximalwert im Bereich 68 und einen Minimalwert im Bereich 28. Das ist schon ein gewaltiger Unterschied.
In meinem Beispiel ziehe ich ja nur eine Gerade durch die sechs schwarzen Punkte, da die ersten Minuten, in denen sich der Puls einpendeln muss, und der spätere Bereich, in dem der kardiovaskuläre Drift eine Rolle spielt, nicht berücksichtigt werden. Und von diesen sechs schwarzen Punkten werden ja auch nur die mittleren vier gewählt, da eine robuste Regression verwendet wird. Die vier sind in diesem Fall sehr nah beieinander. Zusätzlich soll ja auch die Standardabweichung (bzw. genauer der MAD error) verwendet werden, um im gesamten Form-Verlauf jedem einzelnen Schätzwert eine Zuverlässigkeit zuweisen zu können.

Es stimmt aber natürlich: Die Spannweite der Schätzwerte im gesamten Verlauf der Aktivität ist sehr groß. Womit man immer mal zu kämpfen hat: Aussetzer beim Pulsgurt oder sehr große Schwankungen im GPS-Signal. Die Signale können ja auch mal über 30 Sekunden (oder über 60 Sekunden) "konstant falsch" sein. Außerdem kommen ja auch viele externe Faktoren hinzu, die wir nie berücksichtigen können, zum Beispiel der Untergrund und Wind.

Den Abfall von knapp über 50 auf knapp über 40 halte ich in meinem Beispiel für realistisch. Einzelne Ausreißer wird es immer geben. Der Bereich zwischen km 6 und km 9 gefällt mir aber auch nicht. Das ist aber gerade der Bereich, wo es bergab ging - und das auf einem schmalen, etwas unwegsamen Singletrail. Auf einem breiten Waldweg (oder gar Straße) sähe das Tempo bei dem Gefälle trotz gleicher Herzfrequenz ganz anders aus.
Falls dieser Abschnitt nun in dem berücksichtigen Bereich (Minuten 6 bis 20) läge, könnte man ihn evtl. aufgrund der hohen Streuung vollständig als unzuverlässig einstufen. Dann würde die Aktivität eben ohne Schätzwert dastehen. (Und wie gesagt: Es ist bereits so geplant, dass die Streuung in Form des MAD errors bestimmt, wie groß der Einfluss dieser Aktivität auf die gesamte Form ist.)
miro wrote:
Tue 9. Jan 2018, 00:40
Insgesamt sehe ich aber auch noch ein Problem mit dem Endergebnis: VO2max nach der neuen Methode ist bei meinen Daten DEUTLICH höher als die bisherige Berechnung. Damit erreicht sie wieder Werte, die meiner Meinung nach zu hoch sind. Aber da meine Beispielberechnung mit aktuellen Daten erfolgt ist und keine aktuellen Wetkampfdaten vorliegen, kann ich das leider nicht belegen. Werde wohl nochmal alte Daten vor einem Wettkampf berechnen lassen.
Das kann aber auch einfach am Korrekturfaktor liegen. Mit dem Korrekturfaktor lassen sich die Werte ja auf ein beliebiges Level heben/senken. Und der aktuelle Korrekturfaktor hängt ja von der bisherigen Schätzmethodik ab. Nur wenn mit der neuen Methode der VO2max für einen Wettkampf gut passt, bei den Trainingseinheiten davor er aber deutlich höher ist, wäre das ein Problem.

miro wrote:
Tue 9. Jan 2018, 00:40
a) Die Formeln zeigen Berechnungen nach JD mit VDOT. Setzt Ihr das mit VO2max gleich?
b) Die Formeln zur Umrechnung von HR in %VDOT am Ende der Datei stammen aus einer Regression. Ist bekannt, wie gut diese gelungen ist? Möglicherweise liegt hier ja der Grund dafür, dass meine LLs so niedrige VO2max-Werte bekommen. Oder stehe ich mit diesem Effekt alleine da?
a) Mit VO2max meine ich jetzt eigtl. immer "Effektiver VO2max" - also nicht den medizinisch berechenbaren, sondern den direkt mit der Leistungsfähigkeit beim Laufen zusammenhängenden. Und damit: Ja, den setzen wir quasi mit VDOT gleich.

b) Die Genauigkeit der Regression könnte ich raussuchen, aber das alleine hilft nicht viel: Die Regression wurde für eine Tabelle gemacht, die selbst bereits eine entsprechende Ungenauigkeit aufweist. Die Prozentwerte sind dabei immer ganzzahlig, sodass die Tabelle quasi eine stufenweise Abhängigkeit darstellt. Auf was für Daten diese Tabelle basiert bzw. mit welcher Genauigkeit diese aus irgendeiner Studie abgeleitet wurde, ist hingegen nicht bekannt.
Dass besonders lange Läufe niedrige Werte erhalten, dürfte an dem bisher nicht berücksichtigen kardiovaskulären Drift liegen. Wenn die Umrechnung HR in %vVO2max falsch ist, müssten Läufe mit besonders niedrigem oder besonders hohem Puls auffällig sein.


Was ich mir grundsätzlich noch wünschen würde: Eine Möglichkeit, das Modell am Ende zu validieren oder ggf. die Parameter automatisch zu bestimmen. Dazu bräuchten wir dann z.B. Die Trainingsdaten (HF, Pace und Höhe als vollständige Datenreihe) von ~100 (?) Nutzern, die einen ihrem eigenen Empfinden nach optimalen Wettkampf gelaufen sind. Dann würde man aus diesem Wettkampf den "tatsächlichen" Effektiven VO2max bestimmen und versuchen, die Schätzwerte der Trainings der letzten ~6 Wochen (?) vor dem Wettkampf möglichst an diesen Wert anzupassen. Da könnte man dann verschiedene Einstellungen für die Breite des Zeitbereichs und die einzelnen Abweichungen simulieren und würde auch ein Gefühl dafür bekommen, welche Art von Aktivitäten sich gut/schlecht eignet und wie gut die Anpassung überhaupt funktionieren kann. Andernfalls wäre das so ein wahlloses "Ich finde 30s gut. Du 60s. Einigen wir uns auf 45s. Passt schon irgendwie.".
0 x
User help -- short questions via Twitter, Facebook

miro
Runalyzer
Posts: 22
Joined: Thu 4. Jan 2018, 22:10

Re: VO2max Schätzung und Berechnung

Tue 9. Jan 2018, 15:27

Hallo laufhannes,
laufhannes wrote:
Tue 9. Jan 2018, 10:05
Was ich für möglich halte: Ein Abschnitt gilt nur als zuverlässig, wenn dessen durchschnittliche Geschwindigkeit (GAP) sich nicht großartig von der durchschnittlichen Geschwindigkeit der vorigen X Sekunden unterscheidet.

Als Beispiel (für 30s-Bereiche):
Sekunden 500 bis 530 werden bzgl. der anderen Kriterien als zuverlässig eingestuft. Avg. GAP in diesem Abschnitt: 5:00/km.
Wenn nun die avg. GAP in den Sekunden 470 bis 500 z.B. 4:50/km oder 5:10/km beträgt, ist das okay. Wenn es aber 5:30/km oder 4:30/km wäre, würde man den Abschnitt nicht verwenden.
Das GAP-Verhalten im Abschnitt vor dem fraglichen durch Puls ausgesuchten Abschnitt betrachten ist ja gleich noch besser, das ist eine gute Idee!
laufhannes wrote:
Tue 9. Jan 2018, 10:05
Das führt aber natürlich zu noch mehr Stellschrauben: Wie groß darf der Unterschied in der GAP sein? Und sollte der nicht in km/h statt min/km angegeben sein? Und wie groß soll der Zeitbereich sein, auf den zurückgeschaut wird? Gleich groß wie der für die VO2max-Schätzung gewählte Bereich oder größer?
Ob km/h oder min/km spielt in meinen Augen keine Rolle, sie sind ja ineinander umrechenbar und nur ein Darstellungs-/Eingabethema, letztendlich also Geschmackssache. Vielleicht wäre sogar eine Prozentangabe noch besser.
Der Zeitbereich ist sicherlich eine Einflussgröße, wie schon erwähnt. Da käme es auf Tests mit Praxiswerten an, also wie lange sich der Puls auf eine neue Belastung einstellt. Für einen statistischen Mittelwert braucht man Untersuchungsdaten (die in Runalyze ja massig vorhanden sein sollten) und die Einwilligung der Benutzer dazu, sie auszuwerten. Oder ist das durch die Nutzungsbedingungen sowieso schon ermöglicht? Ich würde meine Daten für diesen Zweck jedenfalls gerne zur Verfügung stellen. Für einen groben Wert würde aber sicherlich schon mal die Analyse eines Laufs mit sprunghaften Tempoänderungen (also Intervalllauf) ausreichen.
laufhannes wrote:
Tue 9. Jan 2018, 10:05
miro wrote:
Tue 9. Jan 2018, 00:40
2. Längere Zeitfenster im Minutenbereich statt 30s-Bereich sollten gewählt werden. Dadurch ist das "nachhinken" des Pulses nicht mehr so stark ausschlaggebend. Die Puls-Toleranz muss man dann natürlich etwas anheben, um noch genügend Abschnitte zu bekommen.
Da würde ich die obige Variante vorziehen, mit der ja einigermaßen explizit geprüft werden kann, ob der Puls einer Belastungsänderung nachhinkt
In Verbindung mit Deinem Vorschlag, die Zeit vor dem Abschnitt zu betrachten, sehe ich das auch so.
laufhannes wrote:
Tue 9. Jan 2018, 10:05
Alternativ, um nicht von den Schwankungen des Geschwindigkeitssignals abzuhängen, könnte man das gleiche Prinzip stattdessen für den Puls anwenden: Ein 30s-Abschnitt gilt als verlässlich, wenn der Puls in diesen 30s und in den vorherigen 30s im konstanten Bereich von bspw. 2 bpm liegt. Für die Schätzung selbst wird dann aber nur der abschließende 30s-Bereich genutzt.
Das finde ich nicht so gut, da man hier nicht die Ursache (Belastungsänderung) sondern die Wirkung (Puls) als Kriterium verwendet mit den Effekten, wie ich sie anhand des letzten Abschnitts aus Deinen Daten beschrieben habe.
laufhannes wrote:
Tue 9. Jan 2018, 10:05
miro wrote:
Tue 9. Jan 2018, 00:40
Trotzdem ist das Ergebnis aus dem Playground für mich überraschend: Die VO2max Werte der 30-Sekunden-Abschnitte sind sowohl bei Dir als auch bei meinem Testlauf sehr breit streuend. Das kommt mir nicht richtig vor. Natürlich kann man da mit Regression eine Gerade durch ziehen, aber die Standardabweichung ist für meine Begriffe dabei doch enorm. Mein Lauf zeigt einen Maximalwert im Bereich 68 und einen Minimalwert im Bereich 28. Das ist schon ein gewaltiger Unterschied.
In meinem Beispiel ziehe ich ja nur eine Gerade durch die sechs schwarzen Punkte, da die ersten Minuten, in denen sich der Puls einpendeln muss, und der spätere Bereich, in dem der kardiovaskuläre Drift eine Rolle spielt, nicht berücksichtigt werden. Und von diesen sechs schwarzen Punkten werden ja auch nur die mittleren vier gewählt, da eine robuste Regression verwendet wird. Die vier sind in diesem Fall sehr nah beieinander. Zusätzlich soll ja auch die Standardabweichung (bzw. genauer der MAD error) verwendet werden, um im gesamten Form-Verlauf jedem einzelnen Schätzwert eine Zuverlässigkeit zuweisen zu können.
In Deiner Datenreihe sind die Punkte wirklich nah beieinander. In meiner Datenreihe hatte ich so einen Fall nicht.
Die Methode mit der Auswahl von Abschnitten, die Kriterien genügen, hat halt grundsätzlich das Problem, dass man aus vielen Daten nur einen kleinen Teil verwendet (die gewählten Abschnitte). Wenn man die dann nochmals ausdünnt oder gewichtet anhand des MAD errors, dann reduziert das die Größe der Stichprobe nochmals. Das macht meiner Meinung nach das Verfahren halt grundsätzlich schon anfälliger als ein Verfahren, das möglichst viel Daten des zugrunde liegenden Laufs einbezieht. Allerdings habe ich dafür momentan auch keine bessere Idee als der Berechnung über größere Abschnitte.
laufhannes wrote:
Tue 9. Jan 2018, 10:05
Es stimmt aber natürlich: Die Spannweite der Schätzwerte im gesamten Verlauf der Aktivität ist sehr groß. Womit man immer mal zu kämpfen hat: Aussetzer beim Pulsgurt oder sehr große Schwankungen im GPS-Signal. Die Signale können ja auch mal über 30 Sekunden (oder über 60 Sekunden) "konstant falsch" sein. Außerdem kommen ja auch viele externe Faktoren hinzu, die wir nie berücksichtigen können, zum Beispiel der Untergrund und Wind.
Stimmt, davon kann ich auch ein Lied singen. Grundsätzlich falsche Werte sollten einem erfahrenen Läufer aber auffallen und die VO2max-Berechnung in Runalyze ausgeschaltet werden (so mache ich das jedenfalls). Aussetzer vom Pulsgurt könnte man theoretisch noch erkennen (Abweichungen >50%), wobei ich der Meinung bin, dass der Pulsgurt ja nicht die Herzschläge als Frequenz überträgt, sondern schon als bpm-Wert, und der sollte ja nicht durch Übertragungsfehler beeinflusst werden. Falls der Gurt selber einen Messfehler hat (z.B. wg. schlechtem Kontakt auf der Haut), dann müsste man mit dem Filter "Abweichung > 50%" eigentlich solche Ausreißer gut finden können. Mein Garmin-Gurt, der einen R-R-Wert liefert, liefert in so einem Fall dann genau die doppelte Zeit.
laufhannes wrote:
Tue 9. Jan 2018, 10:05
miro wrote:
Tue 9. Jan 2018, 00:40
Insgesamt sehe ich aber auch noch ein Problem mit dem Endergebnis: VO2max nach der neuen Methode ist bei meinen Daten DEUTLICH höher als die bisherige Berechnung. Damit erreicht sie wieder Werte, die meiner Meinung nach zu hoch sind. Aber da meine Beispielberechnung mit aktuellen Daten erfolgt ist und keine aktuellen Wetkampfdaten vorliegen, kann ich das leider nicht belegen. Werde wohl nochmal alte Daten vor einem Wettkampf berechnen lassen.
Das kann aber auch einfach am Korrekturfaktor liegen. Mit dem Korrekturfaktor lassen sich die Werte ja auf ein beliebiges Level heben/senken. Und der aktuelle Korrekturfaktor hängt ja von der bisherigen Schätzmethodik ab. Nur wenn mit der neuen Methode der VO2max für einen Wettkampf gut passt, bei den Trainingseinheiten davor er aber deutlich höher ist, wäre das ein Problem.
OK, das ist ein Argument. Dann muss ich den Faktor mal anpassen - momentan war er bei ca. 0.99.

laufhannes wrote:
Tue 9. Jan 2018, 10:05
Dass besonders lange Läufe niedrige Werte erhalten, dürfte an dem bisher nicht berücksichtigen kardiovaskulären Drift liegen. Wenn die Umrechnung HR in %vVO2max falsch ist, müssten Läufe mit besonders niedrigem oder besonders hohem Puls auffällig sein.
Gut, das würde es einigermaßen erklären. Spricht wieder dafür, den VO2max nur aus den ersten 20 bis max. 60 Minuten zu ermitteln.

laufhannes wrote:
Tue 9. Jan 2018, 10:05
Was ich mir grundsätzlich noch wünschen würde: Eine Möglichkeit, das Modell am Ende zu validieren oder ggf. die Parameter automatisch zu bestimmen. Dazu bräuchten wir dann z.B. Die Trainingsdaten (HF, Pace und Höhe als vollständige Datenreihe) von ~100 (?) Nutzern, die einen ihrem eigenen Empfinden nach optimalen Wettkampf gelaufen sind. Dann würde man aus diesem Wettkampf den "tatsächlichen" Effektiven VO2max bestimmen und versuchen, die Schätzwerte der Trainings der letzten ~6 Wochen (?) vor dem Wettkampf möglichst an diesen Wert anzupassen. Da könnte man dann verschiedene Einstellungen für die Breite des Zeitbereichs und die einzelnen Abweichungen simulieren und würde auch ein Gefühl dafür bekommen, welche Art von Aktivitäten sich gut/schlecht eignet und wie gut die Anpassung überhaupt funktionieren kann. Andernfalls wäre das so ein wahlloses "Ich finde 30s gut. Du 60s. Einigen wir uns auf 45s. Passt schon irgendwie.".
Wie schon geschrieben: Die Datenbasis sollte in Runalyze vorhanden sein, wenn Du die Erlaubnis der Benutzer bekommst. Mail-Aktion? Es müssen halt die Wettkämpfe ausgezeichnet werden bzw. der optimale Wettkampf durch die User benannt werden. Oder sie exportieren ihn und schicken ihn Dir für eine spezielle Testdaten-Runalyze-Installation. Aber die Idee an sich ist natürlich gut, genau so machen es ja auch JD und die anderen Sport-Mathe-Päpste :D

Zu Pace und Höhe:
  • Neuere Pulsuhren haben oft Barometer eingebaut. Deren Höhendaten sind gegenüber GPS deutlich genauer. Auf meiner Laufstrecke habe ich da teils Abweichungen von 100% der gesammelten Höhenmeter! Auch korrigierte Höhendaten auf eine Map mit Höhendaten helfen nicht weiter: Die Höhendaten der Maps sind offenbar mit Radar ermittelt und kommen mit Baumwipfeln nicht klar. Meine Läufe mit korrigierten Höhendaten zeigen jedenfalls beim Entlanglaufen an einem Waldrand sprunghaft 10m mehr Höhe an, die dann am Ende des Waldrands wieder weg genommen werden. Die Barometerdaten lassen sich davon nicht beeindrucken.
  • Die Genauigkeit bei der Geschwindigkeit ist mit neueren Footpods wie dem Stryd angeblich deutlich höher als bei GPS. Jedenfalls sieht fellrnr das auf seiner Web-Seite so. Meine Garmin-Uhr lässt sich so umschalten, dass sie die Geschwindigkeitsdaten ausschließlich vom Footpod verwendet. Damit wäre der GPS-Fehler hier auch ausgeschaltet.
Allerdings müsste halt Runalyze beim Import berücksichtigen, dass es keine Höhenkorrekturen machen darf, wenn eine Uhr mit Barometer im Spiel ist. Bei der Geschwindigkeit werden ja (außer für GAP) keine Korrekturen gemacht, oder?

Viele Grüße
Michael
0 x

miro
Runalyzer
Posts: 22
Joined: Thu 4. Jan 2018, 22:10

Re: VO2max Schätzung und Berechnung

Tue 9. Jan 2018, 23:31

Hallo laufhannes,
laufhannes wrote:
Fri 5. Jan 2018, 08:54
In den Grafiken ist jetzt oben die Aktivität zusammengefasst und darunter sind die aktuellen Einstellungen dargestellt: Für die "Geschwindigkeit" wird der Mittelwert der Grade Adjusted Pace des jeweiligen Abschnitts verwendet. Das lässt sich dynamisch auswählen. Außerdem können auch die Einstellungen wie 30s-Abschnitt und das Betrachten welches Zeitraums (hier 360-1200s, also 6 bis 20 min) über die URL-Parameter definiert werden. Nicht dort angezeigt aber auch möglich ist das Ändern der "geforderten Konstanz" der Herzfrequenz eines Abschnitts (default: 2bpm, also z.B. 150-152bpm).
Welche Parameter kann man denn an die URL anhängen? Kannst Du die bitte auflisten? Würde gerne mal mit den Abschnittzeiten experimentieren.

In meinem analysierten Lauf auf der Testplattform ist das Ergebnis der Berechnung ohne GAP deutlich zuverlässiger als mit Avg. GAP (MAD gleich 0,70 statt 1,32). Da macht eine Regression dann wirklich Sinn. Die Drift fällt größer aus, liegt aber natürlich daran, dass es anfangs bergab und am Ende bergauf geht.
Mich würde es wirklich brennend interessieren, wie die GAP mit nicht-Höhenkorrigierten Daten, also den Rohdaten aus der Uhr, aussieht. Wenn ich von meinem heutigen Lauf im normalen Runalyze die Höhendaten der Uhr nehme, komme ich auf 21m Differenz. Runalyze errechnet mir stattdessen 82m. Das ist schon ein riesiger Unterschied. Da kommt dann offenbar auch ein Teil der breiten Streuung her, die es eigentlich gar nicht gibt.

-> ein Schalter beim Import, der die Höhenkorrektur ausschaltbar macht, könnte hier beim Vorliegen barometrischer Höhendaten viel bringen!
Bei TCX-Dateien ist sogar hinterlegt, welches Gerät zum Erstellen der Datei verwendet wurde. Mit einer kleinen Datenbank/Liste der Geräte mit Barometer könnte man diesen Schalter auch automatisch aktivieren/vorbelegen. Meine Uhr spuckt hier beispielsweise folgendes aus:

<Creator xsi:type="Device_t">
<Name>fēnix 5S – Sapphire Edition</Name>
<UnitId>3951889919</UnitId>
<ProductID>2544</ProductID>
<Version>
<VersionMajor>7</VersionMajor>
<VersionMinor>7</VersionMinor>
<BuildMajor>0</BuildMajor>
<BuildMinor>0</BuildMinor>
</Version>
</Creator>

Das wäre dann aber schon die Deluxe-Version.

Soll ich das in das Ideen-Forum eintragen oder seht Ihr das sowieso als unsinnig / nicht realisierbar an?

Viele Grüße
Michael
0 x

User avatar
mipapo
Administrator
Posts: 1242
Joined: Mon 29. Jul 2013, 20:26
Location: Kiel
Contact: Website Facebook Twitter

Re: VO2max Schätzung und Berechnung

Tue 9. Jan 2018, 23:52

ein Schalter beim Import, der die Höhenkorrektur ausschaltbar macht, könnte hier beim Vorliegen barometrischer Höhendaten viel bringen!
Bei TCX-Dateien ist sogar hinterlegt, welches Gerät zum Erstellen der Datei verwendet wurde. Mit einer kleinen Datenbank/Liste der Geräte mit Barometer könnte man diesen Schalter auch automatisch aktivieren/vorbelegen. Meine Uhr spuckt hier beispielsweise folgendes aus:
In den Einstellungen kannst du das ja Setzen, ob die Höhenmeter berechnet werden sollen oder übernommen werden sollen.Selten nutzt man ständig ein anderes Device. Das Formular ist eh schon viel zu voll.

Zur Deviceliste: Die ist in der Tat schon vorhanden. Unter anderem wird in einer der nächsten Versionen bei jeder Aktivität, wo wir das Device erkennen können, auch angezeigt woher die Aktivität stammt. Auch ob die Uhr einen barometrischen Höhenmesser besitzt ist dort teils hinterlegt. Der Gedanke basierend auf der Liste dann jeweils die Höhenkorrektur zu steuern ist auch uns schon bekommen. Aber das wäre erst ein zweiter Schritt
0 x

User avatar
laufhannes
Core developer
Posts: 731
Joined: Mon 29. Jul 2013, 20:59

Re: VO2max Schätzung und Berechnung

Wed 10. Jan 2018, 08:32

miro wrote:
Tue 9. Jan 2018, 23:31
Welche Parameter kann man denn an die URL anhängen? Kannst Du die bitte auflisten? Würde gerne mal mit den Abschnittzeiten experimentieren.
Die einstellbaren Parameter mit ihren Default-Werten:

Code: Select all

https://testing.runalyze.com/_playground/new-vo2max/ID?delta=30&hrDelta=2&skip=360&end=1200&ff=0.033
delta [s]: Länge der einzelnen Abschnitte
hrDelta [bpm]: Toleranzbereich für "konstante" Herzfrequenz in einem Abschnitt
skip [s]: Anfangsbereich, der für die Schätzung ignoriert wird
end [s]: Endpunkt, bis zu dem Schätzwerte berücksichtigt werden
ff [1/s]: Butterworth-Frequenz

Die Butterworth-Frequenz legt dabei fest, wie stark das Höhenprofil geglättet wird, aus dem dann letztlich die Steigung und damit die GAP berechnet wird. Je niedriger der Wert, desto stärker wird geglättet.
miro wrote:
Tue 9. Jan 2018, 23:31
-> ein Schalter beim Import, der die Höhenkorrektur ausschaltbar macht, könnte hier beim Vorliegen barometrischer Höhendaten viel bringen!
Bei TCX-Dateien ist sogar hinterlegt, welches Gerät zum Erstellen der Datei verwendet wurde. Mit einer kleinen Datenbank/Liste der Geräte mit Barometer könnte man diesen Schalter auch automatisch aktivieren/vorbelegen. Meine Uhr spuckt hier beispielsweise folgendes aus:
Wie mipapo schon sagt: Erste Vorbereitungen dafür sind getroffen. Ich habe grundsätzlich auch noch auf dem Zettel, dass man an die Höhenkorrektur noch einmal ranmuss. Eventuell kann man anhand der Streuung des GPS-Signals und/oder der Satellitendaten in dem Bereich (für jeden einzelnen GPS-Punkt werden ja 4 Satellitenwerte ausgewertet) einen zusätzlichen Glättungsparameter bestimmen.

Aktuell kann man ja aber auch über "Bearbeiten -> Datenreihe entfernen", die korrigierten Höhendaten nachträglich entfernen und wieder die Daten der Uhr nutzen.
0 x
User help -- short questions via Twitter, Facebook

Return to “Calculations / Berechnungen”

Who is online

Users browsing this forum: No registered users and 1 guest