汤姆·布雷迪普遍被认为是NFL历史上最伟大的四分卫。他保持的生涯传球码数纪录只是他众多辉煌纪录之一。为了取得如此成就,他始终保持着极高的年传球码数,传球次数和成功次数都位居榜首,避免了赛季报销的伤病,并且拥有漫长的职业生涯。
本次演讲将带领我们进行数据探索和可视化,揭示汤姆·布雷迪如何在NFL赛场上成为如此强大的统治者。随后,我们将分析哪些现役四分卫最有希望挑战他的纪录,以及这一挑战可能在何时发生。
我们涵盖了整个分析工作流程:从网站抓取数据的 JSL 脚本;准备用于分析的数据的数据清理工作流程;数据探索和可视化;以及最终发布的 JMP Live 报告,该报告将在整个赛季中持续更新。
大家好,我是 Scott Allan,JMP 的一名系统工程师。很高兴能和我的同事 Yasmin Hajar 一起来到这里,在卡里举行的 2024 年 Discovery Summit 大会上展示我们的海报。今年早些时候,我和 Yasmin 讨论了 Discovery Summit 大会,以及我们希望展示的数据可视化和分析工作流程,该流程涵盖从数据访问到在 JMP Live 中发布数据的完整过程。我们每天都与客户合作,并且发现他们对实现该工作流程的完全自动化越来越感兴趣,包括从数据导入、分析到发布结果的整个过程。
本次演示将涵盖 JMP 的诸多功能。我们将展示如何从网站导入数据,如何使用工作流构建器自动更新和清理数据,如何使用各种 JMP 平台来可视化、探索甚至建模数据,以及如何将结果发布到 JMP Live。此外,我们还将演示如何使用自定义插件,只需单击一个按钮即可完成上述操作。
在这个项目中,我们决定以NFL前四分卫汤姆·布雷迪为原型来设计工作流程。当时,我们正在构思创意。我读过一篇文章,讲述了他职业生涯的统治力,以及他的纪录将会保持很长时间。我开始思考,到底多长才算“很长”?下一个打破纪录的四分卫是否已经上场?如果是,他们什么时候会挑战这些纪录?
汤姆·布雷迪保持着多项NFL纪录。为了本次演示的目的,我们将重点关注其中一项:他的职业生涯传球码数。但同样的流程也适用于他的其他任何纪录。我和亚斯敏都不是NFL的铁杆球迷。我们一开始并不确定谁有资格竞争,或者候选人是谁,甚至不知道最终会是谁。当我们开始深入研究这些数据时,我们了解到汤姆·布雷迪的职业生涯是多么的与众不同,也很容易理解为什么他被认为是史上最伟大的球员之一。数据探索之旅的真正起点是获取这些数据。现在,我把这项工作交给亚斯敏,让我们开始吧。
谢谢你,斯科特。我们首先要做的就是创建1940年至2023年所有统计数据的历史数据。你可以看到,我们需要访问Pro Football Reference网站。我们编写了自己的JSL脚本,将这里的子年份变量替换为相应的年份,并将所有这些统计数据合并到一个包含过去几年所有年份的原始数据表中。这就是我们的第一步。
然后我们使用工作流构建器创建了一个工作流,首先打开历史数据,然后添加本周的统计数据。2024赛季开始后,我们就可以使用这些每周统计数据并将其添加到历史数据中。可以看到,我们还需要执行多个额外步骤,例如标准化一些列属性、添加职业生涯年份、添加活跃年份以及添加累计码数列,以便我们可以对所有码数进行求和。
但我想指出的是,其中一些步骤,例如导入本周和历史数据,旁边有一个加号,这意味着这是一个自定义步骤,我们必须在 JSL 中创建它,并将其作为自定义步骤粘贴到工作流程中。
创建好这个工作流程后,我们就能得到一份最新的足球数据统计表,其中包含截至本周的所有信息。我们开始使用现有的可视化工具。我们创建的第一个图表是累计码数随年份变化的曲线图,其中所有退役四分卫用灰色表示,汤姆·布雷迪用紫色表示,现役四分卫用橙色表示。
我们可以立即看出,有些四分卫过早退役,如果他们继续打下去,他们就能打破汤姆·布雷迪的纪录,或者说,如果他们继续打下去,汤姆·布雷迪就无法打破他们的纪录。在现役球员方面,我们可以看到一些球员的累计码数已经呈现出明显的上升趋势。我们只选取了现役球员,并将他们的累计码数与其职业生涯年份绘制成函数图。然后,我们将数据标准化到职业生涯年份。
然后我们开始分析这些球员中谁领先。可以看到,阿隆·罗杰斯目前领先。然而,他去年表现不佳,谁也不知道他本赛季会如何。但另一方面,例如马修·斯塔福德和拉塞尔·威尔逊,如果按职业生涯单赛季数据比较,他们的总码数已经超过了汤姆·布雷迪。
如果只比较同一赛季的表现,他们已经领先于其他球员了。德里克·卡尔(Derek Carr)的排名在这里。他表现不错,但职业生涯还处于早期阶段。我们决定换个角度来分析。我们来看平均每年的传球码数,这些四分卫的平均每年传球码数如何?我们发现贾斯汀·赫伯特(Justin Herbert)的传球码数非常惊人,达到了每年4300码,远超其他球员;即使和汤姆·布雷迪(Tom Brady)相比,赫伯特的传球码数也明显偏低。
但如果我们看一下这张动态关联图表,就能看到这些球员在职业生涯中所处的阶段。我们可以看到,贾斯汀·赫伯特的职业生涯还处于早期,目前只有四年经验。接下来,斯科特将向大家展示我们创建的更高级的报告和模型。
拿到新数据后的第一步,就像亚斯敏展示的那样,就是进行一些数据探索。另一种思考哪些候选人可能挑战这些记录的方法是进行其他数据探索,例如聚类分析。我们在这里所做的,是找到在各个方面都很相似的四分卫,不仅仅是累计码数或年均码数这一项统计数据,而是综合考虑他们的所有特征,我们运用了层次聚类分析。
在这种情况下,我们对所有四分卫进行了聚类分析。我认为这个数据表中大约有 800 名四分卫,我们根据他们的统计数据(例如过往传球尝试次数、传球成功次数、被拦截次数等等)对他们进行了聚类。我们现在看到的是星座图的结果。这个星座图展示了在所有统计数据上都具有相似特征的四分卫群体。
我们可以看到这里有一些主要的分类分支,它们开始区分不同组别或类型的四分卫。我们可以看到汤姆·布雷迪在这个分类中的位置。但这并不能告诉我们他们的统计数据或能力。它只是表明,这些四分卫在各项统计数据上都比较相似。
我们可以放大查看包含汤姆·布雷迪的那条分支。我们当然可以看到一些熟悉的名字,一些你可能在之前的图表中看到过的名字,还有一些可能会让你感到意外。我们也保留了退役或不再活跃的四分卫,他们就是图中的灰色小点。
你可以看到,如果他们职业生涯处于不同的阶段,他们的职业生涯或许会更长一些,或许还能挑战一些纪录,但他们现在已经退役了,挑战这些纪录的机会也随之消失了。我们可以看到汤姆·布雷迪的现状,也开始展望未来,看看还有哪些四分卫可能正在逐渐缩小差距,甚至挑战他保持的纪录。
接下来,我们要做的就是对这些数据进行建模。前两种方法,即数据探索和聚类,实际上都是为了探索数据,找出最有可能挑战纪录的四分卫。但为了确定这些纪录何时可能被挑战,我们需要构建一个模型。有很多不同的模型可以用于此目的,我们选择构建一个混合模型。
我们使用混合模型平台拟合模型,以累计码数作为响应变量(Y变量),职业生涯码数作为自变量(X变量),然后以球员姓名作为随机效应,并将这些系数嵌套起来。本质上,我们得到的是每个四分卫的简单线性回归,其自变量为每年累计码数。每个回归方程都有各自的斜率和截距。基于这些信息,我们得到了各种不同的回归方程,从而可以进行反向预测。
我们利用汤姆·布雷迪81294码的纪录进行反向预测。通过反向预测,我们可以得出四分卫达到这一累计码数所需的年数。我们根据这份报告创建了一个数据表,然后根据每位四分卫的新秀赛季数据对该数据表进行了标准化处理。右侧的图表展示了每位四分卫的情况。图表按达到该纪录所需的年数升序排列。
你可以看到,图中我们之前提到的两位球员,阿隆·罗杰斯和马特·斯塔福德,分别用两个橙色点表示。你可以看到汤姆·布雷迪的位置在紫色点上,他是在职业生涯的第24个赛季(2000年)完成这一壮举的。我记不清具体是哪一年了,大概是2022年左右。但我们在这里也看到了其他四分卫的身影。当然,阿隆·罗杰斯和马特·斯塔福德将会是第一批挑战这项纪录的人,但他们还需要六七年的时间才能做到。预计他们会在2031年或2032年赛季挑战这项纪录。如果他们继续打下去,他们或许能够接近自己的职业生涯总码数纪录。
还有一批更早的四分卫可能会在更远的年代开始挑战这项纪录。也许要等到2030年代末或2040年代初。别抱太大希望,这不会很快发生。不过令人欣慰的是,目前还没有四分卫明显在冲击这项纪录,但未来可能会有不少四分卫做到这一点。现在我们已经探索并分析了数据,接下来我们将转而展示如何发布和共享这些数据,以及如何实现整个工作流程的自动化。
我会把它转交给亚斯敏来帮我们处理。
谢谢你,斯科特。正如斯科特所说,我们的目标是将部分报告发布到 JMP Live 上,以便大家能够随着赛季的进行追踪这些报告的变化。为此,我们只需在 JMP Live 上选择“发布”选项,然后选择“发布报告”。我们选择了所需的报告。在这个例子中,我有一个包含几张图片或几张图表的仪表盘,然后将 JMP Live 上的数据表替换为来自那个职业橄榄球网站的、已更新统计数据的数据表。
为了进一步简化操作,我们将所有步骤(包括发布到 JMP Live)整合到一个插件中。这里我们展示创建插件的步骤,因为创建插件非常简单,我们也想与大家分享。具体操作方法是:点击“文件”>“新建”>“插件”。在要点击的按钮下方,我们复制粘贴了从工作流构建器导出的 JSL 脚本。在工作流构建器中创建工作流后,您可以导出 JSL 脚本,然后我们将其复制粘贴到这里。
为了更进一步,我们把这个插件从插件菜单中移到了自定义菜单,这样用户点击按钮就更方便了。接下来,我快速演示一下步骤。这就是我们的自定义菜单。点击“运行统计”,可以看到当前年份的更新。这是一个标准化的表格,列等等都符合规范。
它会创建一个包含顶层数据的表子集。它在这里创建了仪表板。我快速展示一下 JMP Live,它正在自动重新加载,显示最新的平均每年码数和球员码数统计数据。这就是我们发布和添加的全部内容。现在把话题转回 Scott,听他做最后的总结。
这涵盖了从数据访问、清理、图表绘制、建模到发布的整个工作流程。如果您想跟着操作,我们还会将此仪表板发布到 JMP Public,可能还会添加一些我们觉得有趣的其他图表。请随时关注,我们会在 JMP Public 网站上线后发布链接,并在社区中分享。
如果您想更深入地了解您在这里看到的所有内容,我们实际上只是对我们的工作进行了概览。我们只是快速浏览了一下脚本和分析。但如果您想了解更多,请在社区发帖。我们很乐意回答这些问题。在此,我要感谢 JMP 给我们这次制作海报和进行演示的机会。我要感谢 Yasmin 与我一起完成这个项目。我非常享受这个过程,也学到了很多东西。
谢谢。