【12月17日更新决赛预测】用二元泊松模型预测2022年世界杯淘汰赛结果

用二元泊松模型预测2022年世界杯淘汰赛结果

网上有很多文章用双泊松(Double Poisson)模型来预测世界杯比赛结果。但是双泊松模型有一个严重的缺陷,那就是它假设比赛中两队的比分是条件独立的。而我们都知道,在对抗性比赛中,两队的比分是存在关联的,因为两队都会根据场上的比分形势调整策略。比如足球比赛,当主队1:0领先,且距离比赛结束只剩10分钟时,落后的客队会孤注一掷,甘愿冒更大风险去争取平局。但如果主队3:0甚至4:0领先时,领先的主队可能会稍微放松下来,甚至教练会用新人换下主力,此时落后的客队更容易进1球(甚至主队会礼貌性让球)。所以比赛中两队比分是相关的,这种相关性可以通过依赖性参数来描述。

二元泊松(Bivariate Poisson)模型可以度量两队比分的依赖性参数,用二元泊松模型对比赛进行的预测准确率更高,在1/8决赛已经进行的4场比赛中,二元泊松模型预测正确率100%。

需要完整源代码的朋友可以关注私信我,或者评论留言索取。

文章目录

二元泊松模型最大似然法贝叶斯法用模型预测8强用模型预测4强半决赛预测决赛预测冠军预测

二元泊松模型

考虑随机变量

X

r

,

r

{

1

,

2

,

3

}

X_r, r \in \{1,2,3\}

Xr​,r∈{1,2,3}服从独立泊松分布,其参数

λ

r

>

0

\lambda_r > 0

λr​>0,那么随机变量

X

=

X

1

+

X

3

X = X_1+X_3

X=X1​+X3​和

Y

=

Y

2

+

Y

3

Y=Y_2+Y_3

Y=Y2​+Y3​服从二元泊松分布

B

P

(

λ

1

,

λ

2

,

λ

3

)

BP(\lambda_1,\lambda_2,\lambda_3)

BP(λ1​,λ2​,λ3​),其联合概率为:

P

X

,

Y

(

x

,

y

)

=

P

r

(

X

=

x

,

Y

=

y

)

=

exp

{

(

λ

1

+

λ

2

+

λ

3

)

}

λ

1

x

x

!

λ

2

y

y

!

×

k

=

0

m

i

n

(

x

,

y

)

(

x

k

)

(

y

k

)

k

!

(

λ

3

λ

1

λ

2

)

k

\begin{aligned} P_{X,Y}(x,y)&=Pr(X=x,Y=y)\\ &=\exp\{-(\lambda_1+\lambda_2+\lambda_3)\}\frac{\lambda_1^x}{x!}\frac{\lambda_2^y}{y!}\times\sum_{k=0}^{min(x, y)}\begin{pmatrix}x\\k\end{pmatrix}\begin{pmatrix}y\\k\end{pmatrix}k!(\frac{\lambda_3}{\lambda_1\lambda_2})^k \end{aligned}

PX,Y​(x,y)​=Pr(X=x,Y=y)=exp{−(λ1​+λ2​+λ3​)}x!λ1x​​y!λ2y​​×k=0∑min(x,y)​(xk​)(yk​)k!(λ1​λ2​λ3​​)k​

边缘概率上,每个随机变量服从泊松分布,期望

E

(

X

)

=

λ

1

+

λ

3

E(X) = \lambda_1+\lambda_3

E(X)=λ1​+λ3​,

E

(

Y

)

=

λ

2

+

λ

3

E(Y) = \lambda_2+\lambda_3

E(Y)=λ2​+λ3​,协方差

c

o

v

(

X

,

Y

)

=

λ

3

cov(X, Y) = \lambda_3

cov(X,Y)=λ3​。这里

λ

3

\lambda_3

λ3​就是度量两队进球之间相关性的指标。如果

λ

3

=

0

\lambda_3=0

λ3​=0,则两个变量是条件独立的,此时二元泊松分布退化成两个独立泊松分布的乘积,即双泊松模型。

我们用

(

x

n

,

y

n

)

(x_n, y_n)

(xn​,yn​)表示第

n

n

n场比赛主队和客队的比分,那么带比分相关性的二元泊松模型的一般形式为:

X

n

,

Y

n

λ

1

n

,

λ

2

n

,

λ

3

n

BivPoisson

(

λ

1

n

,

λ

2

n

,

λ

3

n

)

log

(

λ

1

n

)

=

μ

+

h

o

m

e

+

a

t

t

h

n

+

d

e

f

a

n

log

(

λ

2

n

)

=

μ

+

a

t

t

a

n

+

d

e

f

h

n

log

(

λ

3

n

)

=

β

0

+

γ

1

β

h

n

h

o

m

e

+

γ

2

β

a

n

a

w

a

y

+

γ

3

β

w

n

\begin{aligned} X_n,Y_n \mid \lambda_{1n},\lambda_{2n},\lambda_{3n}&∼\text{BivPoisson}(\lambda_{1n},\lambda_{2n},\lambda_{3n})\\ \log(\lambda_{1n})&=\mu+home+att_{h_n}+def_{a_n}\\ \log(\lambda_{2n})&=\mu+att_{a_n}+def_{h_n}\\ \log(\lambda_{3n})&=\beta_0+\gamma_1\beta_{h_n}^{home}+\gamma_2\beta_{a_n}^{away}+\gamma_3\beta {w_n} \end{aligned}

Xn​,Yn​∣λ1n​,λ2n​,λ3n​log(λ1n​)log(λ2n​)log(λ3n​)​∼BivPoisson(λ1n​,λ2n​,λ3n​)=μ+home+atthn​​+defan​​=μ+attan​​+defhn​​=β0​+γ1​βhn​home​+γ2​βan​away​+γ3​βwn​​

其中:

λ

1

n

,

λ

2

n

\lambda_{1n}, \lambda_{2n}

λ1n​,λ2n​分别表示主队和客队的进球率;

μ

\mu

μ表示截距项;

h

o

m

e

home

home代表主场效应,众所周知在自己的主场踢球是由很多优势的(更熟悉场地、更适应气候、更热情的球迷…);

a

t

t

t

att_t

attt​ 和

d

e

f

t

def_t

deft​ 分别表示每只球队的进攻能力和防守能力,公式中下标

t

t

t写作

h

n

,

a

n

h_n, a_n

hn​,an​,分别表示主队和客队的第

n

n

n场比赛;

β

h

n

h

o

m

e

\beta_{h_n}^{home}

βhn​home​ 和

β

a

n

a

w

a

y

\beta_{a_n}^{away}

βan​away​ 分别代表主队和客队的参数;

w

n

w_n

wn​是第

n

n

n场比赛的协方差向量,用于建模协方差项;

β

\beta

β 是对应的回归系数向量;

参数

γ

1

,

γ

2

,

γ

3

\gamma_1, \gamma_2, \gamma_3

γ1​,γ2​,γ3​是取值为0或1的二进制指示符,可激活线性预测的不同来源。因此,当

γ

1

=

γ

2

=

γ

3

=

0

\gamma_1=\gamma_2=\gamma_3=0

γ1​=γ2​=γ3​=0时,我们得到常数协方差;而当

(

γ

1

,

γ

2

,

γ

3

)

=

(

1

,

1

,

0

)

(\gamma_1, \gamma_2,\gamma_3)=(1,1,0)

(γ1​,γ2​,γ3​)=(1,1,0)时,我们假设协方差仅取决于团队的参数,跟比赛协方差无关。

为了实现模型的可识别性,攻击/防御参数都是零和的:

t

=

1

T

a

t

t

t

=

0

,

t

=

1

T

d

e

f

t

=

0

\sum_{t=1}^Tatt_t=0, \qquad \sum_{t=1}^Tdef_t=0

t=1∑T​attt​=0,t=1∑T​deft​=0

这条约束大量出现在足球文献中,即假设第

T

T

T只球队的能力等于其他球队能力和的负值,即能力的零和性。

a

t

t

T

=

t

=

1

T

1

a

t

t

t

,

d

e

f

T

=

t

=

1

T

1

d

e

f

t

att_T = -\sum_{t=1}^{T-1}att_t, \qquad def_T = -\sum_{t=1}^{T-1}def_t

attT​=−t=1∑T−1​attt​,defT​=−t=1∑T−1​deft​

有了上面的理论基础,我们就可以构造并训练我们的模型了。

最大似然法

给定参数向量

θ

=

(

{

a

t

t

t

,

d

e

f

t

,

t

=

1

,

,

T

}

,

μ

,

h

o

m

e

,

β

h

n

h

o

m

e

,

β

a

n

a

w

a

y

,

β

0

,

β

)

\theta = (\{att_t, def_t, t=1,\dots, T\}, \mu, home, \beta_{h_n}^{home}, \beta_{a_n}^{away}, \beta_0, \beta)

θ=({attt​,deft​,t=1,…,T},μ,home,βhn​home​,βan​away​,β0​,β) ,二元泊松模型的似然函数为:

L

(

θ

)

=

n

=

1

N

exp

{

(

λ

1

n

+

λ

2

n

+

λ

3

n

)

}

λ

1

n

x

n

x

n

!

λ

2

n

y

n

y

n

!

×

k

=

0

m

i

n

(

x

n

,

y

n

)

(

x

n

k

)

(

y

n

k

)

k

!

(

λ

3

n

λ

1

n

λ

2

n

)

k

L(\theta) = \prod_{n=1}^N\exp\{-(\lambda_{1n}+\lambda_{2n}+\lambda_{3n})\}\frac{\lambda_{1n}^{x_n}}{x_n!}\frac{\lambda_{2n}^{y_n}}{y_n!}\times\sum_{k=0}^{min(x_n, y_n)}\begin{pmatrix}x_n\\k\end{pmatrix}\begin{pmatrix}y_n\\k\end{pmatrix}k!(\frac{\lambda_{3n}}{\lambda_{1n}\lambda_{2n}})^k

L(θ)=n=1∏N​exp{−(λ1n​+λ2n​+λ3n​)}xn​!λ1nxn​​​yn​!λ2nyn​​​×k=0∑min(xn​,yn​)​(xn​k​)(yn​k​)k!(λ1n​λ2n​λ3n​​)k

最大似然参数估计只要找到最大似然估计函数

θ

^

\hat\theta

θ^ 即可:

θ

^

=

a

r

g

m

a

x

θ

Θ

L

(

θ

)

\hat\theta = \underset{\theta \in \Theta} {argmax} L(\theta)

θ^=θ∈Θargmax​L(θ)

这个过程可以用求导解决:

l

(

θ

)

=

0

l'(\theta)=0

l′(θ)=0

Wald检验+偏置信区间也可以构造最大似然估计

θ

^

\hat\theta

θ^,95%的Wald类型区间满足:

θ

^

±

1.96

s

e

(

θ

^

)

\hat \theta ±1.96 se(\hat \theta)

θ^±1.96se(θ^)

最大似然法仅适用于静态模型,因为静态模型复杂度不高。当使用动态模型时,随着参数空间的增长,最大似然法的计算量会非常大,且输出结果也不可靠。所以我们会更关注另一种方法——贝叶斯法。

贝叶斯法

贝叶斯分析的目标是从联合后验分布

π

(

θ

D

)

\pi(\theta \mid D)

π(θ∣D)中得出推断结论,这里

D

=

(

x

n

,

y

n

)

n

=

1

,

,

N

D=(x_n,y_n) _{n=1,…,N}

D=(xn​,yn​)n=1,…,N​ 表示

N

N

N场比赛的观测数据集合。联合后验分布满足:

π

(

θ

D

)

=

p

(

θ

D

)

π

(

θ

)

p

(

D

)

p

(

D

θ

)

π

(

θ

)

\pi(\theta \mid D) = \frac{p(\theta \mid D)\pi(\theta)}{p(D)} \propto p(D \mid \theta)\pi(\theta)

π(θ∣D)=p(D)p(θ∣D)π(θ)​∝p(D∣θ)π(θ)

其中

p

(

D

θ

)

p(D \mid \theta)

p(D∣θ) 是模型采样分布(与似然函数成比例),

π

(

θ

)

\pi(\theta)

π(θ) 是

θ

\theta

θ 的联合先验分布。

p

(

D

)

=

Θ

p

(

D

θ

)

π

(

θ

)

d

θ

p(D) = \int_\Theta p(D \mid \theta)\pi(\theta)d\theta

p(D)=∫Θ​p(D∣θ)π(θ)dθ 是不依赖于

θ

\theta

θ的边际似然。

在大多数情况下,

π

(

θ

D

)

\pi(\theta \mid D)

π(θ∣D)不具有闭合形式,因此,我们需要通过模拟对其进行近似。处理这种情况的最主流的方法是马尔可夫链蒙特卡罗模拟。

就推断结论而言,我们通常对单一参数的边际后验分布(后验均值、中值、可信区间等)感兴趣。我们可以将上述二元泊松模型的后验分布公式写成:

π

(

θ

D

)

π

(

θ

)

n

=

1

N

BivPoisson

(

λ

1

n

,

λ

2

n

,

λ

3

n

)

\pi(\theta \mid D) \propto \pi(\theta) \prod_{n=1}^N \text{BivPoisson}(\lambda_{1n},\lambda_{2n},\lambda_{3n})

π(θ∣D)∝π(θ)n=1∏N​BivPoisson(λ1n​,λ2n​,λ3n​)

其中

π

(

θ

)

=

π

(

a

t

t

)

π

(

d

e

f

)

π

(

μ

)

π

(

h

o

m

e

)

π

(

β

h

n

h

o

m

e

)

π

(

β

a

n

a

w

a

y

)

π

(

β

0

)

π

(

β

)

\pi(\theta)=\pi(att)\pi(def)\pi(\mu)\pi(home)\pi(\beta_{h_n}^{home})\pi(\beta_{a_n}^{away})\pi(\beta_0)\pi(\beta)

π(θ)=π(att)π(def)π(μ)π(home)π(βhn​home​)π(βan​away​)π(β0​)π(β) 是先验独立参数分量假设下的联合最优分布。

标准方法是将一些信息量较弱的先验分布分配给团队的某些特定能力。这些参数在两个常见(先验)分布中可以交换:

att

t

N

(

μ

a

t

t

,

σ

a

t

t

)

def

t

N

(

μ

d

e

f

,

σ

d

e

f

)

,

t

=

1

,

,

T

\begin{aligned} &\text{att}_t∼N(\mu_{att},\sigma_{att})\\ &\text{def}_t∼N(\mu_{def},\sigma_{def}), t= 1,\dots,T \end{aligned}

​attt​∼N(μatt​,σatt​)deft​∼N(μdef​,σdef​),t=1,…,T​

这里面

m

u

a

t

t

,

σ

a

t

t

,

μ

d

e

f

,

σ

d

e

f

mu_{att},\sigma_{att}, \mu_{def},\sigma_{def}

muatt​,σatt​,μdef​,σdef​ 都是超参,通过向其余参数分配一些信息量较弱的先验来完成模型公式化。

用模型预测8强

我用2018-2022年期间的所有国际比赛,以及2022年世界杯小组赛的数据,通过Hamilton Monte Carlo采样、2000次迭代训练了一个模型。其思路是提供一个动态预测场景:在每个比赛日结束时,重新调整模型以预测剩余的比赛。对2022年世界杯淘汰赛第一轮的16场比赛的预测,每只球队的动态先验会集中关注参赛球队小组赛3场比赛的进攻防守数据,前三场比赛将作为一个单独独立的时间段,而不是作为三个不同的时间段来考虑。这里有一个因素需要考虑,就是小组赛的最后一场比赛中,一些球队已经晋级,他们可能没有派主力阵容或没有全力去踢,所以对这样的球队(比如葡萄牙),在先验数据上会进行一些微调。

用上述模型的后验预测分布的后验匹配概率见下表:

强队弱队胜平负最可能结果荷兰美国0.4710.2980.2311-0 (0.164)阿根廷澳大利亚0.6650.2460.0891-0 (0.208)法国波兰0.6200.2350.1451-0 (0.145)英格兰塞内加尔0.6320.2350.1321-0 (0.162)日本克罗地亚0.3630.2880.3491-1 (0.122)巴西韩国0.7400.1900.0701-0 (0.171)西班牙摩洛哥0.5620.2700.1681-0 (0.173)葡萄牙瑞士0.4860.2730.2411-0 (0.141)

上表中,胜/负针对的都是强队,最可能结果后面的括号表示后验概率。

更加直观可视化的结果见下图:

上图中越深的颜色表示越可能出现的结果,x轴是强队,y轴是弱队。

从预测结果看,目前已经结束的4场1/8决赛全部预测正确:

比赛预测实际结果荷兰-美国✅荷兰胜 (0.471)3:1 荷兰胜阿根廷-澳大利亚✅阿根廷胜 (0.665)2:1 阿根廷胜法国-波兰✅法国胜 (0.620)3:1 法国胜英格兰-塞内加尔✅英格兰胜 (0.632)3:0 英格兰胜

12月6日更新

昨晚今晨进行的日本-克罗地亚和巴西-韩国的两场八分之决赛中,日本-克罗地亚120分钟踢平,点球大战中日本队2:4负于克罗地亚。这个结果与模型的预测相同。模型预测120分钟的最可能结果是1-1战平。另一场巴西-韩国毫无悬念,巴西4:1战胜韩国,这与模型预测巴西有74%的概率获胜一致。

比赛预测实际结果日本-克罗地亚✅120分钟战平 日本胜(0.363) - 平局(0.288 ) - 克罗地亚胜(0.349)最可能结果:1-1(0.122)2:4 克罗地亚胜(点球)巴西-韩国✅巴西胜 (0.740)4:1 巴西胜

12月7日更新

12月7日的比赛,模型预测西班牙有56.2%的胜率,结果120分钟踢平,点球西班牙0:3输给摩洛哥,算是爆了个小冷门。葡萄牙的比赛结果跟预期一致,葡萄牙胜。只是没有料到会是6:1的大比分。

比赛预测实际结果西班牙-摩洛哥❌西班牙(0.562)0:3 摩洛哥胜(点球)葡萄牙-瑞士✅葡萄牙胜 (0.486)6:1 葡萄牙胜

总结

至此,1/8决赛全部完成,模型预测仅错1场(西班牙-摩洛哥),整体准确率还是比较理想的。下面我会紧锣密鼓给出1/4决赛的预测。

用模型预测4强

下面是对1/4决赛的预测(2022-12-09 17:05 更新)

强队弱队胜平负最可能结果巴西克罗地亚0.6760.2200.1041-0 (0.160)阿根廷荷兰0.4140.2640.3220-0 (0.172)葡萄牙摩洛哥0.5360.1910.2731-0 (0.160)英格兰法国0.3610.2920.3480-0 (0.126)

12月10日更新

比赛预测实际结果巴西-克罗地亚❌巴西胜(0.676)2:4 克罗地亚胜(点球)阿根廷-荷兰✅120分钟战平 阿根廷胜(0.414) - 平局(0.264) - 荷兰胜(0.322 )最可能结果:0-0(0.172)4:3 阿根廷胜(点球)

12月11日更新

比赛预测实际结果葡萄牙-摩洛哥❌葡萄牙胜(0.536 )0:1 摩洛哥胜英格兰-法国❌120分钟战平 英格兰胜(0.361) - 平局(0.292) - 法国胜(0.348)最可能结果:0-0 (0.126)1:2 法国胜

总结

至此1/4决赛全部结束,4场比赛只预测对1场,摩洛哥成为最大的黑马,葡萄牙被摩洛哥淘汰是所有人都始料不及的,然而,这就是足球!

半决赛预测

下面是对半决赛的预测(2022-12-13 23:27 更新)

强队弱队胜平负最可能结果阿根廷克罗地亚0.5800.2630.1571-0 (0.170)法国摩洛哥0.5030.3020.1951-0 (0.180)

12月14日更新

比赛预测实际结果阿根廷-克罗地亚✅阿根廷胜 (0.580)3:0 阿根廷胜

12月15日更新

比赛预测实际结果法国-摩洛哥✅法国胜 (0.503)2:0 法国胜

总结

至此半决赛已经结束,两场比赛全部预测正确!

决赛预测

下面是对决赛的预测(2022-12-17 21:27 更新)

强队弱队胜平负最可能结果阿根廷法国0.4170.3210.2620-0 (0.171)克罗地亚摩洛哥0.3450.3100.3450-0 (0.153)

冠军预测

比赛进行至此,我们可以计算入围半决赛的球队的夺冠概率:

球队夺冠概率阿根廷45%法国35%克罗地亚12%摩洛哥8%

\ast \ast \ast

∗∗∗

需要完整源代码的朋友可以关注私信我,或者评论留言索取。