mike-neckのブログ

Java or Groovy or Swift or Golang

第96回箱根駅伝予選会のデータを勝手に分析してみた

先週末くらいに箱根駅伝の予選会があったようで、いろいろな実況ツイートが先週末流れていました。

その中で気になったのは以下のようなツイートたちです

前者は統計とか中央値とか人間騙されやすいよねという興味と麗澤大学で模擬試験とか受けたなーという記憶からの興味、後者は山梨学院大学が全盛期の時代を知っているおっさんにとって感慨深いという興味から気になりました。


さて、ここでは前者の様子を可視化してみようと思います。なお、この記事ではデータとグラフの傾きしか見てないので言っていることが非常に偉そうに見えます。すみません。

具体的には以下のデータをプロットします。

  • 各チーム上位10人のデータをタイムの良い順にソートする
  • 予選通過ラインの 10:57 を 10 で割った値(1:05:42) を基準タイムとして、各ランナーのタイムと基準タイムの差分を積み上げていく
  • 横軸は各チーム内での順位
  • 縦軸は差分タイムの積み上げ

これを予選通過ライン上の数校(以下の5校) + 1位 + 山梨学院大学 でプロットしてみました。

f:id:mike_neck:20191105103049p:plain

グラフで右上に上がっていく場合は、 n 番目のランナーは予選通過ラインの個人タイム(1:05:42)よりもよいタイムで走っていることを表します。逆に右下に下がる場合は予選通過ラインの個人タイムよりも悪いタイムで走っていることを表します。また、チームの10人通過順位とはグラフ上の x = 9 の点から x = 10 の点の傾きの値を表します(傾きが大きい値のほうがよいタイム、多くの場合は傾きはマイナスになっているので、水平に近いほうが10人通過順位が速いことになります)。

このグラフから…

  • 東京国際大学はさすが1位だけあって、チーム内8位くらいまでのランナーが 1:05:42 よりも速いタイムで走っていて、かつ、10人の中で大きく崩れている選手もいません。
  • 中央大学は4番手までの選手はいいのですが、それ以降の選手が伸びてくれていません。その結果7番手の選手で早稲田大学に追いつかれて、8番手で逆転されています。
  • 上武大学は1〜3番手までの選手はよいですが、4番、5番手の選手と力の差がありそうです。また、4番、5番手以降の選手がさらに力不足のようで、右肩下がりなグラフになっています。
  • 山梨学院大学は2番手の選手ですでに予選通過ライン上のタイムになってしまっているので、全体的に厳しい状況になっています。
  • 早稲田大学麗澤大学は非常によく似た傾向を示していて、6〜7番手の選手までが予選通過ラインのタイムとほぼ同じか若干速いタイムで走っています。選手層が厚いチームと言えます。では麗澤大学早稲田大学との違いですが、早稲田大学麗澤大学の差は1番手の差をずっとキープしている状態ですので、エースの有無が最終的な結果にあらわれたと言えそうです。もちろん駅伝なので、選手層をさらに厚くすることでも解決できますし、参加できなかったエースの回復によっても解決可能だと思います。

以上、趣味に全振りしたエントリーでしたが、プロット画像やデータの取得は Go 言語でやってみました。コードはこちら。

github.com

箱根駅伝というか関東学連箱根駅伝予選会の結果データをテキストファイルとかjsonなどという気の利いた形式ではなく、 PDF という残念な形式で配布していますので、以下の PDF のライブラリーを使いました。

github.com

これのフォーク元の rsc/pdf というのを最初使ったのですが、怪しい挙動だった(リソースの Close もれがあるっぽい)ので、フォークされたこちらを使ってみました。

グラフ画像の作成はこちらを使いました。

github.com


おわり