notebook 001

notebook 001

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

【読書メモ】意思決定分析と予測の活用

GWは積読を解消したいな...😊こちらの本を読みました。

本の内容

不確実な要素がある中で、どのような選択(意思決定)をすれば良いか、を、数値化された値を意思決定に使って行っていくこと(それはどのように数値化するのか)を丁寧に解説されていて、かつ、Pythonで実装しながら確かめていける本です。

日常会話でイメージする「意思決定」という単語からは、個人の生活において非常に重要な意思決定を行う(自分の身に起こるのは1回きりの)を想像しがちですが、本で扱う内容は1回限りの予測で何が起きるかという話ではありません。「何度も何度も同じ意思決定の問題に直面すると想定して、その平均的な挙動を見る」(本書内の期待値の説明より引用)観点で、意思決定を行う上でどれを選ぶことが最良か(最良ってそもそも何が最良?どういう考え方で最良とするかも含めて)の考え方を学べる本です。例えば第3部では「果樹園の霜問題」(冬、農家のオーナーさんが、毎日の期待利得を最大化するために、霜を予防すべく予測気温から暖房を強めるかどうかの意思決定を毎日行う)を扱います。

本は5部構成、各部は章に分かれていますが、その章ごとに、冒頭で「概要」欄が纏められているのが、理解を助けてくれました。

f:id:mkmkipy:20210504124238j:plain:w300:h300

第3部:決定分析の活用、では、冒頭で予測結果の評価(機械学習でも頻出の評価指標)についての説明がありますが、予測が当たった、外れた、どれくらい外れてた、という計算だけではなく、続けて予測が価値を生み出す条件についても見ていきます。予測をするのに必要な情報の入手にコストがかかるならそれも反映するべきですが、そのことについても(予測が価値を生み出す条件の計算)書かれています。

第2部では、情報の価値の考え方についても書かれていました。

感想

正直にいうと、自分の知識の問題で、100%理解して正しくついていけたとは言えないのですが、今後わからないことが出てきたときにまた返ってきて読みたいと思いました。文章が読みやすく、ものすごく丁寧です。そして、実際にPythonでやってみるパートでは、読んだだけでは曖昧なところ、理解できたつもりになっているところが再認識できました。

遷移確率行列(マルコフ連鎖モデル)については以前少し計算したなーと思いながら。本を読むことで、過去にやったこと(点)が少しずつ繋がっていくように思えるのは嬉しい限り。

mkmkipy.hatenablog.com

オペレーションズリサーチ、動的計画法、情報エントロピー、など、学生時代に習ったことはキーワードとして出てくるのに、具体的な内容があまり思い出せないのは悲しい限り。

自分用メモ

  • 感度分析
  • 期待金額者
  • 情報量
  • 相互情報量(予測が当たるか当たらないかという点には頓着していない)
  • 不確実性の費用、期待リグレット
  • コスト/ロスモデル

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

もう2021年シーズンが始動しようとしているところ、昨シーズン(2020年)の話です。50%, 75%と投稿していたので、100%も... ということで。

J2リーグ戦、コロナ禍で長い中断期間がありましたが、12/18(日)で 全42試合が終了しました。1位 徳島ヴォルティス、2位 アビスパ福岡の上位2クラブが来シーズンのJ1昇格を勝ち取る結果となりました。

中断の影響で、水曜にも試合が多く組まれたことで、過密日程な今年のリーグ戦。気になるのが選手のコンディション。
選手起用が特定の選手に頼っているクラブと、そうではないクラブがあるのか、どのような傾向だったのかを可視化してみました。

以前、リーグ戦の 50%終了時、75%終了時に同じ内容を投稿しましたが、それの100%版、全試合(42試合)終了分となります。

最も顕著に、極端に、違いが見えていたのは 50%終了時です。(可視化した結果としてはそれが一番おもしろいです)

リーグ戦50%終了時(21試合分、9月24日時点)※最も顕著に違いが出ていた

mkmkipy.hatenablog.com

リーグ戦75%終了時(32試合分、11月10日時点)

mkmkipy.hatenablog.com

はじめに

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

使用したデータ

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

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

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

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

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

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

  • 左から順に山形、水戸、、の各クラブ
  • 1マスが1選手を示し、出場時間が長い順に、上から並べる
  • 数字は出場時間
  • 濃い色ほど値が大きい(=出場時間が長い)ことを示す
  • 例えば、1位の徳島は、出場時間がもっとも長い選手は3,600分で、試合には26人の選手が絡んでいる
  • ちなみに、2位の福岡は、31人の選手が絡んでいますが、これは登録選手全員が出場したそうです!(2種登録の選手を除く)

f:id:mkmkipy:20201226020220p:plain

50%終了時、75%終了時と同様に、今回もぱっと見、町田が一番偏りが大きそうです。

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

知りたいのは偏り具合、特に、出場時間の長い方の選手に偏りがあるかどうかです。前回同様、上位11人の合計時間数を利用します。

f:id:mkmkipy:20201226020354p:plain

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

スタメン依存度(仮称)

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

()内はリーグ戦の順位。

  1. 町田: 81.30%(19位)
  2. 東京V: 73.46%(12位)
  3. 徳島: 73.03%(1位)
  4. 岡山: 71.94%(17位)
  5. 北九州: 71.82%(5位)
  6. 琉球: 71.11%(16位)
  7. 群馬: 71.04%(20位)
  8. 金沢: 69.15%(18位)
  9. 愛媛: 68.91%(21位)
  10. 山形: 68.67%(7位)
  11. 栃木: 68.18%(10位)
  12. 磐田: 65.98%(6位)
  13. 福岡: 65.13%(2位)
  14. 京都: 64.62%(8位)
  15. 新潟: 64.05%(11位)
  16. 山口: 63.61%(22位)
  17. 長崎: 62.62%(3位)
  18. 甲府: 62.25%(4位)
  19. 千葉: 61.78%(14位)
  20. 大宮: 61.13%(15位)
  21. 水戸: 61.12%(9位)
  22. 松本: 60.37%(13位)

出場時間の長い選手 TOP10

42試合3780分、フル出場が2選手。GK新井選手(千葉)と、フィールドプレーヤーで唯一のフル出場となったDF岡村選手(群馬)。10位の田代選手でも1試合平均85分出場という恐ろしい数字です。この過密日程の中、特にフィールドプレーヤーで出場を続けている選手は、本当にタフですごい...!💪💪(もちろんGKもすごいです!)

(敬称略)(カッコ内は出場試合数)

  1. DF:岡村 大八(群馬), 3780分, (42)
  2. GK:新井 章太(千葉), 3780分, (42)
  3. MF:平戸 太貴(町田), 3758分, (42)
  4. DF:石尾 崚雅(金沢), 3690分, (41)
  5. DF:奥山 政幸(町田), 3689分, (41)
  6. DF:深津 康太(町田), 3671分, (41)
  7. DF:平 智広(東京V), 3662分, (41)
  8. MF:佐野 海舟(町田), 3658分, (41)
  9. FW:上門 知樹(岡山), 3629分, (42)
  10. DF:田代 雅也(栃木), 3601分, (41)

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

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

f:id:mkmkipy:20201226022932p:plain

まずは同様にヒートマップから。前回同様、最も濃いのは、京都のピーター・ウタカ選手。

f:id:mkmkipy:20201226023031p:plain

ゴール数は11選手だけでなく、全選手分を積み上げています。オウンゴールはここに含みません。水戸、長崎、徳島の順に多いです。
(福岡はゴール数の上では圧倒的だった、というわけではありませんが、失点数は29(リーグ最小)と堅守を誇っていました。)

感想

数値化した感想や背景などは、初回投稿の際に「感想」や「あとがき1」に少し書いたのでよろしければそちらをご参照ください。
初回投稿

mkmkipy.hatenablog.com


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

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

f:id:mkmkipy:20201226023416p:plain

f:id:mkmkipy:20201226023518p:plain

f:id:mkmkipy:20201226023532p:plain

f:id:mkmkipy:20201226023602p:plain

f:id:mkmkipy:20201226023618p:plain

f:id:mkmkipy:20201226023631p:plain

f:id:mkmkipy:20201226023655p:plain

f:id:mkmkipy:20201226023711p:plain

f:id:mkmkipy:20201226023732p:plain

f:id:mkmkipy:20201226023744p:plain

f:id:mkmkipy:20201226023814p:plain

f:id:mkmkipy:20201226023826p:plain

f:id:mkmkipy:20201226023841p:plain

f:id:mkmkipy:20201226023906p:plain

f:id:mkmkipy:20201226023920p:plain

f:id:mkmkipy:20201226023933p:plain

f:id:mkmkipy:20201226023947p:plain

f:id:mkmkipy:20201226024001p:plain

f:id:mkmkipy:20201226024027p:plain

f:id:mkmkipy:20201226024042p:plain

f:id:mkmkipy:20201226024058p:plain

f:id:mkmkipy:20201226024109p:plain

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

J2リーグ戦が75%終わったので選手の出場時間をヒートマップで見てみる(+ 最近いつ勝点を積み上げたか)

J2リーグ戦、コロナ禍で長い中断期間がありましたが、昨日で全日程の75%を超え、リーグ成立、つまりはJ1昇格が発動する状況になりました。未曾有な事態の中、ここまで試合ができたことに選手や関係者の方々は大変なご苦労・ご尽力があったことと思います。感謝(言葉が適切か悩ましいのですが、とにかくファンとしてはありがとうございます!という気持ち)。

中断の影響で、水曜にも試合が多く組まれたことで、過密日程な今年のリーグ戦。気になるのが選手のコンディション。
選手起用が特定の選手に頼っているクラブと、そうではないクラブがあるのか、ここまでの試合でどのような傾向だったのかを可視化してみました。

リーグ戦の半分が終わったタイミングで一度投稿していたので、75%(32節)が終わった今、改めて計算してみたいと思います。
前回の投稿はこちら(50%終了、21試合分、9月24日時点)※ヒートマップ的には前回の方がより極端な結果が出ています。

mkmkipy.hatenablog.com

今回は追加で「最近いつ勝点を積み上げたか」も、可視化しました。

はじめに

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

使用したデータ

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

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

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

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

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

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

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

リーグ戦75%終了時点

f:id:mkmkipy:20201109211550p:plain

前回投稿では、ぱっと見で明らかにヤバかった町田(語彙力...😓)ですが、今回もぱっと見、町田が一番偏りが大きそうです。

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

知りたいのは偏り具合、特に、出場時間の長い方の選手に偏りがあるかどうかです。前回同様、上位11人の合計時間数を利用します。

リーグ戦75%終了時点

f:id:mkmkipy:20201109221028p:plain

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

スタメン依存度(仮称)

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

リーグ戦75%終了時点

()内は現在の順位。前回%はリーグ戦50%終了時の値、矢印は前回値からの推移(± 1%は →で)

  1. 町田:84.21%(16位)、前回87.21%、↘️
  2. 北九州:75.96%(6位)、前回77.09%、↘️
  3. 岡山:73.90%(11位)、前回74.85%、→
  4. 徳島:73.26%(1位)、前回73.87%、→
  5. 東京V:72.65%(13位)、前回73.76%、↘️
  6. 群馬:72.35%(20位)、前回73.27%、→
  7. 琉球:71.73%(18位)、前回74.06%、↘️
  8. 金沢:70.47%(14位)、前回70.67%、→
  9. 山形:70.26%(9位)、前回74.32%、↘️
  10. 愛媛:69.89%(21位)、前回71.34%、↘️
  11. 栃木:69.26%(8位)、前回76.49%、↘️
  12. 京都:66.77%(7位)、前回68.77%、↘️
  13. 長崎:66.08%(3位)、前回67.05%、→
  14. 磐田:65.97%(10位)、前回68.78%、↘️
  15. 福岡:65.48%(2位)、前回67.03%、↘️
  16. 山口:65.37%(22位)、前回65.95%、→
  17. 新潟:65.24%(4位)、前回66.07%、→
  18. 千葉:63.93%(17位)、前回59.04%、↗️
  19. 甲府:63.45%(5位)、前回65.78%、↘️
  20. 大宮:63.25%(15位)、前回64.03%、→
  21. 水戸:61.67%(12位)、前回64.30%、↘️
  22. 松本:59.07%(19位)、前回62.72%、↘️

前回投稿時、このランキングで1位町田と22位千葉はくっきりと特徴が出ていましたが、今回は町田の値が下がったこともあり全体的にはクラブ間の差が少し縮まっています。前回投稿時にターンオーバーをしていると聞いていた千葉・甲府は、順位を上げました。今回、22位は松本ですが、J2半分が終了した時点で監督交代があったことも影響しているかもしれません(詳しくみたわけではないので全く関係ないかもしれません)。大宮は怪我人が多く出ていることが、前回も今回も数字に影響しているでしょうか。

  • ↘️:終盤に近づき疲労や故障者の影響や、秋の移籍ウィンドゥに伴う新加入選手の影響で、数値は下がる傾向にあると予測しました。実際、多くのクラブがここ。なお、変動が大きいのは栃木(-7.23%)で、理由が気になります。
  • →:変動が少ない、戦い方(というか、出場時間の長い選手)は大きく変わってないと言えそうです。
  • ↗️:1クラブ(千葉)のみここに該当。

出場時間の長い選手 TOP10

32試合2880分、ここまでフル出場が4選手。9位の選手でも残り21分なので9位まではほぼほぼフル出場と言っても過言ではないかと。この過密日程の中、特にフィールドプレーヤーで出場を続けている選手は、本当にタフですごい...!💪💪(もちろんGKもすごいです!)

(敬称略)

  1. DF:岡村 大八(群馬), 2880分
  2. GK:新井 章太(千葉), 2880分
  3. DF:石尾 崚雅(金沢), 2880分
  4. GK:ポープ ウィリアム(岡山), 2880分
  5. DF:奥山 政幸(町田), 2879分
  6. MF:佐野 海舟(町田), 2876分
  7. MF:白井 永地(岡山), 2863分
  8. MF:熊本 雄太(山形), 2860分
  9. MF:平戸 太貴(町田), 2859分
  10. DF:茂木 力也(愛媛), 2790分

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

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

f:id:mkmkipy:20201110141346p:plain

まずは同様にヒートマップから。前回同様、最も濃いのは、京都のピーター・ウタカ選手。

f:id:mkmkipy:20201110141437p:plain

ゴール数は11選手だけでなく、全選手分を積み上げています。オウンゴールはここに含みません。水戸の得点力が抜きん出ています。

最近いつ勝点を積み上げたか

勝点の積み上げだと折れ線グラフ形式をよく見かけますが、最近調子が良いかどうかをみたかったので違う表現にしてみました。

  • 1マス=1勝点、枠内の数字(※)は何日前に勝点をとったか。左から右へ日付は古くなる
  • 例えば1位徳島は、「2」が3つあるので、2日前の試合で勝点3積んだ、つまり勝利したことを示す
  • ここ1ヶ月(30日)で見ると、上位5チーム以外に、栃木、山形、磐田、岡山、松本が調子良さそう
  • 前半戦終了時に首位だった北九州は、最近あまり勝点を取れていないことがわかる


f:id:mkmkipy:20201110141741p:plain

感想

数値化した感想や背景などは前回投稿の際に「感想」や「あとがき1」に少し書いたのでよろしければそちらをご参照ください。
前回投稿

mkmkipy.hatenablog.com


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

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

f:id:mkmkipy:20201110143636p:plain

f:id:mkmkipy:20201110143735p:plain

f:id:mkmkipy:20201110143750p:plain

f:id:mkmkipy:20201110143813p:plain

f:id:mkmkipy:20201110143827p:plain

f:id:mkmkipy:20201110144527p:plain

f:id:mkmkipy:20201110144512p:plain

f:id:mkmkipy:20201110143910p:plain

f:id:mkmkipy:20201110143935p:plain

f:id:mkmkipy:20201110143948p:plain

f:id:mkmkipy:20201110144010p:plain

f:id:mkmkipy:20201110144025p:plain

f:id:mkmkipy:20201110144040p:plain

f:id:mkmkipy:20201110144109p:plain

f:id:mkmkipy:20201110144126p:plain

f:id:mkmkipy:20201110144143p:plain

f:id:mkmkipy:20201110144159p:plain

f:id:mkmkipy:20201110144213p:plain

f:id:mkmkipy:20201110144237p:plain

f:id:mkmkipy:20201110144255p:plain

f:id:mkmkipy:20201110144311p:plain

f:id:mkmkipy:20201110144325p:plain


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

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/

Flightradar24にデータをフィードしてみる(Raspberry Pi にセットアップ)

Flightradar24 という、世界中の飛行機が今どこ飛んでる情報が見られる有名なサイト(スマホアプリも)があり、私も飛行機が多い場所に行くとつい起動して見てしまうのですが(楽しい)、その情報は全世界のユーザから集められたデータから成り立っています。私も、我が家のアンテナで受信したADS-BのデータをFlightrader24に提供する、 feeder (feed) をやってみました。フィードすると、有償のBusinessアカウントにアップグレードされる特典も付いてきます。備忘録です。

Flightradar24: Live Flight Tracker - Real-Time Flight Tracker Map

f:id:mkmkipy:20200607000153j:plain


用意したもの

Raspberry Pi 関連

ADS-Bを受信するための、USBドングル型のチューナー(R820T2)

航空機が発信している ADS-B 位置情報 (高度、GPS 座標、機首方位など) を拾って受信するための機器として。「R820T2」や「ADS-B」をキーワードに探すと、こういう青いものがよく出てきます。
ただ、R820T2表記でもダメだった情報をいくつか見かけたので、レビューをよく読んで、こちらを購入。アンテナも付属。

  • Nooelec NESDR Mini 2+ 0.5PPM TCXO

f:id:mkmkipy:20200607000228j:plain

セットアップ

Raspberry Pi に OSインストール(Raspbian)

本来は、キーボードもディスプレイも不要(headless)で、Wifi経由のsshでインストール出来るはず。
はず、、というのは、どうやっても家のWifiルーター経由でラズパイにsshできない問題(connection refused)が有り、仕方なくディスプレイとキーボード繋いでやることに。ただこの問題は、後日、家のWifiルーターファームウェアをバージョンアップしたら解決しました。

※OSインストールは2019年4月に実施、そこから特にUpdateしておらず以下。最近は、Raspberry Pi Imagerという、公式のOS書き込みツールが新しく出てきているようです。

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux

USBドングル型のチューナーを設置

付属のアンテナをチューナーに繋ぎ、チューナーをラズパイのUSBに挿しただけですが、どうやらこれだけで認識した様子😊

Flightrader24にFeedするためのソフトウェアをインストール(fr24feed)

インストール時に聞かれること
  • Flightradar24に登録用のメールアドレス
  • アンテナ設置場所の緯度(latitude)・経度(longitude)
  • アンテナ設置場所の標高(単位はフィートで)

緯度・経度はgoogle mapのURLから、標高は住所から標高を調べるサイトでみて、住んでいる階の高さを適当に足しました。

インストール

ここに書いてあるとおりに、
Share your ADS-B data - Real-time flight tracker | Flightradar24

実行したのは以下の1行。
sudo bash -c "$(wget -O - https://repo-feed.flightradar24.com/install_fr24_rpi.sh)"

$ sudo bash -c "$(wget -O - https://repo-feed.flightradar24.com/install_fr24_rpi.sh)"
(略)
fr24feed (1.0.25-3) を設定しています ...
You don't seem to have any dump1090 installed. On the fr24feed start it will automatically install dump1090-mutability.
Created symlink /etc/systemd/system/multi-user.target.wants/fr24feed.service → /etc/systemd/system/fr24feed.service.
(略)
______  _  _         _      _                    _              _____    ___
|  ___|| |(_)       | |    | |                  | |            / __  \  /   |
| |_   | | _   __ _ | |__  | |_  _ __  __ _   __| |  __ _  _ __`' / /' / /| |
|  _|  | || | / _` || '_ \ | __|| '__|/ _` | / _` | / _` || '__| / /  / /_| |
| |    | || || (_| || | | || |_ | |  | (_| || (_| || (_| || |  ./ /___\___  |
\_|    |_||_| \__, ||_| |_| \__||_|   \__,_| \__,_| \__,_||_|  \_____/    |_/
               __/ |                                                        
              |___/                                                         
[main][i]FR24 Feeder/Decoder
[main][i]Version: 1.0.25-3/generic
[main][i]Built on Apr  8 2020 07:06:55 (HEAD-5e8ef0c.git/Linux/static_armel)
[main][i]Running on: raspbian9
[main][i]Local IP(s): 192.168.11.10
[main][i]Copyright 2012-2020 Flightradar24 AB
[main][i]https://www.flightradar24.com
[main][i]DNS mode: PING
Welcome to the FR24 Decoder/Feeder sign up wizard!
Before you continue please make sure that:
 1 - Your ADS-B receiver is connected to this computer or is accessible over network
 2 - You know your antenna's latitude/longitude up to 4 decimal points and the altitude in feet
 3 - You have a working email address that will be used to contact you
 4 - fr24feed service is stopped. If not, please run: sudo systemctl stop fr24feed
To terminate - press Ctrl+C at any point
Step 1.1 - Enter your email address (username@domain.tld)
$: abcabc@xyz.net <=== ★メールアドレスを入力
Step 1.2 - If you used to feed FR24 with ADS-B data before, enter your sharing key.
If you don't remember your sharing key, you can find it in your account on the website under "My data sharing".
https://www.flightradar24.com/account/data-sharing
Otherwise leave this field empty and continue.
$: <=== ★何も入力せずに、Enter(既存ユーザはShareing Key(パスワードのようなもの)を入力)
Step 1.3 - Would you like to participate in MLAT calculations? (yes/no)$: yes  <=== ★よくわからないまま yes にしてみた。緯度経度硬度を正確に入れなさいと言われる。
IMPORTANT: For MLAT calculations the antenna's location should be entered very precise!
Step 3.A - Enter antenna's latitude (DD.DDDD)
$:35.6585   <===★緯度を入力(この入力例は、東京タワーの緯度)
Step 3.B - Enter antenna's longitude (DDD.DDDD)
$:139.7454  <===★経度を入力(この入力例は、東京タワーの経度)
Step 3.C - Enter antenna's altitude above the sea level (in feet)
$:333 <===★標高をフィートで入力(この入力例は、ダミー値)
Using latitude: 35.6585, longitude: 139.7454, altitude: 333ft above sea level
Validating email/location information...OK
The closest airport found is ICAO:RJTT IATA:HND near Tokyo. <== ★最も近い空港を勝手に割り出してくれる(今回はRJTT/HND、つまり羽田空港)
Latitude: 35.552250
Longitude: 139.779602
Country: Japan
Flightradar24 may, if needed, use your email address to contact you regarding your data feed.
Would you like to continue using these settings?
Enter your choice (yes/no)$:yes <===★上記設定で続けますか?yes!!
Step 4.1 - Receiver selection (in order to run MLAT please use DVB-T stick with dump1090 utility bundled with fr24feed):
 1 - DVBT Stick (USB)
 -----------------------------------------------------
 2 - SBS1/SBS1er (USB/Network)
 3 - SBS3 (USB/Network)
 4 - ModeS Beast (USB/Network)
 5 - AVR Compatible (DVBT over network, etc)
 6 - microADSB (USB/Network)
 7 - SBSx via Basestation (localhost:30006)
Enter your receiver type (1-7)$:1 <===★1を入力
Checking for dump1090...NOT FOUND
Step 4.3 - Enter your additional dump1090 arguments or leave empty
 <===★何も入力せずに、Enter (「追加のdump1090はある?」)
Step 5.1 - Would you like to enable RAW data feed on port 30002 (yes/no)$:yes
Step 5.2 - Would you like to enable Basestation data feed on port 30003 (yes/no)$:yes
Step 6 - Please select desired logfile mode:
 0 -  Disabled
 1 -  48 hour, 24h rotation
 2 -  72 hour, 24h rotation
Select logfile mode (0-2)$:1 <===★任意だが、今回は1を入力
Submitting form data...OK
Congratulations! You are now registered and ready to share ADS-B data with Flightradar24.
+ Your sharing key (1cXXXXXXXXXXXXXX) ★sharing key が表示される★ has been configured and emailed to you for backup purposes.
+ Your radar id is T-RJTTXXX ★RADAR IDが表示される★, please include it in all email communication with us.
+ Please make sure to start sharing data within one month from now as otherwise your ID/KEY will be deleted.
Thank you for supporting Flightradar24! We hope that you will enjoy our Premium services that will be available to you when you become an active feeder.
To start sending data now please execute:
sudo systemctl start fr24feed
Saving settings to /etc/fr24feed.ini...OK
Installation and configuration completed!
$

sharing key と、RADAR ID(レーダーID) は、後でメールでも届きました。
レーダーIDは、T-RJTT-XXX のような、最寄りの空港のレターコードがついた、それっぽい感じの名前が付与されます😊

fr24feedを起動

インストールログの最後にかかれているように、以下で起動します。

$ sudo systemctl start fr24feed

fr24feed 起動状況の確認

fr24feed-status

$ fr24feed-status
[ ok ] FR24 Feeder/Decoder Process: running.
[ ok ] FR24 Stats Timestamp: 2020-06-03 16:29:57.
[ ok ] FR24 Link: connected [TCP].
[ ok ] FR24 Radar: T-RJTTXXX.
[ ok ] FR24 Tracked AC: 0.
[ ok ] Receiver: connected (0 MSGS/0 SYNC).
[ ok ] FR24 MLAT: ok [UDP].
[ ok ] FR24 MLAT AC seen: 0.

systemctl status fr24feed

$ sudo systemctl status fr24feed
● fr24feed.service - Flightradar24 Decoder & Feeder
   Loaded: loaded (/etc/systemd/system/fr24feed.service; enabled; vendor preset:
   Active: active (running) since Sun 2020-05-31 11:09:12 JST; 3 days ago
 Main PID: 440 (fr24feed)
   CGroup: /system.slice/fr24feed.service
           ├─  440 /usr/bin/fr24feed
           └─17416 /usr/bin/dump1090-mutability --raw --mlat --write-json /run/d

※ラズパイ再起動後も自動起動するよう設定されている。

 $ systemctl is-enabled fr24feed
enabled

ブラウザから

http://<ラズパイのIPアドレス>:8754/

f:id:mkmkipy:20200604103814j:plain

関連ログ

  • /var/log/fr24feed/fr24feed.log : fr24feedのログ
  • /run/dump1090-mutability/*.json:dump1090-mutability のログ

リソース使用状況など

CPUもメモリも全然余裕そうです。

f:id:mkmkipy:20200606225248p:plain

Flightradar24サイトで自分がFeedした情報を確認

feedが始まると、Businessアカウントに格上げされます✈️
(feedが止まると格下げされるっぽい)

f:id:mkmkipy:20200606141312p:plain

My Data Sharing から、自分がfeedしたデータの状況が確認できます。送信したフライトの数や、方位別集計、どのくらい遠くまで拾えたかの距離(単位は nm = 海里)などが、グラフィカルに表示されます。(グラフ表示は数時間待ちました。最初出なくて焦ってた💦)

自分のスタッツのグラフ見てるだけでも楽しいですが、ランキング表示があり、これはやる気をかきたてられるやん...。と、思いました。

ADS-B data statistics - Real-time flight tracker | Flightradar24

スコアは、過去30日間の起動時間・距離(最大や平均)から集計されるようです。起動しっぱなしにするだけで 8,640 points はもらえるなので、あとはいかに距離を広げてスコアを稼ぐかのようです。

おまけ:インストール後に学んだこと

飛行機も無線も全く詳しくないけどよくわからないままにチューナー挿してコマンド1つ実行したら動きはじめたようですが、後追いで調べてみました。引用だらけで失礼します🙏

ADS-B

ADS-B = Automatic Dependent Surveillance-Broadcast

ADS-B は、航空機を追跡するため協調監視技術です。この技術により、航空機は、モード S 信号方式を使用して、位置情報 (高度、GPS 座標、機首方位など) を定期的にブロードキャストします。
送信周波数: 1090 MHz

https://jp.mathworks.com/help/comm/examples/airplane-tracking-using-ads-b-signals.html

dump1090

RTL-SDRレシーバで受信したADS-Bの信号を文字にして出力するデコーダソフトウエア。

https://gato.intaa.net/archives/21762

ADS-Bの送信周波数が 1090 MHzにちなんだ名前になっているそう。dump1090にはいくつかのバージョン(のようなもの)がある。
flightradar24のインストールで、一緒にインストールされる dump1090は、dump1090-mutabilityというもの。

データを、Flightradar24に送らなくても、単体でも簡単な可視化ができるWebアプリも付いているので、単体で起動してみる。

### fr24feedで自動起動しているものを停止
$ sudo systemctl stop fr24feed
### dump1090を起動
$ dump1090-mutability --net --aggressive --interactive

インタラクティブに更新されます。
あと、ブラウザからも見れます。 http://<ラズパイのIPアドレス>:8080

dump1090により保存される、JSONファイルのフォーマット内容例(※これはdump1090-fa のもの)

dump1090/README-json.md at master · SDRplay/dump1090 · GitHub


ただこちら、もう新規インストールには使わないで、これからは dump1090-fa を使ってよ~とある。
GitHub - mutability/dump1090: Dump1090 is a simple Mode S decoder for RTLSDR devices



今後余力があれば、dump1090-fa に置き換えを検討したいと思います。
dump1090-fa - がとらぼ

Raspberry PiにTensorFlowをインストールしてFashion-MNISTのデータを分類モデルで、実行ログ

インストール/実行のログ。参考にしたサイトに掲載されていた手順やプログラムを、そのまま実行した時のログです。
ついでに、MacBook Proで実行したときと実行時間を比較してみました。

(2019年4月実施、ログが出てきたので今更ながら投稿...)

続きを読む

都道府県の人口を考慮してJリーグの2019年平均観客数をグラフ化してみた

コロナの影響でJリーグが中断していて、さみしい週末を過ごしています。

2020年のJリーグでは、観客数やdazn再生数に応じた「ファン指標分配金」なるものが導入されると聞き(原資5億円)、私の応援するクラブは地方で人口がだいぶ少なくて不利なんだけど😨...と気になっていたところに、あるきっかけ(後述)もあり、都道府県別の人口を考慮した比較を計算してみることにしました。

Jリーグ「ファン指標配分金」を実施 来場、視聴実績に応じて5億円を分配/サッカー/デイリースポーツ online

はじめに

もちろん、実際の人数が大きいことがビジネス上は売上・利益に直結し重要であることは理解したうえで、今回は比率から換算した数値を出してみようと思っているのでそこは何卒ご了承ください🙇‍♀️

使用したデータ

  • 2019年 Jリーグ平均観客数(Jリーグ公式サイトでは「平均入場者数」として発表)※リーグ戦のみの集計
  • 2018年 都道府県別人口(2018年10月1日現在。e-stats上の最新データがその日付だったので)

人口推計 各年10月1日現在人口 | ファイル | 統計データを探す | 政府統計の総合窓口

Jリーグのクラブの数

2019年のJリーグJ1~J3 の3カテゴリあり、それぞれ 18クラブ、22クラブ、18クラブの合計58。そのうちJ3の3つは「FC東京U-23」のような若手育成を目的とした2つ目のチームなので集計から省き、全55クラブについて比較する。

「Jクラブの数を考慮した都道府県の人口」を定義

都道府県の人口」を「その都道府県に存在するクラブの数」で割って算出。例えば、東京都の人口は1,372万人だが、東京都にはJクラブが3つあるので、「Jクラブの数を考慮した都道府県の人口」として、1372/3 = 457万人とする。(3つとは、FC東京, 東京ヴェルディ, 町田ゼルビア

「Jクラブの数を考慮した都道府県の人口とクラブ名」一覧

Jリーグ_都道府県別

1つの都道府県内に複数のクラブが存在するのは、神奈川(6)、静岡(4)、東京(3)、大阪(2)、埼玉(2)、千葉(2)、茨城(2)、長野(2)、福岡(2)。

Jクラブ数を考慮した結果、都道府県別人口のトップ3は 愛知(754万人)、兵庫(548万人)、北海道(529万人)の順となり、ワースト3は 山梨(82万人)、徳島(74万人)、鳥取(56万人)となった。1位・愛知と最下位・鳥取その差は13.5倍。なかなかに格差社会

今回考慮しなかったこと
  • ホームタウンJリーグではJクラブの本拠地を「ホームタウン」と呼び、ホームタウンが県内全域のクラブもあれば、県内の一部の市区町村のこともある。なので厳密にやろうとしたら各クラブのホームタウンがどこかを調べて市区町村別の人口を足して...とも思ったが割愛。
  • 都道府県の越境:鹿島へは東京や近郊からも多く通っていたり、鳥栖(佐賀県)は福岡から電車ですぐだったり、都道府県で区切るのが適切ではないケースは多々あると思う。交通の便が良い都市部になるほどその傾向は強そう。
  • カテゴリの違いによる重み付け:J1かJ3かなどのカテゴリを考慮せず、つまり重み付けなどもせず、今回は単純にクラブの数で割り算している。
  • 都道府県の面積(人口密度):例えば北海道のように人口が多くても面積が広いと、札幌ドームに集まるのは大変だと思う。

いざ本題へ:やりたいこと「徳島係数」と「徳島換算」

今回、グラフ化の直接のきっかけは、我らがキャプテン 徳島ヴォルティス岩尾憲 選手が、先日ラジオで「なぜ徳島にいるのか?」の質問に答える中で、「たとえ人口が少なくてもそこからスタジアムに1万人、2万人集められるってことをやっていきたい、徳島で地方発のサッカークラブのモデルを作りたい」という想いを語っていたこと(感激!!!!!)。「徳島で1万人なら、福岡で3万5千人の計算になるそう」とも言っていて、その数字を私も見てみたい!と思った次第でした。

※ここから先は「徳島」の話が続きますが、クラブ同士の比較観点では形はそのまま使えるので(Y軸の数値(絶対値)は徳島基準の数値だが、クラブ同士の比較(=グラフの形)は変わらない)、もしよければそんな視点でグラフを眺めていただけると。

「徳島係数」:徳島の1万人は何万人に相当するか?

これはもう岩尾選手の言葉まんまの定義で!「徳島の1万人は人口比を考慮すると何万人に相当するか?」。ここでいう「人口」とは先に算出した「Jクラブの数を考慮した都道府県の人口」で算出。

※徳島が1万人になるように整えただけなので、グラフの形は一番始めのグラフと同じ。J1/J2/J3のカテゴリ別に表示する。縦軸は揃えてます(Max 12万人)。

J1クラブ

徳島の1万人は、名古屋グランパス(愛知県)だと10万人以上に相当する計算に!第2位のヴィッセル神戸(兵庫県)だと74,500人。ちなみにヴィッセルのホームスタジアムは、徳島のホームスタジアムから見て、2番目に近いスタジアムですが、超ご近所なのにこんなに違うとは...。Jリーグ_都道府県別

J2クラブ

J2で見ると、1位と最下位の差は6.16倍。徳島の1万人は東京ヴェルディの62,600人。大宮アルディージャの49,800人。ジェフの42,500人。グラフの通り徳島は、人口でみるとJ2最下位の中でリーグ戦に臨んでいます。
徳島の1万人は福岡の34,700人に相当。岩尾選手の計算方法が同じだったかは分かりませんが、近い数字になりました。(ちなみに福岡県はJクラブが2つあるので、もし2で割らずに単純に人口比だったら、徳島の1万人は福岡の69,400人になる)
Jリーグ_都道府県別

J3クラブ

ここで初めて1万人を切るクラブ、つまり徳島より少ない人口のクラブが出てきました。全国で一番人口の少ない都道府県である鳥取の、ガイナーレ鳥取。ちなみに、Jクラブ数を考慮しないノーマルな都道府県の人口では徳島県は第44位、あとに続くのが高知、島根、鳥取の3つ。
Jリーグ_都道府県別

「徳島換算」:仮に都道府県の人口が徳島レベルだったら、2019年の平均観客数は何人か?

2019年のJリーグ、最も多い平均観客数だったのは、浦和レッズ(埼玉県)で、34,184人でした。

「徳島換算」は、もし仮に僕の私の応援するクラブの都道府県の人口が徳島レベルだったとしたら、2019年の平均観客数は何人か?を計算。ここでも「都道府県の人口」=「クラブ数を考慮した都道府県の人口」のことを指す。

Jリーグ_都道府県別

  • 例えば、浦和レッズの例では、74万*(34184/366万)=6,864人になる
  • 徳島ヴォルティスの2019年平均観客数は5,736人なので、これより多いクラブは人口比を考慮しても徳島より多く集客出来ている、ということになる
  • ちなみに、徳島県の人口(74万人)は、東京だと練馬区大田区の人口に相当、世田谷区(92万人)よりはだいぶ少ない、大阪だと堺市(82万人)よりすこし少ないくらい
J1クラブ

第1位はサガン鳥栖(佐賀県)。徳島ヴォルティスの観客数(5,736人)は、中央やや右の湘南とFC東京の間に入る。
Jリーグ_都道府県別

J2クラブ

徳島ヴォルティスは2位。徳島の観客数は昨年J2で15位でしたが、人口比を鑑みると一気に上位へ。でも1位取れると思ってたんだけど結構な差で上に甲府がいた。山形とは僅差。(甲府、山形、の並びで思い出すのは、去年のJ1昇格プレーオフ...)
Jリーグ_都道府県別

J3クラブ

第1位はガイナーレ鳥取(鳥取県)。全体的に、ちょっと小さい数字になってしまいましたが、徳島換算する前(実際の観客数)でも、第1位の北九州を除き徳島の観客数(5,736人)を下回るので、徳島換算してしまうことで、更に小さな数字になってしまった。
Jリーグ_都道府県別

平均観客数を日本地図にマップ

ここは平均観客数の実際の値を利用。J1=赤、J2=緑、J3=黒で、丸の大きさが平均観客数を示す。縮尺の都合で、北海道と沖縄載せられなくてごめんなさい🙇‍♀️うっすらと透けて見える太平洋ベルト

Jリーグ_都道府県別

位置は各クラブのホームスタジアムの位置にしました。(ホームスタジアムが他クラブと重なってしまう東京Vは味の素フィールド西が丘YSCC横浜は事務所の地点を利用)

まとめというか感想

なんとなくずっと「徳島は人口少ない割には頑張ってるほう*1」と思ってたんだけど、計算・グラフ化してみることで、甲府とは規模感似ている(人口も観客数も)が上回られている、山形とはいい勝負、J2とJ1ではだいぶ違うことなどが気づきでした。また、人口を考慮しても上には何クラブかいるということも分かったので、まだまだ限界ではない、まだ伸びる余地はあるという希望も少し持てました。

あとがき

今回の集計は2019年でやりましたが、2020年だとFC今治(愛媛県)がJ3に加入し、全56クラブ。愛媛県のクラブ数が2つになります。(クラブ数を考慮した愛媛県の人口は、徳島県を下回ることになる)

徳島ヴォルティスは、スペイン人のリカルド・ロドリゲス監督が4年目のシーズンであり、今年もとても楽しいです。2020年開幕戦、daznで見れる方はぜひ。(後半始まってすぐ*2のチャンスシーンまでの流れとか最高。試合は東京ヴェルディに3-0で勝利)

なにはともあれ、コロナウィルスが早く収束しますように。

*1:頑張っているのは選手だったりクラブの方なので、私が頑張っているわけではないですが

*2:daznのタイムスタンプでは1:19:00あたりから