思ったことを認(したた)めるブログ

日々暮らす中で思った、ちらしの裏に書くようなことを書いていきます。

Garminのデータを使ったレース分析(のようなもの)

先日ブログにもあげた「Mt.六甲 トレイルラン サマーピクニック」の記事の中で、個人的な反省の中で「下り坂での走りが下手(後半は下り坂を攻められなかった)」というのを書いています。自分の中での感触で、レース後半の下り坂で歩く時間がかなり長くなったからなのですが、実際にレース後半の下り坂で走る速度が遅くなっているのか?を客観的に確かめたいと思ったので、今回Garminのデータを抜き出して確認してみました。
ちなみに、以前にもデータを用いた記事を書いた(その1その2)ことがありますが、これらは「駄研究」として新しくカテゴライズしておきます。「駄」については、現代美術二等兵ふじわらさんの「お菓子の中に“駄菓子”があるように、美術界にも“駄美術”があっていいのでは…」という言葉がとても気に入ったのでそれをパクらせてもらっているだけです。

twitter.com

データを吸い出す

データの吸い出し自体は、Garmin Connectのサイトから行います。具体的な手順については様々なサイトで示されており、そちらを参照いただくのがいいかと思います。ただ、以前の記事で取り上げたような「過去のアクティビティを一覧」するデータでなく、「1つのアクティビティの詳細情報」、すなわち時系列的なデータを吸い出そうとすると、TCXファイルなり、fitファイルなりとあまり馴染みのない拡張子でダウンロードせざるを得ません。これらのデータをcsvのファイルにして、分析する必要があるのですが、その辺りも同じようなことを考えておられるかたが多いようで、その方法についてもソフトを作ってくださっている方が公開してくださっていたり、how toを記事にしておられる方もおられます。多謝。ということで、この記事ではそれらの情報を共有することでお茶を濁しておこうと思います。

いやそもそもTCXファイルとかfitファイルとかなんだよ、どうやってダウンロードすんだよ!という方はStrava公式のこちらから

support.strava.com

データの定義を決める

前述のブログの記事(Windowsの方)を読んでいただくと分かるかと思いますが、ポイントごとでのTime(時間)、Distance(距離)、Heart Rate(心拍数)、Longitude(経度)、Latitude(緯度)、Altitude(高度)が表示されます(Macの方ではCadenceも出せるみたいですね。)。もっとも、「ポイントごと」というのもよくわからず、1秒ごとにこれらの値が算出されているところもあれば、数十秒何も記録されていない区間もあります。この辺りは開発者のみぞ知るところですかね。
どのようにデータを見ていくかですが、前述の通り「レース後半の下り坂で走る速度が遅くなっているのか?」を確かめるのが今回のデータを見る上での目標です。したがって、見るべきは「走るコースの斜度」と「走速度」です。これらの値が元から算出されているわけではないので、上記のパラメータから算出する必要があり、どうやらTime、Distance、Altitudeを使えば良さそうということは分かるですが、これがまためんどくさい。
何がめんどくさいかというと、そもそもDistanceをどう出しているのか、ということが分からないということです。斜度を出すために必要な高低差は2地点間のAltitudeの差を算出すればいいだけですが、距離についてはそうはいきません。2地点間のDistanceの差を算出したときに出てくる数字は、以下のbの値になるのか、cの値になるのかが分からないのです。経度、緯度が算出されているくらいなので2次元平面上での距離、すなわちbを算出していると推定して分析を進めました(まぁ駄研究ですし、そこまで正確な分析をしているわけでもないので別にどっちでもいいと思うのですが。)

f:id:proffe:20200814170823p:plain

Distanceの差はbか?cか?

ということで、走速度=Speed、斜度=Slopeとして、

  •  Speed = \frac{\Delta Distance}{\Delta Time}
  •  Slope = \frac{\Delta Distance}{\Delta Altitude}

と定義し、分析を進めていきます。また、走速度については休憩時間などもデータに含まれるため、今回は走速度が30分/km(時速2km)を上回るデータについては無視しています。ちなみに時速2kmというのは完全に適当に決めていますが、一般的に歩く速度が時速4kmと言われており、その半分の速さということで設定しました。

目的に合わせてデータを見る

ここまでが前作業ということで、なんとめんどくさいことか…。やっとこさデータを見ていくことができます。ちなみに言うと、Excelの時間の算出にめちゃくちゃ時間を取られてます。
「レース後半の下り坂で走る速度が遅くなっているのか?」を確かめるのが目的ですが、時系列のデータを扱うことに慣れていないのでレース区間を4つに分けて分析してみました(なぜかGarminでの総走行距離が26kmとなっていたので参考程度に…。)

f:id:proffe:20200814173516p:plain

レース区間を4つに分ける

まずは斜度と走速度の関係をみていきます。以下のグラフは横軸が斜度(中心が完全に平坦、右に行くほど登り坂がきつく、左に行くほど下り坂がきつい)、縦軸が走速度(単位が1キロ走るのにかかる時間になっているので、下にいくほど速い、上に行くほど遅いので注意が必要です)を示しています。なお、色が濃い点が1st Sectionで、薄くなっていくと2nd、3rd、4th Sectionとなっています。

f:id:proffe:20200814172851p:plain

斜度と走速度の関係

一応二次の近似曲線も引いてみたところ、グラフの頂点が斜度0%より少し左、すなわち平坦な道より少し下り坂の方が走速度は速いという結果が出ています。
ただ、明らかに不自然な直線関係になっている部分が散見されます。この辺りはGarmin内部でのデータ処理やらスムージングの中で補正されたのではないかと思います。この辺り、内部事情に詳しかったり、考えがある方は是非とも教えて欲しいです。
と、ここまで書いてなんなのですが、明らかに斜度がおかしい気がします。あまり参考にならんのでは、という気持ちにしかなりません。ということで、もう連続データとして見ることは無駄かなと…。
ということで、今度はカテゴリわけでみてみます。前述のレース区間分け4つと、斜度のカテゴリ分け3つの12カテゴリで走速度を分けて見ました。斜度のカテゴリについては、-8%以下を下り(down)、8%以上を登り(up)、それ以外を平坦(flat)として、それぞれの走速度の平均を比較して見ました。

f:id:proffe:20200814174826p:plain

12カテゴリの走速度比較

それぞれを見てみると、flatは4区間全て同じくらい、upは2nd区間が高く、3rd、4thが相対的に値が小さい(=速い)、downは徐々に値が大きく(=遅く)なっていることがわかるかと思います。upについては、前述のコースマップを見ていただくとわかる通り、2nd区間で長くて急な登り坂が続いたことから、このようなデータになったかと思われます。そして本題である「レース後半の下り坂で走る速度が遅くなっているのか?」についてですが、どうやらそれっぽい感じが出てますね(もはや適当)。もうこれでいっか。

駄研究ポイント

ということで、多分仮説は支持されたと思います。知らんけど。正直、これは感覚的なことが客観的なデータとも相違ない、ということを確認できたというだけで、研究ガチ勢はそもそものデータ算出の手順をきちんとすることや、ここからパフォーマンスの向上につなげるための示唆を上げていくのですが、私のこの夏休みの研究は駄研究なのでここで終わりにします。特に駄研究ポイントとなるのは、

  • Garminのデータの算出方法がよくわかっていない&研究に耐えられるレベルの精度の高さを有しないため、データの定義が甘い、説明できない。
  • 時系列でのデータ分析ではなく、離散的な分析にとどまっている。
  • 後半、下り坂の速度が落ちているのは分かったが、その原因については考察できていない。前の記事の通り、下りの技術の低さが後半の走速度の低下を導いたとは言えない。

あたりでしょうかね。まぁ娯楽でやってる分には十分遊べたので良かったかなと思います。今日は終わり。

ちなみにこの前までGarminのサーバー落ちてましたね…

jp.techcrunch.com

ブログランキング・にほんブログ村へにほんブログ村