時系列データ解析としてのTSS
サイクリングスポーツのトレーニングにおいて、トレーニングセッションごとの負荷を数値化したものとしてTSS (Training Stress Score)が提唱されている。さらに、このTSSをもとにCTL (Chronic Training Load) / ATL (Acute Training Load) / TSB (Training Stress Balance)という数値を計算し、一定の期間のトレーニング負荷量について定量的な評価をする事ができるとされる。
TSSは主としてトレーニングセッションの1回分のデータごとに算出される。特筆すべき点は、このとき必要な情報はパワーメータの出力時系列とひとつの数値(FTP)だけであり、その他のデータ、例えば心拍数、クランクの回転数、自転車の速度などに依存しておらず、それ故算出に必要とされない。強いて言うならば、心肺機能の能力については間接的にFTPに総合されていると考えても良い。
本記事ではTSSについて、定式化・分析法としての特徴や、その意味について、時系列データエンジニアリング的な観点から考察してみる。
DISCLAIMER: 筆者はスポーツ医学については素人であるため、TSSのトレーニング効果指標としての妥当性は評価できないので、あしからず。
FTP: Functional Threshold Power
まずTSSの解析に必要な数値であるFTPについてレビューする。FTPはある人が長時間(たとえば1時間)のあいだ持続的に発生する事ができる出力値で、単位ワット[W]で表される。
1時間全力走行する機会はなかなかないため、実用的には20分間全力で走った出力の平均値を0.95倍してFTPを算出する事の方が多いようで、Zwift・Rouvy・TrainingPeaksなど各種アプリケーションではこれが採用されており、むしろこれがFTPの定義なのではないかと思ってしまうほどである。他にも徐々に出力を上げていき、1分のベスト出力を0.75倍して算出するという簡易的なテスト(Ramp Test)もある。
1時間TTもしくは20分テストのことをコガン法といい、後者をMAPテストと言うらしい。
実際の所、1時間の間FTPを維持するのは、トレーナー上でヒルクライムを走ったとしても至難の業で、20分テストによるFTPと乖離があるというのが、少なくともアマチュアサイクリストとしての印象である。
ただ、短時間出力、長時間出力の得手不得手はあるにせよ、いずれにせよFTPを向上させる事はあらゆる時間スケールでの出力向上につながると考えられる。とくに出力以外の要因が影響しにくいヒルクライムではFTPを体重で割った値PWR(Power Weight Ratio: 単位w/kg)の大きさでほぼ勝負が決まる。そのため、FTPの向上は自転車アスリートの「至上命題」…とはいわないまでも、ひとつの目標であろう。
TSS: Training Stress Score
TSSは1日のトレーニングの負荷量を定量化したものである。前述のコガン博士その人による解説が以下のリンク先に記載されている。
もうちょっと突っ込んだ解説は次のリンク先にあり、
それを元に有志がPythonコードにしたものが次のリンク先に記載されている。
それによるとTSSは
TSS = (T x NP x IF)/(FTP x 3600) x 100
で計算される。Tは運動時間(単位:秒)、NPはNormalized Power、IFはIntensity Factorである。詳しい説明は後に回すとして、このTSSは「出力をFTPにして3600秒走行」したときのスコアを100として算出するように設計されている。
ここでNPはパワーデータから算出される「パワー平均値」であるが、平均値の算出に先んじて
・スプリント練習/インターバル練習などのスパイク状のデータの平滑化をする「線形フィルタ」
・高出力の走行については高く、低出力の走行については低く値が算出されるような「非線形フィルタ」
が課されているのが特徴である。これについては次節で述べる。
IFは単に上記NPをFTPで割ったものである。そのため、TSSは次のように書き換える事ができる。
TSS = (NP / FTP)^2 x (T / 3600) x 100 ・・・ (*)
このIFを用いない表式は見た事がないが、この方が次々節で述べるようなTSSの特徴がよく分かる。
NP: Normalized Powerとは
NPとはそのセッションでのパワーの平均値の一種であるが、各種計器やアプリで良く表示される単純なAveraged Power (停車して休んでいる時間を除いた平均値)とは以下の点で異なる、
(1) まずパワーデータに30秒の平滑化フィルタが適用される。
(2) 平均化に先立ち、(1)の処理後のデータを4乗した後、セッション全体で平均を取り、結果を1/4乗する。
これは数学的には単純だが、効果としては複雑な結果を生む。
(1) まずパワーデータに30秒の平滑化フィルタが適用される。
この処理は移動平均(Moving Average)、Rolling Average、Box-Carフィルタなどとも呼ばれる。このフィルタを適用すると、30秒より短いパルスについては、発生したエネルギー量は維持したまま30秒の幅のパルスとして広げてしまう。(つまりパルスの高さは下げられ、幅は広げられる)
このフィルタがどのように作用するかを以下の時系列プロット図に例示した。この例ではt=0で1秒だけパワーを発揮して、その前後ではずっとパワーが0だとする(黒が生のパワー)。移動平均の幅は30秒の設定なので、30秒の箱(Box Car)を用意する。この箱の中の黒を平均して、その値を箱の先頭に置く。そして箱は1秒右へコマを進め、同じ計算を繰り返す。こうすると結果のフィルタ出力は赤いデータのようになり、1秒幅のデータが30秒幅が広がる事になる。(このような「単一点入力がどのような出力を生むか」は、時系列解析では「インパルス応答」と呼ばれる)
このように青い箱の中に入っている物は一括して平均化されてしまうので、たとえば900Wを1秒間、450Wを2秒間、300Wを3秒間、は同じ仕事だと見なされる。その様子を示したのが以下の図である。
ここで生のパワーデータは実線、移動平均後のデータは点線で示される。900Wx秒(つまり900J)のエネルギーを2~20秒かけて発生したときの30秒移動平均は概ね同じような30W x 30秒のパルスに平滑化されてしまう。
つまりTSSの思想では1秒間の仕事も30秒の仕事も体に与える影響はおなじ、と考える。これが運動生理学上の結果から来ているのか、一般にパワーメータの出力値には変動成分・雑音成分が多いので(ちょうど手ぶれ防止のように)平滑化しようという思想なのかは判じかねる。900W5秒のスプリントと150W30秒の一定漕ぎが同じ影響になるとは思いがたいが。
30秒を超える時間のパワーに関しては、平滑化フィルタはほとんど効果をおよぼさない。以下の図は900Jの仕事を30s~240sで行ったときの生のパワーデータ(実線)と移動平均の結果(点線)である。
(2) 平均化に先立ち、(1)の処理後のデータを4乗した後、セッション全体で平均を取り、結果を1/4乗する。
この処理では、同じエネルギーを消費しても、より「高パワー短時間出力を優遇」する効果が表現されている。長時間のセッション中一定のパワーPで走ったとすれば、NPはPの4乗を平均して、1/4乗するだけなので、NP=Pになるだけである。(平均パワーとNPが一致)。
パルス状のパワーの場合どうか?パルスのトータルエネルギーをJ、パルスの持続時間をT(ただし30秒よりは長い)とし、セッションタイムをT_0とするとNormalized Power P_NPは、ざっくりと次のように書ける
ここでJ/Tはパルスの高さで、パルス幅Tを掛けて、T_0で割っている。ここでもし4乗&1/4乗という事をしなかったら、それは単なる平均パワーを計算している事になり、そのときは式はP_avg = J/T_0となるはずだったのに、T^(-3/4)というパルス幅依存性が出現してしまっている。このためTが短いほどNPは高くなるという効果が生まれる。
この「4」という数字はどこから来たのか?
n=1では単なる平均パワー、n=4がNormalized Power、ではn=2は?3は?2.5は?おそらくこれはn=4が高出力パルス出力による疲労を良くモデル化する、という体感的なモデルなのだろう。(1)で30秒平均とったのも、Tが短すぎるとNPへの影響が強くなりすぎるため、制限を掛けたのかも知れない。いずれにせよ、ここはワークアウトの人体への影響をモデル化したものなので、大なり小なりの恣意性が入ってきている。
TSSの特徴
TSS = (NP / FTP)^2 x (T / 3600) x 100 ・・・ (*)
もういちどTSSの定義に戻ろう。総合して考えると、上記(*)式から分かる特徴がいくつかある。まずはNPを簡単に考えるために数分以上一定パワーで走行した場合を想定する。
●TSSは走行時間に比例する。
例 FTPで1時間走行したらTSS=100
2時間走行ならTSS=200
●TSSは走行パワーの二乗に比例する。NPでも高出力が優遇されているが、ここでもさらに高出力優遇策がとられる。
例 FTPの50%で1時間走行したらTSS=25
FTPの90%ならTSS=81
FTPの95%ならTSS=90
FTPの100%ならTSS=100
FTPの110%ならTSS=121
●同じエネルギー消費であればTSSは一定走行よりも短時間高出力の走りの方が高い値が出る。ただし30秒以下のスプリントは30秒間のパワーに間延びされてしまう。
これはNPの計算の非線形性とTSS計算式に含まれるNP^2のせいである。以下は300secのセッションで900Jのパルスを1sec~250secで発揮した場合のTSSへの貢献を計算した物である。30秒以下では高出力の影響は限定的であるのに対し、30秒を超えると急激に落ちていく。(このグラフを読むときは、両対数グラフである事に注意)
●上で「同じエネルギー消費であればTSSは一定走行よりも短時間高出力のほうが高い値が出る」と言ったが、これには「ダラダラ走りをすると無用にTSSが高くなる」と言う別の側面がある。
a) FTPの100%一定で30分走ると
NP = 100W
TSS = 50
である。正しそうである。
b) FTPの100%を1分、のち1分超低パワーで走行、を1時間繰り返す。
NP = (100^4 / 2)^(1/4) = 84W
TSS = 0.84^2*100 = 70.6
となる。
この1分は30秒以上なら3分でも5分でもかまわない。30分でも構わないから
c) FTPの100%を30分、のち30分超低パワーで走行して終了でもやはり
NP = 84W
TSS = 70.6
となる。
つまり力走のあとにクールダウンと称して低いパワーの走行を追加すると、勝手にTSSが増加してしまうという減少が発生する。(ちなみに、上記の例でクールダウンを1.5時間にするとTSSは100になる。)
どうやらTSSはFTP付近で走行する事を前提に設計されているようで、一定パワーで走ったときが一番厳しめに、変動が多いと高めに出るということのようである。
TSSとはなにか
以上、TSSの特徴についてレビューした。TSSが走行時間に比例する部分は直観的であるが、走行パワーの二乗に比例する点、またNPが非線形性を持つ点などから、単純ではない反応を示すという事が分った。
どうも使用カロリーや疲労蓄積度(グリコーゲン消費量)のように扱うと何かを見逃す可能性がある。
平坦路をローラーで走るような練習の場合は問題は少ないが、スプリント練習、インターバル練習、山岳練習でダウンヒルも含める場合などは注意が必要となる。走行の質の変わり目(ヒルクライムとダウンヒルの変わり目)でデータを切ってTSSを計算するか、個人的なルーティーンの相対的指標として使用するべきか。平均パワーとNPの乖離の度合いが走行の質を代表すると思われるので、この値をセッションの都度モニターした方がよさそうである。
#自転車 #自転車ロードレース #自転車トレーニング
#ロードバイク #ロードバイクトレーニング #サイクルロードレース
#FTPテスト #TSS
#時系列 #時系列データ #時系列分析 #有酸素運動
ーーーーーーーーーー
この記事の続き