top of page

統計学で、2022 FIFAワールドカップの優勝国を予想する。優勝国はエムバペ率いるフランス!?



2022年のW杯カタール大会もノックアウトステージに入り、大いに盛り上がってきました。


冒頭の画像は、重回帰分析を利用して予想したトーナメントの結果予測です。


優勝国はフランス。

決勝戦は、アルゼンチン × フランス という予測結果となっています。


では、どのようなデータを利用し、どんな分析をしたのかを記載していきます。



目次

1.データを収集

2.説明変数と目的変数を設定

3.友達と優勝国を予想して賭けをする



1.データを収集


まず、今大会のグループステージの結果をsoccer.D.Bさんのサイトより引用させていただきます。



W杯
.csv
Download CSV • 1KB

ここまでのコード👇

import pandas as pd
data = pd.read_csv("W杯.csv", encoding="shift-jis")
data



カタール大会グループステージのみのデータを使って分析を行う理由は、純粋に今大会の成績が、各国の調子や勢いを一番に反映していると考えたからです。


このデータを利用して、重回帰分析を行っていきます。





2.説明変数と目的変数を設定


説明変数は以下です。各国のグループステージの成績を利用します。

  • 総得点数(グループステージの総得点数)

  • 総失点数(グループステージの総失点数)

  • シュート90分平均(一試合に放ったシュート数)

  • 枠内シュート90分平均(一試合に放った、ゴールポスト内へのシュート数)

  • 得点90分平均(一試合に獲得した点数)


目的変数は以下です。各国のグループステージの成績を利用します。

  • 勝利数(グループステージの勝利数)



これらの条件で重回帰分析を実行した結果が下図です。



あまりにもデータ数が少ないため(n=16)、決定係数やp値、マルチコは無視して、強引に回帰係数を利用します。


ここまでのコード👇

#目的変数名の指定
y_name = "勝利数"

#従属変数(使用列)の選択
X_name = ["総得点数","総失点数","シュート90分平均","枠内シュート90分平均", "得点90分平均"]
#X_name = "temperature"

#Xとyに分離
X = data[X_name]
y = data[y_name]

#回帰分析
import statsmodels.api as sm

model = sm.OLS(y, sm.add_constant(X))
result = model.fit(disp=0)
print(result.summary())



回帰式に当てはめた結果を、【予測】としてデータフレームに格納します。

【予測】の数値は勝利数ですので、数値が高いほど強いチームということになります。

かなり強引な目的変数ですが、他の手法や変数を探す時間が無かったので、強行します。


ここまでのコード👇

data["予測"] = result.predict(sm.add_constant(data[0:16][X_name]))
data.sort_values(by="予測", ascending=False)




予測結果だけを表示したものが下図です。






この結果をトーナメント表に当てはめると、冒頭に記載したトーナメントの予想結果となります。


12/4の未明に行われた二試合は、見事勝利国が的中しました!!

オランダ VS アメリカ (オランダ勝利)

アルゼンチン VS オーストラリア (アルゼンチン勝利)

この予測値は意外とイケルかも知れない。と思わせてくれます。

但し、大番狂わせの予想もしています。


日本がクロアチアに勝利するまでは、母国なので構いませんが、韓国がブラジルに勝利しています。。。

選手層の厚さや実績から言っても、かなり大胆な予想結果となっています。


更に、セネガルがイングランドに勝利する予想となっています。。。


中々斬新な予測ですが、重回帰分析の結果は以上です。







3.友達と優勝国を予想して賭けをする


最後に、友達と賭けをして楽しむエクセルシートを作ってみます。

まず、ベスト16や準々決勝といったステージ毎に、勝利国を的中させた場合のポイントを決めます。


以下の例では、ベスト16の勝利国を的中させた場合、10ポイント。

準々決勝の勝利国を的中させた場合、20ポイント。

といった具合です。




はじめに、参加者一人一人に同額の賭け金を決めます。

下図の例では、参加者ひとりあたり¥10,000-。

4人参加すれば、プールされた賭け金の合計は¥40,000-。


そして、試合終了する度に、獲得ポイントを黄色いセルに入力していきます。

一番下のセルが最終利益となります。

Aさんの場合、¥10,000-ベットして、¥3,200-しか戻ってきませんので△¥6,800-の損失になります。



賭けシート
.xlsx
Download XLSX • 167KB



以上です。

せっかくの四年に一度のワールドカップなので、統計学やデータ分析を使って見ると、いつもと違う視点から大会を見れて面白いかもしれません。

頑張れ!日本代表(^^)/

では。






※因みに日本では、現行の刑法では、賭博行為は刑法第185条・第186条で禁止されています。上記のシートを使って遊ぶ際には、常識の範囲内で友人同士の嗜み程度で遊ぶようにした方が良いと思います('ω')ノ

閲覧数:48回0件のコメント
bottom of page