先日、サッカーのカタールW杯に出場する日本代表のメンバーが発表され、いよいよ開催の気運が高まってきた。ということでW杯に絡めて何かやりたいなと思い、今大会でどこが優勝しそうかを予想するシミュレーションをやってみた。予想とは言っても真面目にチーム毎の戦力分析を行うとかいったものではなく、単に各チームの勝利確率を計算してそれだけを根拠に大会のレギュレーションに沿って対戦を進めていき、どこが優勝しそうかをシミュレーションしてみるというお遊びのものです。
シミュレーションの肝となる勝利確率の計算はイロレーティング(Elo Rating)の値をベースにした。
イロレーティングから勝利確率を計算する
イロレーティングとは
対戦型の競技において相対評価によって双方の実力を表すために使われる指標(レート)である。元々はチェスの強さを評価するために考案されたものだそうだ。
ある競技において参加プレイヤーの平均のレートを主に1500と定め、その値の大小により実力を評価することができる。試合が行われる度に2プレイヤー(チーム)のレート差と結果に応じて双方のレートが更新される。
サッカー競技におけるイロレーティングは、各国の国際Aマッチの結果を用いてその試合の重み(最高値がW杯決勝の60、最低値が親善試合の20)、ホームチームのアドバンテージ、得失点差を考慮して計算されている。いわゆる強豪国であればレートは2000を超えているところが多い。
各国の最新のレートは、「World Football Elo Ratings」というサービスで確認することができる。
なお、サッカーの世界ランキングとしてFIFAランキングがあるが、2018年に計算方法が改訂されイロレーティングをベースに計算されるようになった。これにより、南米と欧州びいきの不公平な指標でしかなかった「大陸連盟間の強さ」は考慮されなくなった。
勝利確率の計算
対戦する2チームのレート差から勝利確率を計算することができる。
チームA、Bの勝利確率を$P_A$, $P_B$、レートを$R_A$, $R_B$とすると、
$$ P_A = \frac{1}{10^{\frac{R_B - R_A}{400}}+1} $$
で計算される。
チームBの勝利確率は余事象の確率から$P_B = 1 - P_A$である。
World Football Elo Ratings - About
引き分けについて
イロレーティングの対象は引き分けのない競技であることを前提としており、サッカーなどのように引き分けがあり得る競技の場合、引き分けは0.5勝0.5敗という扱いでレートが計算されている。このため、対戦両チームのレートから引き分けの確率だけを逆算して求めるといったことができない。したがって、なんらかの方法で引き分けの確率を別に求め(後述)、あらかじめレート差から計算しておいた両チームの勝利確率に対して引き分けを考慮した補正を行う必要がある。
引き分け確率を$P_d$として、$P_d$を考慮した時のチームA、Bの勝利確率$P_A'$, $P_B'$を下記のように計算した。(下の図は$P_A$ = 65%, $P_B$ = 35%, $P_d$ = 20%とした場合の例)
$$ \begin{align} P_A'& = P_A - \frac{P_d}{2}\\ P_B'& = P_B - \frac{P_d}{2} = 1-P_A - \frac{P_d}{2} \end{align} $$
なお、「$\frac{P_d}{2}$ ≧ 弱い方の勝利確率」となってしまう場合、「$P_d$ = 弱い方の勝利確率」とした。
シミュレーションの条件
実際のW杯における対戦の組み合わせに沿って、対戦国同士のレート差から算出した勝利確率・引き分け確率を用いて抽選を行い結果を決定していく。
本物の試合であれば実力差以外にも対戦の順序や選手の士気、コンディションなどが対戦結果に影響してくると思われるが、このシミュレーションでは対戦結果を左右するものはレート差から計算される確率だけである。また、他チームの対戦結果などの外的要因の影響は一切考慮しない独立なものとする。
また、途中の対戦結果を受けて各チームのレートが変動することは考えず、シミュレーション開始時点のレートを最後まで使う。
グループリーグの考え方
- 勝利確率に基づき勝敗を決定する
- 引き分けを考慮する
- 勝:3、分:1、負:0の勝ち点を計上していき各グループの成績上位2チームが決勝トーナメントへ進む
実際のレギュレーションにおいて、グループリーグ内の順位を決定する項目の優先度は下記の通りである。
1. 勝点
2. 得失点差
3. 総得点
4. 直接対決の結果
5. フェアプレーポイント・反則ポイント
6. くじ引き
しかし、このシミュレーションはレート差しか見ておらず、チームごとの得失点などは考慮できないので下記の通りにしている。
1. 勝点
2. 直接対決の結果
3. くじ引き
なお、同グループ内で勝点が並ぶパターンは以下の3通りが考えられる。
(1) 2チームが同じ勝点で並ぶ
➡︎ 直接対決の結果で判断し、引き分けだったらくじ引き
(2) 3チームが同じ勝点で並ぶ
➡︎ 残りの1チームは全勝or全分けor全敗になっており、当該3チーム同士の直接対決の結果は全分けor三すくみ状態なのでくじ引き
(3) 全チーム同じ勝点になる
➡︎ リーグ戦6試合が全て引き分けになるか全チーム1勝1分1敗であり、直接対決の結果が同じなのでくじ引き
トーナメント戦の考え方
- 勝率確率に基づき勝敗を決定する
- 引き分けを考慮する
- 引き分けの場合は勝敗50%ずつの抽選(PK戦のつもり)で決着を付ける
A〜Hの各グループリーグを1位、2位通過した16チームをトーナメントに割り振る方法も実際のレギュレーションに従う。
引き分け確率の求め方
前述の通りイロレーティングでは引き分けの確率を直接算出することができないので、なんらかの方法で別途求めなければならない。
そこで、実際に過去に行われたW杯10大会分(1982年スペイン大会〜2018年ロシア大会)のデータを利用し、対戦チームのレート差と引き分けの試合数の傾向から引き分け確率を求める式を推定した。幸いWorld Football Elo Ratingsには現在のレートだけでなく、過去に世界中で行われた国際親善試合や公式戦の結果も膨大に記録されているので非常にありがたい。
まず、過去10大会分の全試合のレート差の絶対値を幅50ずつの階級に分け、各階級毎の引き分けの割合(各階級の引き分けの試合数 / 各階級の総試合数)を算出した。さらに、各階級の中央値と引き分けの割合の分布から最小二乗法により近似直線の式を求め、レート差$\Delta R$から引き分け確率$R_d$を計算するための式とした。
$$ R_d = -0.00045\left| \Delta R \right| + 0.316 $$
なお、$450 < \left| \Delta R \right| \leq 500$の階級の引き分けの割合が飛び上がってしまっているが、この階級に含まれる試合数は他と比べて少ないことを考慮して近似式を計算する際には除外した。
「レート差が小さい、つまり力が拮抗しているほど引き分けになりやすい」という感覚的にもなんとなく良さそうだ。
ちなみに、この式は単純な一次関数なのでレート差が702以上の場合は引き分け確率が0以下になってしまうが、W杯出場国同士ではまずあり得ないレート差だと思われるのでとりあえずはヨシ。
シミュレーションの実行
各グループリーグの対戦〜トーナメントの決勝戦までを1回の試行として、全部で1000回繰り返した結果を集計する。
大会のシミュレーションを行うコードはPython 3.10.5で作成・実行した。
ソースコードは下記のGithubで公開している。
world_cup_winner_simulator
シミュレーションに用いた参加32ヶ国のレートの一覧は下記になる。括弧内はイロレーティングでの順位 である。※2022年11月1日時点
A | 🇶🇦カタール | 1664(50位) |
🇪🇨エクアドル | 1840(18位) | |
🇸🇳セネガル | 1687(43位) | |
🇳🇱オランダ | 2040(4位) | |
B | 🏴イングランド | 1920(14位) |
🇮🇷イラン | 1817(21位) | |
🇺🇸アメリカ | 1798(24位) | |
🏴ウェールズ | 1790(26位) | |
C | 🇦🇷アルゼンチン | 2141(2位) |
🇸🇦サウジアラビア | 1632(56位) | |
🇲🇽メキシコ | 1813(22位) | |
🇵🇱ポーランド | 1809(23位) | |
D | 🇫🇷フランス | 2005(6位) |
🇦🇺オーストラリア | 1719(39位) | |
🇩🇰デンマーク | 1971(9位) | |
🇹🇳チュニジア | 1687(43位) |
E | 🇪🇸スペイン | 2045(3位) |
🇨🇷コスタリカ | 1736(35位) | |
🇩🇪ドイツ | 1960(10位) | |
🇯🇵日本 | 1798(24位) | |
F | 🇧🇪ベルギー | 2025(5位) |
🇨🇦カナダ | 1770(29位) | |
🇲🇦モロッコ | 1753(32位) | |
🇭🇷クロアチア | 1922(13位) | |
G | 🇧🇷ブラジル | 2169(1位) |
🇷🇸セルビア | 1892(16位) | |
🇨🇭スイス | 1929(12位) | |
🇨🇲カメルーン | 1613(61位) | |
H | 🇵🇹ポルトガル | 2004(7位) |
🇬🇭ガーナ | 1540(74位) | |
🇺🇾ウルグアイ | 1936(11位) | |
🇰🇷韓国 | 1783(28位) |
結果
ローカルPC上でカタールW杯を1000回開催するのに要した時間は13.24秒だった。
なお、今回のシミュレーションで試行1回当たりの引き分け試合数の平均は14.7試合だった。実際の過去10大会における引き分け試合数の平均が1大会当たり14.6試合であることを考えるとかなり良い線を行っているのではないだろうか。
結果の集計方法
各国毎に最終到達ランクが「グループリーグ敗退、ベスト16、ベスト8、ベスト4、準優勝、優勝」になった回数をそれぞれカウントして度数分布で表す。
さらに、「グループリーグ敗退→0ポイント、ベスト16→1ポイント、ベスト8→2ポイント、ベスト4→3ポイント、準優勝→4ポイント、優勝→5ポイント」としてポイントの期待値(ポイント* 各ランクの到達回数 / 全試行回数)を計算する。期待値が5に近いほど今大会で好成績を残す可能性が高く、(期待値の意味から言えば厳密には異なるが)優勝に近い国であるといえる。
結果発表
では期待値の昇順で32位から発表していこう。
◆ 第32位 ◆
リーグ 敗退 | 972 |
ベスト16 | 26 |
ベスト8 | 2 |
ベスト4 | 0 |
準優勝 | 0 |
優勝 | 0 |
◆ 第31位 ◆
リーグ 敗退 | 966 |
ベスト16 | 30 |
ベスト8 | 3 |
ベスト4 | 1 |
準優勝 | 0 |
優勝 | 0 |
◆ 第30位 ◆
リーグ 敗退 | 895 |
ベスト16 | 93 |
ベスト8 | 10 |
ベスト4 | 2 |
準優勝 | 0 |
優勝 | 0 |
◆ 第29位 ◆
リーグ 敗退 | 880 |
ベスト16 | 100 |
ベスト8 | 16 |
ベスト4 | 4 |
準優勝 | 0 |
優勝 | 0 |
◆ 第28位 ◆
リーグ 敗退 | 858 |
ベスト16 | 124 |
ベスト8 | 15 |
ベスト4 | 3 |
準優勝 | 0 |
優勝 | 0 |
◆ 第27位 ◆
リーグ 敗退 | 860 |
ベスト16 | 108 |
ベスト8 | 22 |
ベスト4 | 8 |
準優勝 | 2 |
優勝 | 0 |
◆ 第26位 ◆
リーグ 敗退 | 834 |
ベスト16 | 123 |
ベスト8 | 34 |
ベスト4 | 9 |
準優勝 | 0 |
優勝 | 0 |
◆ 第25位 ◆
リーグ 敗退 | 818 |
ベスト16 | 142 |
ベスト8 | 33 |
ベスト4 | 6 |
準優勝 | 1 |
優勝 | 0 |
◆ 第24位 ◆
リーグ 敗退 | 757 |
ベスト16 | 179 |
ベスト8 | 55 |
ベスト4 | 5 |
準優勝 | 3 |
優勝 | 1 |
◆ 第23位 ◆
リーグ 敗退 | 765 |
ベスト16 | 156 |
ベスト8 | 67 |
ベスト4 | 10 |
準優勝 | 1 |
優勝 | 1 |
◆ 第22位 ◆
リーグ 敗退 | 714 |
ベスト16 | 236 |
ベスト8 | 36 |
ベスト4 | 11 |
準優勝 | 3 |
優勝 | 0 |
◆ 第21位 ◆
リーグ 敗退 | 731 |
ベスト16 | 197 |
ベスト8 | 59 |
ベスト4 | 13 |
準優勝 | 0 |
優勝 | 0 |
◆ 第20位 ◆
リーグ 敗退 | 631 |
ベスト16 | 247 |
ベスト8 | 91 |
ベスト4 | 23 |
準優勝 | 6 |
優勝 | 2 |
◆ 第19位 ◆
リーグ 敗退 | 591 |
ベスト16 | 277 |
ベスト8 | 98 |
ベスト4 | 29 |
準優勝 | 5 |
優勝 | 0 |
◆ 第18位 ◆
リーグ 敗退 | 566 |
ベスト16 | 305 |
ベスト8 | 72 |
ベスト4 | 43 |
準優勝 | 12 |
優勝 | 2 |
◆ 第17位 ◆
リーグ 敗退 | 539 |
ベスト16 | 300 |
ベスト8 | 121 |
ベスト4 | 33 |
準優勝 | 6 |
優勝 | 1 |
◆ 第16位 ◆
リーグ 敗退 | 532 |
ベスト16 | 334 |
ベスト8 | 81 |
ベスト4 | 41 |
準優勝 | 8 |
優勝 | 4 |
◆ 第15位 ◆
リーグ 敗退 | 570 |
ベスト16 | 246 |
ベスト8 | 108 |
ベスト4 | 44 |
準優勝 | 23 |
優勝 | 9 |
◆ 第14位 ◆
リーグ 敗退 | 420 |
ベスト16 | 315 |
ベスト8 | 151 |
ベスト4 | 61 |
準優勝 | 37 |
優勝 | 16 |
◆ 第13位 ◆
リーグ 敗退 | 356 |
ベスト16 | 306 |
ベスト8 | 240 |
ベスト4 | 60 |
準優勝 | 30 |
優勝 | 8 |
◆ 第12位 ◆
リーグ 敗退 | 302 |
ベスト16 | 382 |
ベスト8 | 207 |
ベスト4 | 64 |
準優勝 | 32 |
優勝 | 13 |
◆ 第11位 ◆
リーグ 敗退 | 304 |
ベスト16 | 359 |
ベスト8 | 208 |
ベスト4 | 67 |
準優勝 | 42 |
優勝 | 20 |
◆ 第10位 ◆
リーグ 敗退 | 197 |
ベスト16 | 512 |
ベスト8 | 163 |
ベスト4 | 71 |
準優勝 | 43 |
優勝 | 14 |
◆ 第9位 ◆
リーグ 敗退 | 239 |
ベスト16 | 352 |
ベスト8 | 236 |
ベスト4 | 104 |
準優勝 | 46 |
優勝 | 23 |
◆ 第8位 ◆
リーグ 敗退 | 146 |
ベスト16 | 411 |
ベスト8 | 182 |
ベスト4 | 150 |
準優勝 | 76 |
優勝 | 35 |
◆ 第7位 ◆
リーグ 敗退 | 117 |
ベスト16 | 453 |
ベスト8 | 198 |
ベスト4 | 110 |
準優勝 | 65 |
優勝 | 57 |
◆ 第6位 ◆
リーグ 敗退 | 123 |
ベスト16 | 338 |
ベスト8 | 240 |
ベスト4 | 131 |
準優勝 | 105 |
優勝 | 63 |
◆ 第5位 ◆
リーグ 敗退 | 101 |
ベスト16 | 393 |
ベスト8 | 181 |
ベスト4 | 161 |
準優勝 | 98 |
優勝 | 66 |
◆ 第4位 ◆
リーグ 敗退 | 105 |
ベスト16 | 295 |
ベスト8 | 313 |
ベスト4 | 132 |
準優勝 | 74 |
優勝 | 81 |
◆ 第3位 ◆
リーグ 敗退 | 45 |
ベスト16 | 239 |
ベスト8 | 390 |
ベスト4 | 166 |
準優勝 | 73 |
優勝 | 87 |
◆ 第2位 ◆
リーグ 敗退 | 22 |
ベスト16 | 240 |
ベスト8 | 166 |
ベスト4 | 245 |
準優勝 | 97 |
優勝 | 230 |
◆ 第1位 ◆
リーグ 敗退 | 44 |
ベスト16 | 182 |
ベスト8 | 202 |
ベスト4 | 193 |
準優勝 | 112 |
優勝 | 267 |
ということで、優勝に最も近い国はブラジルでした!!
🎉おめでとうございます🥳
おわりに
成績の期待値で並べてみた結果、1〜8位までの上位集団については多少の前後はあるものの概ねイロレーティング 通りの並び順になった。期待値が飛び抜けている1位ブラジル、2位アルゼンチンには是非とも20年ぶりに欧州以外の国として優勝を掴み取ってもらいたい。
ところで、我が日本代表の期待値は残念ながら0.354(グループリーグ 敗退濃厚)という結果となり、改めて厳しいグループであることを認識させられてしまった…。
しかし、これを言ったらこの記事の意味を根底から覆してしまうようなものだが、数字だけで試合結果が決まってしまうのであればスポーツ観戦なんて面白くもなんともなくなってしまう。スポーツくじだって成立しないでしょう。
なので、日本代表には是非ともレーティングの順位や前評判を払拭するような大番狂わせを期待したい。
12/20追記
開幕からあっという間に日程が進んでいき、遂にアルゼンチンが36年ぶりの優勝に輝いてW杯の幕が閉じた。シミュレーションで優勝と予想したブラジルはベスト8で終わってしまったものの、見事に20年ぶりに南米勢がW杯を手にすることができました!!!
また、大変厳しいだろうという予想に反して日本がドイツとスペインに逆転勝ちを収めグループを1位通過した快進撃を筆頭に、確率の数字だけでは到底論じることができないような大波乱や熱戦が多く、夢のような1ヶ月でした。