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


目录
相关文章
|
Python
pycharm通行证更新问题
pycharm通行证更新问题
474 0
|
2月前
|
数据采集 JavaScript 前端开发
“所见即所爬”:使用Pyppeteer无头浏览器抓取动态壁纸
“所见即所爬”:使用Pyppeteer无头浏览器抓取动态壁纸
|
7月前
|
前端开发 数据安全/隐私保护
“WP页面水印助手”的WordPress插件
“WP页面水印助手”的WordPress插件
142 14
|
人工智能 算法
第四届 Data-Juicer数据挑战赛暨天池 Better Synth 多模态大模型数据合成挑战赛
阿里云、NVIDIA主办,阿里云天池平台、魔搭社区、阿里巴巴通义实验室共同组织的第四届 Data-Juicer 数据挑战赛,暨天池 Better Synth 多模态大模型数据合成挑战赛开赛啦~
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
7484 124
|
9月前
“可以成为我的恋人吗”HTML源码
“可以成为我的恋人吗”HTML源码,双击html文件可以本地运行,打开HTML页面,上面显示可以或者不要,越是拒绝,可以的按钮就会越来越大,直到点击可以为止
925 0
“可以成为我的恋人吗”HTML源码
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
Manga Image Translator:开源的漫画文字翻译工具,支持多语言翻译并嵌入原图,保持漫画的原始风格和布局
Manga Image Translator 是一款开源的漫画图片文字翻译工具,支持多语言翻译并能将翻译后的文本无缝嵌入原图,保持漫画的原始风格和布局。该工具基于OCR技术和深度学习模型,提供批量处理和在线/离线翻译功能。
807 15
Manga Image Translator:开源的漫画文字翻译工具,支持多语言翻译并嵌入原图,保持漫画的原始风格和布局
|
11月前
|
机器学习/深度学习 编解码 人工智能
ColorFlow:腾讯和清华大学联合推出的图像序列着色模型,通过参考图像的颜色对黑白漫画进行着色生成彩色漫画
ColorFlow是由清华大学和腾讯ARC实验室共同推出的图像序列着色模型,通过检索增强、上下文学习和超分辨率技术,确保黑白图像序列的着色与参考图像颜色一致,适用于漫画、动画制作等工业应用。
809 15
ColorFlow:腾讯和清华大学联合推出的图像序列着色模型,通过参考图像的颜色对黑白漫画进行着色生成彩色漫画
|
Web App开发 JSON JavaScript
爬取王者荣耀图片
【10月更文挑战第11天】爬取王者荣耀图片。
605 2
欢迎来到王者荣耀!
欢迎来到王者荣耀!
583 1