EJOR 论文复现|NBA 得分数据

简介: EJOR 论文复现|NBA 得分数据

简介

这是上学期的一些课外活动内容,将 NBA 得分数据进行可视化,并进行后续的探索性分析和建模(本文未介绍)。主要研究动机来源于这篇论文:

该论文使用二元的伽马过程来刻画 NBA 主客场得分数据,并且考虑了两者之间的相关性。该模型可以预测最终得分和两支队伍的总得分。并将预测结果应用到了下注市场(赌球?)。

小编有话说:这是一篇将随机过程(可靠性中的退化过程)应用到了其他领域(体育,篮球)的典型代表。并且发到了管理学不错的期刊(ABS 4星),这种思路非常值得学习!

本文主要实现下论文中的得分数据图。下面是该论文中的大量主客场球队的得分路径图。本文主要针对某一场比赛的两支队伍进行可视化。

来源于:K. Song and J. Shi (2020). "A gamma process based in-play prediction model for National Basketball Association games." European Journal of Operational Research 283(2): 706-713.

希望得到类似“腾讯体育[1]"中的图形,如下所示:

案例教程

数据介绍

本文数据来自于该网站[2],需要对数据进行爬取。当然如果有合适的 R 包直接提供也是很不错的选择,体育相关 R 包可见:CRAN任务视图:Sports Analytics

这里以 2022 年 1 月 1 日的 印第安纳步行者洛杉矶快船 的比赛作为案例。首先,加载该数据:

data1 = read_excel("1月/01-01-202 Indiana Pacers VS Los Angeles Clippers.xls")
colnames(data1) = c("序号","时间","比分")

原始数据

数据包含三列,得分发生变化时,就会记录一条数据。该数据包含了 468 行。

数据预处理

接下来,对数据进行预处理。小编为了方便起见,写了一个简单的函数。

data_precess = function(data1,home = "Charlotte Hornets", away = "Brooklyn Nets"){
  # 将“比分”列中的“0-0”转换为两列数据
  new_data <- separate(data1, col = "比分", into = c("主队比分", "客队比分"), sep = "-")
  # 将“时间”列中的字符串转换为时间值
  new_data$ 时间 <- as.numeric(ms(new_data$ 时间))
  new_data$ 时间 <- max(new_data$ 时间) - new_data$ 时间 
  time_pr = time_process(new_data$ 时间)
  new_data$ 新时间 = time_pr$new_dat
  new_data$ 节次 <- factor(time_pr$index)
  new_data$ 主队比分 = as.numeric(new_data$ 主队比分)
  new_data$ 客队比分 = as.numeric(new_data$ 客队比分)
  return(data = new_data) 
}

运行下面代码,你将获得数据处理后的结果:

home = "Charlotte Hornets"
away = "Brooklyn Nets"
new_data = data_precess(data1, home = home, away = away)

主要思路就是把主客队的得分拆分成两列,并给出新的时间刻度和节次。

处理后的数据

数据可视化

处理完数据,就可以进行可视化了。代码比较简单,主要使用 geom_line() 添加两条折线,使用 geom_rect() 添加阴影部分来区分不同的节次。此外,添加一些细节调整。

new_data %>% 
  ggplot(aes(x = 新时间)) +
  geom_rect(xmin = 0, xmax = 720, ymin = -Inf, ymax = Inf, fill = "#F7F7F7", alpha = 0.5) +
  geom_rect(xmin = 0+720*2, xmax = 3*720, ymin = -Inf, ymax = Inf, fill = "#F7F7F7", alpha = 0.5) +
  geom_line(aes(y = 主队比分, color = "Home")) +
  geom_line(aes(y = 客队比分, color = "Away")) +
  # facet_wrap(vars(节次)) +
  scale_x_continuous(expand = c(0,0),breaks = seq(0, 2160, 720)) +
  scale_y_continuous(expand = c(0,0)) +
  scale_color_manual(name = "队伍",
                     values = c("Home" = "#DA2F20", "Away" = "#3E498D"),
                     labels = c(home,away))+
  labs(x = "时间", y = "比分") +
  theme_bw() + theme(panel.grid = element_blank(),
                     legend.position = c(0.13,0.9))

两支队伍的得分数据

小编有话说

  • 该图仅仅展示了两个队伍整场比赛的得分情况,更多探索分析还能进行,例如:计算最大分差,比分交替领先次数等。
  • 本文所提论文就是基于这样的得分数据,使用随机过程进行建模与预测。这是一个很不错的出发点,更多的统计知识应用到该数据中还需要我们进一步探索。
  • 如果读者们对这类体育数据感兴趣,欢迎一起交流合作!

参考资料

[1]

腾讯体育: https://sports.qq.com/

[2]

该网站: https://www.goaloo18.com/basketball


目录
相关文章
|
7月前
|
机器学习/深度学习 编解码 算法
英文论文(sci)解读复现:基于YOLOv5的自然场景下苹果叶片病害实时检测
英文论文(sci)解读复现:基于YOLOv5的自然场景下苹果叶片病害实时检测
288 0
|
7月前
|
机器学习/深度学习 算法 计算机视觉
人工神经网络ANN中的前向传播和R语言分析学生成绩数据案例
人工神经网络ANN中的前向传播和R语言分析学生成绩数据案例
|
机器学习/深度学习 算法 Python
Python实战|用决策树实现NBA获胜球队预测
Python实战|用决策树实现NBA获胜球队预测
|
人工智能 数据可视化 数据挖掘
IJCAI 2023 | 腾讯优图新作 CECNet: 提升小样本学习在分类、检测和分割任务上的性能
IJCAI 2023 | 腾讯优图新作 CECNet: 提升小样本学习在分类、检测和分割任务上的性能
280 0
|
人工智能 自然语言处理 安全
ICLR 2023论文得分排名出炉!多篇论文竟同时拿到1分和10分
ICLR 2023论文得分排名出炉!多篇论文竟同时拿到1分和10分
473 0
|
机器学习/深度学习 人工智能 运维
ECCV 2022 | 稀有类别提升31%!如何解决3D检测中长尾问题?(Waymo最新)
在本项研究中,作者确定了一个新的概念维度-稀疏-挖掘新的数据,以提高模型在长尾问题上的表现。作者表明,稀有性,而不是困难性,是以数据为中心的3D 检测器改进的关键,因为稀有性是缺乏数据支持的结果,而困难性与问题的基本模糊性有关。提出了一种基于流模型的特征空间密度估计的稀有目标识别方法,并提出了一种基于代价感知的稀有目标tracks挖掘方法,提高了模型的整体性能,更重要的是显著提高了稀有目标的性能(提高了30.97%)。
ECCV 2022 | 稀有类别提升31%!如何解决3D检测中长尾问题?(Waymo最新)
|
机器学习/深度学习 人工智能 自然语言处理
SOTA排行榜大变天!MIT研究十个CV测试集,平均错误率超3.4%
如果测试集不靠谱,那测出来的模型性能会靠谱吗?MIT研究了10个流行的CV的数据集,平均测试集的错误率超过3.4%,最多的竟然错误超10%。「2021新智元首期AI家论坛——“创新之都 AI赋智”在中关村软件园召开。新征程,新跨越,新智元邀您在新浪直播一起见证。赶快戳下方链接直达会场:新浪视频直播https://zhibo.sina.cn/news/118265?vt=4;图文云直播链接https://v.alltuu.com/r/2iaey2/」
308 0
SOTA排行榜大变天!MIT研究十个CV测试集,平均错误率超3.4%
|
机器学习/深度学习 人工智能 安全
NeurIPS 2019民主大实验:提升审稿质量、避免“搭便车”,这回都听你们的!
NeurIPS 2019官方在Medium上更新博客,利用官方统计的立体化数据做了一系列实验,将社区和网友关于评审流程和评议意见、审稿人分配等建议悉数采纳,这回都按你们的意见办!但分析显示,产生的结果并没有想象中的那么美丽。
159 0
NeurIPS 2019民主大实验:提升审稿质量、避免“搭便车”,这回都听你们的!
|
传感器 机器学习/深度学习 人工智能
AAAI-17获奖论文深度解读(下):蒙特卡罗定位和推荐系统
前天机器之心的头条文章深度解读了 AAAI-17 大会评出的杰出论文和 Blue Sky Idea Awards 获奖论文,今天机器之心分析师则为我们带来了对 AAAI-17 两篇经典论文奖获奖论文的深度解读。论文原文可点击文末「阅读原文」下载。
500 0
 AAAI-17获奖论文深度解读(下):蒙特卡罗定位和推荐系统
|
机器学习/深度学习 监控 算法
ML之Clustering之普聚类算法:普聚类算法的相关论文、主要思路、关键步骤、代码实现等相关配图之详细攻略
ML之Clustering之普聚类算法:普聚类算法的相关论文、主要思路、关键步骤、代码实现等相关配图之详细攻略
ML之Clustering之普聚类算法:普聚类算法的相关论文、主要思路、关键步骤、代码实现等相关配图之详细攻略