見出し画像

時系列データ解析としてのTSS その3 (ローリングTSS)


サイクリングスポーツのトレーニングで数量化に用いるTSS (Training Stress Score)について、前回はTSSに相加性が無い事を解説し、TSSがおかしな振る舞いをする顕著な例として山岳コースの場合を示した。そこでは、下山中に踏まなくてもTSSが勝手に増えていくという、直観に反する事が起こる。今回はどうしたらTSSのエッセンスをそこなわずに、そのような振る舞いを除去できるかを考えてみる。

※端的に言って、ここで試みているのは「俺様TSS」であり、私はこの数学的なTSSの拡張を個人的に楽しんでいるわけで、このやりかたを誰かに押しつけるような物では無いということは、あらかじめ宣言しておきたい。

前回の記事

時間で区切る「セグメントTSS (Segmented TSS)」

単純に考えると、アクティビティの質が変わるところで、アクティビティを細切れ(セグメント)にしたらどうだろうか。ちょうど実走で、峠で休憩したり、コンビニで補給したり、という感じである。いくつかに分けた個々のセグメントのTSSを計算して足し上げれば、定義上そのセグメントごとに切ったりつないだりしても、TSSに矛盾が生じない。たとえば、山へのアプローチ、山の登り・下り、またはウォーミングアップ、ワークアウト、クールダウンといったように、切り分けた各部にてTSSを計算すれば、特徴を持つセグメントごとのパワー特性を適切に反映したTSSが計算できるだろう。

一例としてAlpe de Zwiftを約1時間走行したデータを示す。このアクティビティ全体をこれまでのTSSの定義通りに計算するとTSS=92.0となる。

画像1

この走行を上図のようにアプローチ・登り・下りの3つに分割し、それぞれTSSを計算すると4.8/74.1/3.1となり、合計は82.0となる。このような差が出るのは前回の記事で書いたとおりだが、実は下りだけで無くアプローチ部も下り度同様にTSSを過度にアップさせる影響を及ぼしている。アプローチはFTPの50%程度で走っており、この部分がTSSを過度に上昇させるのは本意では無いから、体感的にはこのセグメントTSSのアプローチをとる方がフェアな気がする。(あくまで体感)

さて、手法の妥当性はともかく、実際問題セグメントをいちいち手動で切り分けるのには多大な労力が必要だし、切り方次第で恣意的にTSSを操作できてしまう事は問題だ。そこで、セグメントを例えば「5分」といった決まった長さで切るということにしておく。こうすればインターバル練習の影響や山岳登坂の影響は、5分後のTSSには現れなくなる。

画像2

上図はセグメント長を5分として先ほどのAlpe de Zwift走行データを解析した物。下側の図は各5分セクションの細切れのTSS計算したもので合計するとTSS=80.4となる。

概念的にはこのような5分セグメントはわかりやすいと思うが、厳密に言えばセグメント切れ目が山頂到達の1分前なのか1分後なのかで多少の損得が出てしまったりする問題や、そもそもなぜ「5分」なのかという疑問も生じる。セグメント長が10分ならどうなるのか?20分では?

ローリングTSS (Rolling TSS)

まず切れ目での不連続をなくす事から考えよう。そのために、セグメントTSSを発展させ、「ローリングTSS」と言うもの考える。セグメント長はまずは300秒(=5分)として話を進める。

パワーのデータがあるとき、直近300秒分の部分データを切り取ってきてTSSを計算する。このTSSは過去300秒分のTSSなので、これを300で割って、これをその時刻における1秒あたりのTSS寄与量とする。次の1秒ではさらにそこから過去300秒のデータを持ってきて同じ操作を繰り返す。つまりある時刻でのTSSの増分は過去300秒のデータだけから算出する。最初の300秒に関しては「過去」のデータが無いので、データがある分だけでTSSを計算する。

画像3

先ほどのAlpe de Zwiftのデータを使って、ローリングTSSを計算したのが上図である。図の下半分はパワーに関するグラフで、ある時刻までで計算した平均パワー(Avg)・Normalized Power(NP)が赤と青で示されている(つまり画面の右半分を紙で隠して、残った部分の赤や青の数字を読めば、その時刻までのAvgやNPがわかる)。また、緑色は直近300秒で計算した「ローリングNP」を示す。ローリングNPでは直近300秒しか計算に考慮しないので、登山終了後若干の遅れののち、速やかにローリングNPが低下し、TSSへの影響を防いでいる事が分かる。

図の上半分はTSSに関するグラフで、その時刻までのNPから計算した通常の意味でのTSSが青、ローリングNPから各秒でのTSSへの寄与を計算し、それを足し上げた物が緑のローリングTSSである。アクティビティ終了時でのローリングTSS積算値は82.4で、手動のセグメントTSSと概ね近い値となっている。

上図ローリングTSSについていくつか所見を延べる。
(1)スタートから600まででTSSとローリングTSSが一致している。
これは大きくパワー変動しないときに両者の定義が一致するということで、計算手法の妥当性の検証と言える。
(2)山を登り始めると、通常のTSSとローリングTSSに差が現れる。
これは通常のTSSにあらわれる弊害が原因である。NPが登山部に引っ張り、最初のアプローチ部の走行時間がTSSを増大させる効果を生む。アプローチ+登山ではなく登山+アプローチと考えれば前回説明した下山時のTSS増大、と同じ効果が発生していることが理解頂けるだろうか。
(3)登山終了後、ローリングTSSでも少しの間TSSが上がり続けている。
TSSを300秒で計算しているため、すくなくともこの300秒の間はTSSの増大効果が現れてしまう。だが、追い込んで走ったあと、息と心拍が落ち着くまでだいたい5分くらいと思えば、これくらい後を引くのは体感的にアリなのではないか?(あくまで科学では無く感覚の話である。)
この効果を正確に取り込むためには、アクティビティからローリングTSSを計算するときに最後に0Wを300秒分追加するほうがいいかもしれない。

ローリングTSS のセグメント長さはいくらが妥当か

それで、セグメントTSSやローリングTSSの計算で使ったセグメント長の300秒という数字はどこから出てきたのだろうか。この時間は「高出力によるボーナス」をどれくらいの時間取り込みたいかによっている。極端な話この数字を30秒とか短く取れば、至る所での平均速度でTSSを計算するようになるわけで、NPの存在意義はなくなる(NPを平均パワーで置き換えれば良い)。逆にこの数字を長く取るとTSS引き上げ効果が発動してしまい、TSSの過大評価になってしまう。

先ほどのAlpeの例でこの区間秒数を変えながらTSSを計算してみよう。

画像6

区間を短くすればするほど、高パワーによるボーナスがなくなる。逆に長くするとボーナスが強調され過ぎるようになる。なかなか悩ましい。この恣意性から逃れる事はできないようだが、個人的にはインターバルのあと5分以上休んだら一区切りという感じがするので5分=300秒に設定するのが体感的にはいいのでは無いか。逆に言うと、5分を越えて休んだら、その切れ目でアクティビティを切り貼りしても相加性が保たれる。そう思うとそんなに悪い感じはしない。

様々なアクティビティの例

もうすこし多様なアクティビティについてローリングTSSと通常のTSSを比較してみよう。

VO2maxのワークアウト
通常TSS 92.5 vs 300秒ローリングTSS 79.1

画像5

ワークアウト前後の低パワー域での不当なTSS稼ぎが抑えられている

160km走行のイベント
通常TSS 236.8 vs 300秒ローリングTSS 214.9

画像6

途中休憩がうまく反映されている!

まとめ

セグメントTSSやローリングTSSという手法を使う事によって、積極的に踏んでいない区間が不当に(?)TSSをつり上げてしまうという問題に対処できるという事が分かった。また、それらの手法では、セグメント長に結果が依存してしまう、という恣意性が生まれてしまう事も認識された。個人的にはセグメント長300秒でしばらくいろいろ試してみようと思っている。

次の記事ではTSS自体を長期間の時系列データとしてみて、そこから別の指標(CTL/ATL/FSB)を算出するという操作について見てみたい。そちらについては、極めて標準的な線形フィルタになっているので、迷ったりするところはあまりないはずである。


#自転車
#ロードバイク
#ロードバイクトレーニング
#有酸素運動
#自転車ロードレース
#サイクルロードレース
#時系列
#時系列データ
#自転車トレーニング
#TSS
#時系列分析


この記事が気に入ったらサポートをしてみませんか?