本文目录导读:

先定义“界外球进攻威胁次数”
建议从三个层级定义,按你手头数据条件选:
基础版(仅需事件数据)
界外球进攻威胁次数 = 掷界外球后 N 秒内(如10秒)本方在进攻三区完成射门或形成射门的机会次数。
- 统计对象:本方掷界外球
- 时间窗口:掷出后 10 秒内
- 威胁事件:射门、射门前最后一传、进入禁区传球
进阶版(需坐标数据)
掷界外球后 N 秒内,球进入对方禁区或形成 xG ≥ 0.05 的射门机会,计 1 次威胁。
高精度版(需跟踪数据)
用控球序列(possession sequence)判定:界外球开始的进攻序列是否以射门/xG 阈值结束,且序列中向前推进距离超过阈值。
工具选择
| 工具 | 适用场景 | 说明 |
|---|---|---|
| StatsBomb Open Data + Python | 免费、可复现 | 有坐标和事件序列,可写脚本统计 |
| Wyscout / InStat | 商业数据 | 有界外球事件和后续序列 |
| Opta / Stats Perform | 职业级 | 有 possession chain 和 xG |
| Hudl Sportscode | 视频手动标记 | 无数据接口时手动打点统计 |
| Python + socceraction / mplsoccer | 自建分析 | 开源库处理事件数据 |
用 StatsBomb 开放数据 + Python 的实现思路
步骤 1:加载事件数据
from statsbombpy import sb events = sb.events(match_id=XXXX)
步骤 2:筛选界外球事件
throw_ins = events[events['type'] == 'Throw-in']
注意区分本方/对方:用 team 和 possession_team 判断。
步骤 3:定义时间窗口内的后续事件
对每个本方界外球事件,取其后 10 秒内(timestamp 差值)的所有事件:
import pandas as pd events['timestamp'] = pd.to_timedelta(events['timestamp'])
步骤 4:判定威胁
在窗口内检查是否出现:
type == 'Shot'→ 威胁 +1- 或
type == 'Pass'且pass_end_location在对方禁区内 → 威胁 +1 - 或累计 xG(若数据含 shot_statsbomb_xg)
步骤 5:统计与可视化
threat_count = 0
for idx, row in throw_ins.iterrows():
window = events[(events['timestamp'] > row['timestamp']) &
(events['timestamp'] <= row['timestamp'] + pd.Timedelta(seconds=10)) &
(events['possession'] == row['possession'])]
if (window['type'] == 'Shot').any():
threat_count += 1
再用 mplsoccer 画界外球位置热图 + 威胁次数对比。
统计口径注意事项
- 区分本方/对方界外球:只统计本方进攻界外球。
- 时间窗口要固定:10 秒是常见选择,可做敏感性分析(5/10/15 秒)。
- 序列归属:用
possession字段确保窗口内事件仍属同一次进攻,避免对方抢断后反击被误计。 - 死球重置:若窗口内出现对方界外球/犯规中断,应终止该序列。
- 主客场/比分情境:可分场景统计,避免混淆。
如果只有视频没有数据
用 Hudl Sportscode 或 Kinovea 手动标记:
- 建一个“界外球”按钮,记录时间戳和掷球位置。
- 建“威胁”按钮(射门/禁区传球)。
- 导出 CSV 后用 Excel/Python 按时间窗口匹配统计。
输出建议
统计结果建议按以下维度呈现:
- 全场界外球总数 vs 威胁次数(转化率)
- 按场地区域(前场/中场/后场界外球)分组
- 按比赛时段(15 分钟区间)
- 与联赛/对手均值对比
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播