notebook 001

notebook 001

INPUTとOUTPUTの個人的な備忘録です。

J2リーグ戦が半分終わったので選手の出場時間をヒートマップで見てみる

J2リーグ戦、コロナ禍で長い中断期間がありましたが、昨日でちょうど半分の21試合が終わりました。

中断の影響で、水曜にも試合が多く組まれたことで、過密日程な今年のリーグ戦。今も5連戦の最中ですが(大宮と福岡は延期影響で11連戦中)、このあとも3回、5連戦が待っています。気になるのが選手のコンディション。

選手起用が特定の選手に頼っているクラブと、そうではないクラブがあるのか、ここまでの試合でどのような傾向だったのかを可視化してみました。
もちろん起きて欲しくないですが、怪我や故障のリスク観点では、いろんな選手が出ているクラブの方が、選手1人の離脱の影響が、数字の上では小さくなると言えるでしょう。

はじめに

  • J2リーグ戦は、年間42試合(全22クラブでのホーム&アウェー
  • 開幕戦(第1節)が2月23日、その後コロナ影響で中断、6月27日に再開
  • 再開後、選手交代は1試合あたり3回・5名までOK(但し、回数は、再開後のルールではHTでの交代は数に入れないので、最大で4回までOK)

使用したデータ

2020年J2リーグ戦、各選手の出場時間、ゴール数(ここまでの21試合分)
https://data.j-league.or.jp/SFPR01/

選手別の出場時間をみてみる

合計して気づきましたが、アディショナルタイムは、公式記録では加算されないんですね😳 となると、後半ATに交代した選手の出場時間の扱いですが、OUTの選手の出場時間は89分、INの選手は1分が公式記録となっていました。

クラブ別、選手の出場時間

出場時間をヒートマップ表示

まずはクラブとしてどのような起用の傾向があるのか、ということで、各選手の出場時間に着目してヒートマップで表示してみます。

  • 左から順に山形、水戸、、の各クラブ
  • 1マスが1選手を示し、出場時間が長い順に、上から並べる
  • 数字は出場時間
  • 濃い色ほど値が大きい(=出場時間が長い)ことを示す
  • 例えば、現在1位の北九州は、出場時間がもっとも長い選手は1,800分で、ここまで試合には25人の選手が絡んでいる

f:id:mkmkipy:20200924003538p:plain

ぱっと見、町田ヤバい!(語彙力...😓)、色が濃い選手が数多くいます。一方で、千葉は偏りが少なく、下の方にいる選手も比較的長時間プレーしているようです。その2クラブは特徴的なので分かりやすいですが、色合いを見ながらこことここは似てるかな?とか、考えていました。

出場時間を積み上げ棒グラフで表示:「スタメン依存度(仮称)」

知りたいのは偏り具合、特に、出場時間の長い方の選手に偏りがあるかどうかです。データと色々悩んだ結果、すごく単純ですが、上位11人の合計時間数を利用します。

f:id:mkmkipy:20200924003707p:plain

各クラブ出場時間の長い選手から11人、下から順に積み上げ。例えば、町田は11人目(一番上のピンク)の選手まで積み上げた結果、合計 18,130分。この時間を総時間 20,790分(=90分 x 21試合 x 11人)で割った割合を「スタメン依存度(仮称)」とすることにしました。総時間は、退場の影響でこれより少ないクラブもありますが、ここでは考慮しません。

スタメン依存度(仮称)

(言葉の響きがあまり好きじゃないので、もっといい呼び方ないかなぁ...😌)

()内は21節終了時の順位

  1. 町田:87.21%(10位)
  2. 北九州:77.09%(1位)
  3. 栃木:76.49%(9位)
  4. 岡山:74.85%(16位)
  5. 山形:74.32%(17位)
  6. 琉球:74.06%(18位)
  7. 徳島:73.87%(2位)
  8. 東京V:73.76%(11位)
  9. 群馬:73.27%(21位)
  10. 愛媛:71.34%(22位)
  11. 金沢:70.67%(27位)
  12. 磐田:68.78%(7位)
  13. 京都:68.77%(5位)
  14. 長崎:67.05%(3位)
  15. 福岡:67.03%(4位)
  16. 新潟:66.07%(8位)
  17. 山口:65.95%(19位)
  18. 甲府:65.78%(6位)
  19. 水戸:64.30%(12位)
  20. 大宮:64.03%(15位)
  21. 松本:62.72%(20位)
  22. 千葉:59.04%(14位)

ヒートマップの印象通りに、1位町田と22位千葉が際立つ計算結果となりました。後出しジャンケンのようで申し訳ないのですが、千葉は対戦した時に連戦ではターンオーバーを敷いているといると言っていたので、この結果も納得です。他に、甲府もターンオーバーしていると言っていたように記憶しています。

出場時間の長い選手 TOP10

21試合1890分、ここまでフル出場が6選手。第10位の選手でも1877分なのでほぼフル出場。この過密日程の中、特にフィールドプレーヤーで出場を続けている選手は、本当にタフですごい...!💪💪

(敬称略)

  1. DF:岡村 大八(群馬), 1890分
  2. GK:新井 章太(千葉), 1890分
  3. GK:秋元 陽太(町田), 1890分
  4. GK:白井 裕人(金沢), 1890分
  5. DF:石尾 崚雅(金沢), 1890分
  6. GK:ポープ ウィリアム(岡山), 1890分
  7. DF:奥山 政幸(町田), 1,889分
  8. MF:佐野 海舟(町田), 1,886分
  9. DF:深津 康太(町田), 1,881分
  10. MF:平戸 太貴(町田), 1,877分

選手別のゴール数を見てみる

ゴールも特定の選手に偏っているかどうかを、見てみたいと思います。

f:id:mkmkipy:20200924005800p:plain

まずは同様にヒートマップから。ヤバい選手(語彙力2回目...😓)が、ひとりいますね。想像通り、京都のピーター・ウタカ選手。
北九州は、ディサロ選手の活躍に注目がいきがちですが、次点の選手も7ゴール(町野選手)と、結構多いんですね...。(強い...)

f:id:mkmkipy:20200924005823p:plain

ゴール数は11選手だけでなく、全選手分を積み上げています。オウンゴールはここに含みません。(積み上げたら、順位表掲載の記録より少ないクラブがあり、一瞬焦りましたが、オウンゴールの影響でした)

感想

後半戦に入り疲労も蓄積してくると、今まで以上に総力戦になることが予想されます。

上位にいて、かつ、いろんな選手が出場している(スタメン依存度(仮称)の数値が低い)、新潟、磐田は後半もコンディション良く戦えて順位を上げてくるのではないかと思いました(対戦時の印象も込みでの感想になっていますが💦)。現在首位の北九州は、スタメン依存度(仮称)ランキング的には第2位で、主力選手は長時間出場している傾向のようです。(対戦時の感想:連戦中だったのに速くて強かった...)

可視化はしたものの、

  • 偏りが少なく色んな選手が長時間出ている。かつ、順位が良い:理想。総力戦で戦えていて、疲労が蓄積してくる後半戦も強そう
  • 偏りが少なく色んな選手が長時間出ている。かつ、順位が良くない:選手起用が定まっていない?あるいは、うまくいっていないから色んな選手を試している?

と、同じ計算結果でも、+成績(順位)で恣意的な感想になってしまうので、なんらかもう少し別の視点でも数値化できればよかったのですが。

未曾有の事態の中、半分の試合が終わったこと、選手や関係者の方々もPCR検査を受けながらの&制約のある生活の中での試合であろうことを思うと、たとえdazn越しでも試合が見られる日々に感謝しつつ、少しでも早くコロナの収束とスタジアムの雰囲気が戻ることを心から願っています。

あとがき1

今回、私のブログでは単なる可視化で終わっているので、リンクを掲載するか悩みましたが、チームスポーツにおける選手と故障と言う観点では、以前 Sports Analytics Meetup #5 で発表されていた内容が、とても記憶に残っています。(今回、数字を見てみようと思ったきっかけです)

あるシーズンのNBAで、複数のスター選手を抱える強豪チームは、優勝を逃しました(スター選手は怪我でファイナルには出場できなかった)。選手の怪我や故障による影響を、カオスエンジニアリング(サービスを構成する一部の要素が壊れても復旧しサービス継続できることを目標に、一部を壊して回るようなテスト手法)の考え方を応用して、丁寧にシミュレーションされた結果をお話されていました。

詳細はリンク先↓↓の「カオスエンジニアリングで始めるチームビルディング」です。

Sports Analyst Meetup #4 - 資料一覧 - connpass

あとがき2:出場時間TOP5選手(各クラブごとの)

  • minutes: 出場時間(分)
  • matches: 出場試合数
  • avg_playtime: 出場した試合あたりの出場時間 (= minutes/matches)
  • goals: ゴール数
  • goals_90min: 90分平均得点

f:id:mkmkipy:20200924232057p:plain

f:id:mkmkipy:20200925002906p:plain

f:id:mkmkipy:20200924232145p:plain

f:id:mkmkipy:20200924232159p:plain

f:id:mkmkipy:20200924232217p:plain

f:id:mkmkipy:20200924231938p:plain

f:id:mkmkipy:20200924232243p:plain

f:id:mkmkipy:20200924232257p:plain

f:id:mkmkipy:20200924232310p:plain

f:id:mkmkipy:20200924232327p:plain

f:id:mkmkipy:20200924232357p:plain

f:id:mkmkipy:20200924232417p:plain

f:id:mkmkipy:20200924232433p:plain

f:id:mkmkipy:20200924232447p:plain

f:id:mkmkipy:20200924232519p:plain

f:id:mkmkipy:20200924232536p:plain

f:id:mkmkipy:20200924232549p:plain

f:id:mkmkipy:20200924232602p:plain

f:id:mkmkipy:20200924232629p:plain

f:id:mkmkipy:20200924232642p:plain

f:id:mkmkipy:20200924232655p:plain

f:id:mkmkipy:20200924232711p:plain

https://data.j-league.or.jp/SFPR01/