グラぽ

名古屋グランパスについて語り合うページ

メニュー

#グランパス の逆転優勝の確率は? 実際のシミュレーションアプリで計算した数値は・・・ #grampus

お題箱からのネタです。「残り試合数=逆転できる勝ち点差」は成り立つか?というものです。

今回のお題「残り試合数=逆転できる勝ち点差」は成り立つ?
今回のお題「残り試合数=逆転できる勝ち点差」は成り立つ?

J1百年構想リーグも終盤戦。首位・神戸を名古屋が追う展開のなか、残り7試合で勝ち点差7という状況になりました。追いつけるのか、追いつけないのか。

気持ちとしては「まだわからない」、冷静に見ると「かなり厳しい」。そのあいだで、ファンの心は毎週揺れています。

データ屋としては、この「わからなさ」を数字で置き換えてみたくなりました。

そこで作ったのが、今回紹介する簡易ポアソン型モデルです。

できるだけやさしく言うと、

「各試合で何点入りそうかをざっくり見積もって、その点の入り方から勝ち・引き分け・負けの確率を出し、それを残り試合分積み上げるモデル」 です。

「ポアソン」と聞くと難しそうですが、考え方自体はそこまで複雑ではありません。順番に分けるとわかりやすいので、以下で見ていきます。

そもそも何をしたいモデルなのか

知りたいのは、

「名古屋が残り7試合で神戸の勝ち点を上回れる確率はどれくらいか」

でした。

これを考えるには、本当は各試合について

  • 名古屋が勝つか
  • PK勝ちか
  • PK負けか
  • 負けか

を全部考えないといけません。

しかも相手は毎試合違います。 下位とやる試合と、上位とやる試合では難しさが違うはずです。

そこで、

「試合ごとの難しさの違いも少し入れながら、でも重すぎない計算で確率を出そう」

というのが、この簡易ポアソン型モデルです。

モデルの全体像

流れはこうです。

  • 各チームの「点を取る力」「点を取られにくさ」をざっくり数字にする
  • その数字を使って、各試合の「何点入りそうか」を見積もる
  • その「何点入りそうか」から、90分勝ち・90分引き分け・90分負けの確率を出す
  • 引き分けならPK戦になるので、PK勝ち・PK負けに分ける
  • それを残り7試合ぶん合成して、最後に勝ち点がどうなるかを見る
簡易ポアソン分析予測モデルの説明
簡易ポアソン分析予測モデルの説明

つまり、

チームの強さ → 試合ごとの点数予想 → 試合ごとの勝ち点確率 → 7試合の合計

という流れです。

まず「チームの強さ」をどう置いたのか

今回のモデルでは、チームの強さをかなり単純化しています。

使ったのは主に

  • ここまで何点取っているか
  • ここまで何点取られているか
  • 何試合消化したか

です。

たとえば、

  • 11試合で22得点しているチーム
  • 11試合で11得点しかしていないチーム

があれば、前者の方が「攻撃力が高そう」ですよね。

同じように、

  • 11試合で10失点のチーム
  • 11試合で16失点のチーム

なら、前者の方が「守備がよさそう」です。

そこで、1試合あたりの平均に直します。

たとえば神戸が11試合で22得点なら、

  • 1試合平均得点 = 22 ÷ 11 = 2.0

です。

名古屋が11試合で18得点なら、

  • 1試合平均得点 = 18 ÷ 11 ≒ 1.64

です。

こうして、各チームの攻撃力・守備力の元になる数字を作ります。

でも「2.0点取る力」だけでは比較しにくい

ここで問題があります。

リーグ全体が点の多い年と少ない年では、同じ1.5点でも意味が少し違います。

そこで、リーグ平均と比べます。

今回のコードでは、リーグ平均の1チーム1試合あたり得点を、ざっくり

1.35

と置いています。

すると、神戸の攻撃指数は

2.0 ÷ 1.35 ≒ 1.48

になります。

これは、

「神戸はリーグ平均の約1.48倍の得点ペース」

という意味です。

一方、名古屋の攻撃指数は

1.64 ÷ 1.35 ≒ 1.21

くらいになります。

守備も同じです。 失点が少ない方が守備が良いので、守備指数は小さい方が有利です。

たとえば神戸が11試合で10失点なら

10 ÷ 11 ≒ 0.91

これをリーグ平均1.35で割ると

0.91 ÷ 1.35 ≒ 0.67

です。

これは、

「神戸は平均よりかなり失点が少ない」

という見方になります。

各試合で「何点入りそうか」を作る

ここがこのモデルの中心です。

たとえば「名古屋 vs 清水」という試合があるとします。 この試合で名古屋が何点くらい取りそうかは、

  • 名古屋の攻撃力
  • 清水の守備力
  • 名古屋がホームかどうか

でだいたい決まりそうです。

そこでコードでは、期待得点をこんな感じで作っています。

  • ホームの期待得点 = リーグ平均 × ホーム側の攻撃指数 × アウェイ側の守備指数 × ホーム補正
  • アウェイの期待得点 = リーグ平均 × アウェイ側の攻撃指数 × ホーム側の守備指数 ÷ ホーム補正

ホーム補正は今回は 1.10 にしています。 つまり、

ホームチームは少し有利

と置いています。

これは難しく見えますが、意味は単純です。

名古屋の期待得点が上がる条件

  • 名古屋の攻撃が強い
  • 相手の守備が弱い
  • 名古屋がホーム

名古屋の期待得点が下がる条件

  • 名古屋の攻撃が弱い
  • 相手の守備が固い
  • 名古屋がアウェイ

です。

「期待得点」が出たら、それで終わりではない

たとえばある試合で、名古屋の期待得点が 1.8、相手が 1.1 になったとします。

でも、現実の試合で「名古屋は必ず1.8点取る」わけではありません。 0点のこともあるし、1点かもしれないし、3点入るかもしれません。

そこで登場するのがポアソン分布です。

ポアソン分布とは何か

かなりざっくり言うと、

「平均してこれくらい起きそうな出来事が、実際には0回・1回・2回…になる確率を出す道具」

です。

サッカーでは「得点数」を扱うのによく使われます。

たとえば期待得点が 1.8 のチームなら、

  • 0点の確率
  • 1点の確率
  • 2点の確率
  • 3点の確率
  • 4点以上の確率

がそれぞれ計算できます。

直感的には、

  • 期待得点が低いチームは0点や1点が多い
  • 期待得点が高いチームは2点や3点も増える

ということです。

2チームの得点確率を組み合わせる

たとえば、

  • 名古屋の得点分布
  • 清水の得点分布

がわかったら、それを組み合わせて試合結果の確率が出せます。

たとえば、

  • 名古屋2点・清水1点
  • 名古屋1点・清水1点
  • 名古屋0点・清水2点

などの確率を全部足し上げれば、

  • 名古屋の90分勝ち確率
  • 90分引き分け確率
  • 名古屋の90分負け確率

が出せます。

つまりこのモデルは、

得点の確率 → スコアの確率 → 勝敗の確率

と変換しているわけです。

この大会特有の「PK勝ち点制」をどう入れたか

普通のリーグなら90分引き分けで勝ち点1ずつですが、今回は違います。

百年構想リーグでは、

  • 90分勝ち = 3
  • PK勝ち = 2
  • PK負け = 1
  • 90分負け = 0

です。

そのため、90分引き分けが出たら、そのあとPK戦を考えます。

ただ、PK戦の細かい強さまで入れると急に難しくなるので、今回は単純に

PK勝率は50%対50%

と置きました。

つまり、90分引き分け確率が30%なら、

  • PK勝ち確率 = 15%
  • PK負け確率 = 15%

と分けています。

これで1試合ごとに、

  • 勝ち点3を取る確率
  • 勝ち点2を取る確率
  • 勝ち点1を取る確率
  • 勝ち点0を取る確率

が計算できます。

1試合ごとの勝ち点確率を、7試合ぶん積み上げる

ここまで来ると、各試合について

「この試合で名古屋は何点積みそうか」

の分布ができます。

たとえばある試合で、

  • 勝ち点3の確率 40%
  • 勝ち点2の確率 15%
  • 勝ち点1の確率 15%
  • 勝ち点0の確率 30%

のような分布が得られたとします。

これを残り7試合ぶん合成していくと、

名古屋は残り7試合で合計何点積むか

の確率分布ができます。

神戸についても同じことをやります。

最後に、

  • 名古屋の現在勝ち点 + 残り7試合の追加勝ち点
  • 神戸の現在勝ち点 + 残り7試合の追加勝ち点

を比べて、

名古屋が最終的に神戸を上回る確率

を計算します。

このモデルの良いところ

初心者向けに言うと、このモデルの良いところは3つあります。

1.相手による違いを少し入れられる

単純に『ここまでの勝率をそのまま延長』するだけのモデルだと、清水戦も広島戦も同じ重みになってしまいます。 でもこのモデルでは、相手の得点力・失点力の違いが入ります。

2.得点というサッカーらしい単位から考えられる

勝つ・負けるをいきなり当てにいくのではなく、

  • 何点取りそうか
  • 何点取られそうか

から考えるので、サッカーの感覚に近いです。

3.そこそこ軽い

もっと精密なモデルはいくらでも作れますが、かなり複雑になります。 今回のモデルは「簡易」なので、そこまで重くなく回せます。

逆に、このモデルの弱いところ

ここもかなり大事です。

1. いまの調子をあまり見ていない

最近5試合で急に強くなった、怪我人が戻った、逆に主力が抜けた、という変化は入っていません。

2. PKの強さを見ていない

全部50:50にしています。 本当は多少の差があるかもしれません。

3. 攻撃力・守備力をかなり単純に作っている

得点と失点だけで強さを表しているので、 内容の良し悪しまでは拾えていません。

4. ホーム / アウェイの置き方が大事

ホーム補正をどう置くかで、少し結果が動きます。

5. 他チームとの競争を完全には見ていない

今回は「神戸を上回れるか」を主に見ましたが、実際の首位争いは神戸以外もいます。

なぜ「簡易」なのか

本格的な予測モデルを作ろうとすると、本当はこういうものまで入れたくなります。

  • 直近のxG
  • ホームとアウェイ別の成績
  • 怪我人や出場停止
  • 連戦疲労
  • 相性
  • PKの強さ
  • 得失点差まで含めた順位決定

でも、そこまでやると別物になります。

今回の目的は、

「残り7試合で7差を逆転するのは、体感的にどれくらい大変か」

をつかむことでした。

そのため、

ざっくり強さを数字にして、試合ごとの得点確率を出し、残り試合を積み上げる

くらいに留めています。 だから「簡易ポアソン型モデル」です。

すごく雑に一言で言うと、このモデルは、

「チームの得点力と失点力から各試合の点の入りやすさを作り、その点の入りやすさから勝ち点の分布を作るモデル」

です。

もっと感覚的に言うなら、

「この相手なら何点くらい入りそうか」を全部の残り試合でやって、その積み上げで逆転確率を見る方法

です。

たとえると

たとえばゲームで、各対戦相手ごとに

  • この敵には勝ちやすい
  • この敵とは五分
  • この敵には苦戦しやすい

という情報が少しあるとします。

その情報から、

  • 7戦したら何勝くらいしそうか
  • ポイントはどれくらい積めそうか

をシミュレーションする感じです。

今回のモデルは、その「勝ちやすい・苦戦しやすい」を、 サッカーでは得点期待値で表していると思えば近いです。

ちょっと難しめなロジック

以下は、詳しく知りたいという方向けです。つらかったら次の項目に飛ばしてください。

今回作成したのは「名古屋と神戸は同じ7試合ではないし、相手の強さが違う」という補正を入れるためのモデルです。 残り対戦カードは、2026年4月21日時点の公式日程をベースに相手関係を置きつつ、このコードではホーム/アウェイを簡略化した例として入力しています

考え方はこうです。 まず各チームの攻撃力・守備力を、現在の得点・失点からざっくり作ります。 リーグ平均の1チームあたり得点を μ として、

  • 攻撃力 attack_t = (得点/試合数) / μ リーグ平均得点
  • 守備力 defense_t = (失点/試合数) / μ リーグ平均得点

と置きました。 この defense_t は「小さいほど守備が固い」指数です。

たとえばアプリ作成時の入力では、名古屋は 18得点15失点、神戸は 22得点10失点 なので、神戸は名古屋より 攻撃指数が高く、守備指数が低い(=守備が良い) チームとして入ります。

次に、各カードの期待得点を

  • λ_home = μ × attack_home × defense_away × home_adv
  • λ_away = μ × attack_away × defense_home ÷ home_adv

で置きました。 home_adv はホーム優位のざっくり補正で、1.10前後です。 なお μ もこのコードでは 1.35 の固定値 を使っています。

つまり、 「攻撃が強いチーム」 「相手守備が緩いチーム」 「ホームのチーム」 ほど期待得点が上がる、という非常に素朴な形です。

そのうえで、スコアは独立ポアソンと見て、

  • Home goals ~ Poisson(λ_home)
  • Away goals ~ Poisson(λ_away)

と置き、0点から10点までのスコア行列を足し上げて

  • 90分ホーム勝ち確率
  • 90分引分け確率
  • 90分アウェイ勝ち確率

を出します。

百年構想リーグは90分同点だとPKなので、そこは簡単化して PK勝率は50:50 と置きました。 すると各試合の勝ち点分布は

  • 勝ち点3 = 90分勝ち
  • 勝ち点2 = 90分引分け × 0.5
  • 勝ち点1 = 90分引分け × 0.5
  • 勝ち点0 = 90分負け

になります。

これを各試合ごとに作り、残り7試合分をまた畳み込んで、最後に

名古屋の現在勝ち点18 + 残り7試合の名古屋の追加勝ち点S_N > 神戸の現在勝ち点25 + 残り7試合の神戸の追加勝ち点S_K

となる確率を計算しました。

以下が実際のアプリです。Pythonのプログラムとして作成してあります。

今回のコードで実際にやっていること

コードは実質こういうことをしています。

  1. 名古屋は1試合平均で何点取って何点取られているかを見る
  2. 神戸の残り対戦相手も同じように見る
  3. 各試合について、ホームなら少し有利にする
  4. その試合で0点、1点、2点…になる確率を出す
  5. そこから勝ち・引き分け・負けの確率を出す
  6. 引き分けはPKで半々に分ける
  7. 7試合ぶんの勝ち点を全部足し合わせる
  8. 神戸を上回れる確率を数える

このモデルは簡易的なものです。そのため以下は考慮していません。

  • 怪我人、連戦、ACLやルヴァンのターンオーバー
  • 直近フォームの変化
  • PKの得意不得意
  • 名古屋が神戸を抜いても、さらに他クラブも抜かなければいけないこと
  • 得失点差の動的シミュレーション

特に最後は大きくて、順位決定は勝ち点の次に得失点差ですし、現時点で神戸が +12、名古屋が +3 でした。

その時点から得失点差に変化があれば、また確率も変わります。

さて、実際の結果は?

このアプリで計算した結果が以下の通りです。

=== モデル: 残り対戦相手を入れた簡易ポアソン型モデル ===

[設定]

league_avg_goals_per_team_per_match = 1.35

home_advantage = 1.1

pk_win_probability = 0.5

max_goals = 10

[残り試合の期待追加勝点]

名古屋: 10.7569

神戸 : 14.4554

[最終勝点条件の確率]

名古屋が神戸を勝点で上回る確率 : 0.807667%

名古屋が神戸に勝点で同点以上となる確率: 1.427082%

※ このモデルは対戦カードの ホーム / アウェイと各チームの得点失点値にかなり影響されます。

名古屋グランパスが勝ち点で上回る可能性は、0.81%。勝ち点で並ぶ可能性が1.43%です。

かなり厳しい結果になりました。

勝ち点差=残り試合数の法則は、百年構想リーグのような短期決戦ではあまり成り立つものではない、と結論づけられるでしょう。

最後に

厳しい結果が出てしまいましたが、確率は0ではありません。

このモデルは「未来を当てる装置」ではなく、「状況の重さを確率で表す道具」として見るのが大事です。

たとえば 0.8% という数字が出たとしたら、それは

  • 絶対無理という意味ではない
  • でもかなり厳しい
  • 通常ケースでは届きにくい

というニュアンスを数字で言っているだけです。

我々はチームを応援することしかできません。まずは目先の試合を1つずつ勝っていけるように応援しましょう。

起こすことが可能な未来は、奇蹟ではありません。ただの困難に過ぎません。打ち勝ちましょう。

付録:ポアソン分布とは(もうちょっと詳しく)

ポアソン分布は、

「ある時間や場所の中で、たまに起こる出来事が何回起きるか」 を表すための確率の考え方です。

たとえば、

  • 1時間に電話が何回かかってくるか
  • 1日に何件メールが来るか
  • 1試合で何点入るか

のように、回数を扱うときによく使います。

イメージとしては、

  • 平均すると1時間に3回電話が来る
  • でも実際には
    0回のこともある
    2回のこともある
    5回のこともある

この「0回、1回、2回…がどれくらい起こりやすいか」を表すのがポアソン分布です。

大事なのは次の3つです。

  • 扱うのは 回数
  • 基準になるのは 平均で何回起こるか
  • 1回1回の出来事は たまたま独立に起こる と考える

すごく簡単に言うと、

「平均回数がわかっているときに、実際の回数のばらつきを表す分布」

です。

サッカーで言えば、 「このチームは平均1.4点くらい取りそう」 と見積もったときに、

  • 0点の確率
  • 1点の確率
  • 2点の確率
  • 3点の確率

を出すのに使えます。

※余談ですが、同じ考え方はコンビニやスーパーマーケットのレジの台数の適切値やサーバーの性能予測なんかにも使ったりします。

About The Author

グラぽ編集長
大手コンピューターメーカーの人事部で人財育成に携わり、スピンアウト後は動態解析などの測定技術系やWebサイト構築などを主として担当する。またかつての縁で通信会社やWebメディアなどで講師として登壇することもあり。
名古屋グランパスとはJリーグ開幕前のナビスコカップからの縁。サッカーは地元市民リーグ、フットサルは地元チームで25年ほどプレーをしている。

Leave A Reply

*

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Share / Subscribe
Facebook Likes
Posts
Hatena Bookmarks
Evernote
Feedly
Send to LINE