Project Crocodile
Training Effect



YEAR 2003
January February March
April May June
July August September
October November December





2003年 トレーニング効果の解析 (2003年12月20日)

1年間トレーニングエフェクトのグラフを公開して来たが、そのデータの解析方法について解説することにする。 扱うデータは 年間サイクリング記録 で出て来るデータが全てであり、それ以上でも以下でもない。

トレーニング効果を計るための指標は Centennial Park のトラック(1周3.8km)のラップタイムで行った。 ただし、俺の方法で重要なポイントは、心拍数とラップタイムを同時に計測したって事だ。 この方法だと、調子が良い時は高い心拍数で、悪い時は低い心拍数でというように、どんな時にもそれなりに計測を行う事ができる。 また、ラップタイムを良くしようと思って一生懸命走っても、心拍数が上がってしまうのでインチキができないのだ。

更に、データの精度を上げるため、データは4ラップ分の平均値を採用した。 ただし、4ラップしなかった日はその全ラップの平均値になっている。 また、5ラップ以上した場合、下の(式1)の v が大きい方から4ラップ分を抜き出し 平均値を採った。

(式1)

ただし、HR は基準心拍数で 俺の中強度クラスの150bpm、HA はラップタイム計測時の平均心拍数、D はラップタイム計測距離で3.8km、T はラップタイム。 基本的に、基準心拍数(HR)に換算した時の速度が一番速いものから4ラップ分の平均を取りましょうって事だ。

ラップタイムの精度は それぞれのラップ単独でもかなりの物で、ラップタイムを測定中 平均心拍数が同じだったラップのタイムは±3秒くらいの違いしかない。 7分走って3秒の違いは たったの0.7%だ。 なので、4ラップ分の平均値は「その時のラップタイム」としては十分過ぎるほど正確だと思う。

生のデータは、実際にはそのままでは使い物にならない。 何故なら、ラップタイムを計測した時の心拍数がばらばらだし、日によって風向きも違う。 更には、朝計測したり 夕方計測したりしているので、計測した時間帯による影響も出ているかもしれない。 なので、それらの不確定要素を補正してやる必要がある。 とは言っても 色々なパラメータがお互いに依存し合っていて、数学的には4次元空間の最適化問題になっている。 しかも、それぞれのパラメータは単純に線形的に関与しているわけではない。 実際のデータ補正は 以下の様に行う。

  1. 全てのラップタイムデータを平均速度に換算する
  2. 心拍数による速度の違いを考慮し、基準心拍数(167bpm)における平均速度に換算する
  3. 経過日数に対する平均速度の変化(トレーニング効果)に曲線をフィットし、トレーニング効果を差し引いて 1月1日における平均速度に換算する
  4. 風向きに対する平均速度の変化に曲線をフィットし、無風状態での平均速度に換算する
  5. 計測時間帯に対する平均速度の変化に曲線をフィットし、基準時間(16時)における平均速度に換算する

実際には、2−5の操作を何回か繰り返して、それぞれのパラメータを最適化する必要がある。 こうして得られたデータは、もし補正が最もらしいならば、全て一定の速度になる(一定の水平線上に乗る)はずだ。 あとは、結果として欲しい経過日数に対する平均速度の変化(トレーニング効果)だけを抜き出してやれば良いという訳だ。



まずは、平均速度の心拍数依存。 ラップタイムの計測は 色々な心拍数で計測しているので、個々のデータをある基準心拍数におけるデータに変換してやらないと 比べられない。 そのために 低心拍数と高心拍数で実際に計測した別のデータを用いる。 別とは言っても ラップタイム計測のついでに 気分が向いた時に取ったデータであり、当然 年間サイクリング記録 に出て来る。 このデータは、必ず同じ日に同じ時間帯で 低心拍数と高心拍数でのラップタイムをペアで計測している。 従って それらのラップタイムをペアで扱う限り、トレーニング効果、風向き、計測時間帯の影響は無いと思って良い。 それでも、年間を通じて何回も計測した複数のデータペアを混ぜて補正用データとして使うので それぞれのデータペア間には トレーニング効果、風向き、計測時間帯の補正をかける必要がある。 他の補正要素(トレーニング効果、風向き、計測時間帯)を計算する時には、このデータを使って 個々のデータを心拍数167bpm(俺のAT心拍数)での値に変換してやるのだ。

図1が心拍数依存の補正データだ。 このデータには既にトレーニング効果、風向き、計測時間帯の補正が行われている。 従って、表示されている速度は、今年の1月1日、無風、16時におけるものになっている。 この図から求めたかったものは、心拍数依存要素、つまり直線の傾きなので 速度自体はどうでも良い。

(図1)



次はトレーニング効果。 トレーニングを積むにつれて、嬉しい事に、日に日に速く走れるようになっているので、その効果を取り除いてやる必要がある。 やり方は、今年の初めから350日分のデータに 心拍数依存、風向き、計測時間帯の補正を行い、経過日数に対する平均速度の変化を求める。 他の補正要素(心拍数依存、風向き、計測時間帯)を計算する時には、このデータを使って 個々のデータを1月1日時点での値に変換してやるのだ。

図2がそのトレーニング効果の補正データだ。 このデータには既に心拍数依存、風向き、計測時間帯の補正が行われている。 従って、表示されている速度は、心拍数167bpm、無風、16時におけるものになっている。 緑の曲線がフィットした8次曲線で、平均的なトレーニング効果の遷移を表している。 この図のデータは最終的に求めたいトレーニング効果その物だ

(図2)



次は風向きの影響。 ラップタイムを計測した Centennial Park は 一周3.8kmの円形のトラックなのだが、10m程度の起伏があるため、風向きによってラップタイムに差が出る。 この補正を行ってやると データの精度がさらに上がるのだ。 他の補正要素(心拍数依存、トレーニング効果、計測時間帯)を計算する時には、このデータを使って 個々のデータを無風状態での値に変換してやる。

図3がその風向きの補正データだ。 このデータには既に心拍数依存、トレーニング効果、計測時間帯の補正が行われている。 従って、表示されている速度は、今年の1月1日、心拍数167bpm、16時におけるものになっている。 緑の太い水平線が それぞれの風向きにおける平均速度を表している。 この図から求めたかったものは、風向きによる相対的な影響なので 風向き間の速度差が重要なのだ。

(図3)



最後は計測時間帯による影響。 人は 一日の内でも 時間帯によって心拍数が高かったり低かったりする。 この補正を行ってやると データの精度がさらにさらに上がるのだ。 他の補正要素(心拍数依存、トレーニング効果、風向き)を計算する時には、このデータを使って 個々のデータを16時における値に変換してやる。

図4がその計測時間帯の補正データだ。 このデータには既に心拍数依存、トレーニング効果、風向きの補正が行われている。 従って、表示されている速度は、今年の1月1日、心拍数167bpm、無風状態でのものになっている。 緑の曲線がフィットした4次曲線で、おおよその計測時間帯による影響を表している。 この図から求めたかったものは、計測時間帯による相対的な影響だ。

(図4)



そして 図5が全ての影響を取り除いた後の、つまり今年の1月1日、心拍数167bpm、無風、16時におけるデータだ。 フィットした直線は ほぼ並行なのだが、やっぱり1km/h程度のばらつきが残っている。 これは補正が悪い訳ではなく、1週間の間でも ラップタイムが5%程変化するためだ。 他には、図2を観るとわかるが、フィットした8次曲線が 急激な変化に追随できていない(特に125日目前後)。 そのせいもあって データのばらつきが大きくなってしまっている。 今年の初め100日くらいはデータのばらつきが大きいのが分かるが、実は風向きのデータを取りはじめたのが3月からで、4月から更に正確に記録するようにしたのだ。 1,2月のデータはほとんど無風に換算されてしまっている。 風向きの補正がけっこう効いているのが分かると思う。 後半(6月以降)のデータは なかなか正確な様で、前半に比べてデータのばらつきが少ない。 理由は不明。 全体としては σ=0.767[km/h] で、誤差は±2.5%ってとこだ。 かなり質の高いデータに仕上がったと思う。

(図5)