You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Poisson Distribution的足球剩余时间比分概率计算结果异常问询

问题根源与修正方案

核心错误点

  • 误用全场预期进球数:代码直接使用了全场90分钟的预期进球值xgh=2.69和xga=1.12,但比赛只剩20分钟,需要按时间比例计算剩余时段的预期进球,而非直接沿用全场数据。
  • Poisson分布参数逻辑错误:通过loc=hg关联当前比分的做法不符合场景需求。正确逻辑是计算剩余时间内主队/客队再进N球的概率,再结合当前比分推导最终比分的概率。

修正思路

  1. 按剩余时间比例缩放预期进球:剩余时间预期进球 = 全场预期进球 × (剩余分钟数/90)
  2. 用剩余时间的预期进球作为Poisson分布的mu,计算剩余时间内进0、1、...、N球的概率
  3. 最终比分的概率 = 剩余主队进X球的概率 × 剩余客队进Y球的概率(其中X+当前主队比分=最终主队比分,Y+当前客队比分=最终客队比分)

修正后的代码

from scipy.stats import poisson
from itertools import product
import numpy as np
import pandas as pd

# 全场预期进球数
full_xgh = 2.69
full_xga = 1.12

# 时间参数
current_minute = 70
remaining_minute = 90 - current_minute

# 计算剩余时间的预期进球
remaining_xgh = full_xgh * (remaining_minute / 90)
remaining_xga = full_xga * (remaining_minute / 90)

# 当前比分
current_hg, current_ag = 2, 1

# 设定剩余时间最多可能的进球数(覆盖绝大多数场景)
max_add = 5
add_h_goals = range(max_add + 1)
add_a_goals = range(max_add + 1)

# 生成概率矩阵
prob_matrix = []
for h_add in add_h_goals:
    row = []
    for a_add in add_a_goals:
        h_prob = poisson.pmf(mu=remaining_xgh, k=h_add)
        a_prob = poisson.pmf(mu=remaining_xga, k=a_add)
        row.append(h_prob * a_prob)
    prob_matrix.append(row)

# 构建最终比分的DataFrame
final_h = [current_hg + h for h in add_h_goals]
final_a = [current_ag + a for a in add_a_goals]
prob_df = pd.DataFrame(prob_matrix, index=final_h, columns=final_a)

# 输出2-1的概率
print(f"最终比分2-1的概率: {prob_df.loc[2, 1]:.2%}")

修正后结果

运行修正代码后,最终比分2-1的概率约为55%,符合仅剩20分钟、当前比分领先的预期。

内容的提问来源于stack exchange,提问作者luka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:35:21