我要休息一周了 “从我的错误中学习”博客系列 ,因为现在几乎是NCAA篮球锦标赛的时间!我不能错过篮球的机会。
我在印第安纳州长大,现在我住在肯塔基州列克星敦附近,所以我是一个天生的篮球爱好者。 作为一个年轻的孩子(许多年前),我梦想着最后一击赢得四强。 荣耀和名望将是我的!
唉,这并不意味着,因为我从来都不是一个非常好的球员。 我的理由是(并且是)把它归咎于我的身高。 你知道,在美好的一天,我只有5英尺6英寸(167厘米)高。 我们都知道篮球是由身高超过6英尺(最接近7英尺以上)的球员主导的。 像Muggsy Bogues或Spud Webb这样的短名球员是罕见的例外。
高度优势有明显的原因...更好的篮板,打出“篮筐以上”,更宽的防守跨度,更大的移动球员体积等等。 较短的玩家可以比较大的玩家获得一些优势(例如速度),但是现在游戏绝对是一个“大人物的游戏”。
不过,我想知道这个游戏是否“被操纵”以吸引更高的玩家,因此解释了我从来不是一个好玩家的原因。 因此,我决定尝试证明一个简单的案例:较高的球员在投注罚球时比较短的球员有优势。
期望的输出图
我正在寻找的是一个罚球“操作窗口”的情节,这样我就可以比较一个高位球员的窗口和一个短打球员的窗口。 这将涉及对篮球的初始速度与球的初始角度(或轨迹)的组合进行建模,确定镜头是“制造”还是“小姐”,并绘制结果。 最终这会产生如下情节:
图1:自由投掷容差窗口示例
此外,我们应该能够为镜头制作动画,如下所示:
图2:恒定输入速度的自由投掷动画,变化的轨迹
对我们如何做到这一点感兴趣,这一切意味着什么?继续阅读!
开发模型
对于我的模特,我使用了美国男子篮球场和球尺寸:
罚球释放点:距离篮板前表面15英尺(水平)。
目标直径:18英寸。
目标高度:距离地面10英尺(垂直)
球门中心:篮板前方15英寸。
篮球直径:9.55英寸。
我介绍了一些假设和约束来简化模型:
模型有三个输入变量:
- 篮球的“发射”高度(即在释放点高于地板的高度)。
- 我看了2个高度:地板上方6.5英尺(这是我的释放点,手臂伸展),距地面8.5英尺(大家伙射击的地方)。
- 篮球的释放速度。
- 篮球的释放角度(或初始轨迹)。
模型的输出(对于释放高度,初始速度和初始轨迹的每个组合)是“制造”或“小姐”的分类值。
运动方程是标准的弹道方程。 这些显示在附带的Word文档中。
制定/错过标准
对于“制造”的镜头,我要求镜头“嗖嗖”穿过网而根本不接触边缘。 这个标准起初看起来很简单:当球的中心处于轮辋高度和向下的轨迹时,球是否适合轮辋的最前面和最后面的位置?(请记住,我们只是看着完全居中(从左到右)的镜头,所以边缘的其余部分并不重要。)
图3:制造和错过镜头的球和篮几何
但是上面“Made Shot”图中显示的球可能实际上没有“嗖嗖”。考虑到此图像时球的轨迹可能相对“平坦”,如下所示:
图4:最终球轨迹对制造/缺失的影响
因此,我们还必须考虑到球的最终角度,以及它使得W窗口的W变窄的事实:
图5:确定Make / Miss所涉及的几何
所以标准是当球的中心位于轮辋的高度并且在向下的轨迹上时:
- 球的中心的X位置必须位于轮辋的前部和后部之间
- W必须至少与球直径一样大
- 球不能接触由最终角度和轮辋直径描述的狭窄通道的任一侧。
实施模型
弹道方程和约束被编码为JMP的脚本语言(JSL)。 脚本(ballistic calcs.jsl)附加到这篇文章,如果你想尝试自己运行它。 代码非常简单,并且根本没有针对速度进行优化(因此,如果要评估速度和轨迹的许多组合,可能需要一些时间)。 如果你想挖掘它,代码很好注释。 主要组件包括:
- 提供自定义用户输入面板用于控制操作
- 将创建一个新数据表,其中包含将要存储的每个变量的新列。
- 两个嵌套的循环,一个用于逐步通过初始球速度,一个用于逐步通过初始轨迹角度。
- 在这些循环中,进行所有弹道计算以使球到达最终位置(即在轮辋高度,向下轨迹处)
- 然后使用最终的球位置和轨迹来确定镜头是否如先前所定义的那样“嗖嗖”
- 根据计算结果,分类“makemiss”变量设置为“Make”或“Miss”。
- 所有变量都存储在数据表中,用于初始速度和初始轨迹的特定组合,包括makemiss变量。
- 最后,一旦完成所有计算并将结果存储在新数据表中,我绘制速度与轨迹操作窗口,并将数据表添加到数据表中以轻松地重新创建绘图。
计算完成后,数据表包含所有结果,然后可以绘制。 我为以下情况运行了代码:
案件
|
1
|
2
|
|
|
|
初始高度,英尺
|
6.5
|
8.5
|
|
|
|
初速度,fps
|
|
|
最低
|
20
|
20
|
最高
|
50
|
50
|
增量
|
0.05
|
0.05
|
|
|
|
初始轨迹,度
|
|
|
最低
|
35
|
35
|
最高
|
89
|
89
|
增量
|
0.05
|
0.05
|
这导致两个数据表,每个初始高度一个,每个包含近650,000行(初始速度和轨迹的每个组合一个)。
(注意:这些案例中的每一个都需要大约2分钟才能在我的笔记本电脑上完成。)
自由投掷容差窗口输出
我想看看“罚球窗口”,显示初始速度对比的散点图 初始轨迹,根据制造或遗漏进行颜色编码的点。 这在JMP中的GraphBuilder中很容易完成。 让我们来谈谈“高人”容忍窗口:
图6:高大球员的罚球容差窗口
上图中的蓝色区域显示了一个高个子挥动罚球所需的初始速度和初始角度的组合。 请注意以下事项:
- 在低速(22-24 fps)时,拍摄的角度相对较低。这是有道理的,因为在高弹道上投射一个柔软的射门将无法进入篮筐。
- 在高角度(70度以上)时,初始速度必须很高。在这种情况下,我们拍摄的镜头非常高。 (事实上,当角度接近90度时,初始速度会向无穷远处攀升。)
如果我们扩展上面的图以强调低速区域:
图7:放大高位球员的罚球容差窗口
现在我们可以更好地看到:
- 如果射击者总是以相同的初始速度射击,那么制作镜头所需的角度范围(黄线就是一个例子)
- 如果射击者总是以相同的初始角度射击,那么制作镜头所需的初始速度范围(绿线就是一个例子)
- 如果射手合理一致,则允许的速度和角度范围的典型窗口。 (红盒子就是一个例子)
比较短到高的表现
我手动将两个测试用例(短射击与高射击者)的结果合并为一个图表:
图8:比较短对比 高个子球员免费投掷容差窗口
现在我们可以开始看到短期和高级玩家之间的差异:
- 与较高的球员相比,短距离球员必须更加努力地射击(当然我们都已经知道了)
- 随着发射角度的增加,两条曲线会聚(有意义 - 两位球员都发射非常高的投篮,因此起始高度不太重要)。
- 通常,高级玩家的窗口(即蓝色区域)比短玩家的窗口(黄色区域)稍大。
在这一点上,我对我的论文感觉非常好,但轮廓可视化有一个奇怪的行为。 注意在上面的图(特别是图7)中,当我们从低角到高角时,蓝色曲线似乎从大约22.5 fps的速度开始,然后是可接受的速度略微下降随着角度的增加,再次增加之前。 我想知道这是否真实。
动画镜头
为了调查奇怪的事情,我选择看一个身材高大的人以恒定的初始速度投射罚球,只改变投篮的角度。 球的运动很容易计算(一个简单的抛物线),所以我计算了球在给定角度随时间的xy位置。 我重复了这个角度,使用相同的初始速度和8.5英尺的发射高度。
我写了第二个脚本(animation.jsl,也附在这篇文章中),它生成了这些数据并将其存储在JMP数据表中。 然后我使用气泡图来为结果设置动画(每次新镜头在时间上稍微偏移),并存储在GIF文件中。
第一个动画显示一个高个子人(释放点在地板上方8.5英尺处),以22.3 fps的初始速度射击球:
图9:高大球员射击的动画:22.3 fps不同初始弹道的初始速度
上面的视频显示了一些镜头尝试,都具有相同的初始速度,因为镜头角度发生了变化。 (每个镜头标有初始发射角度,以度为单位。)如果初始角度太浅或太陡,则射击击中轮辋的前部(因此它被认为是“未命中”,因为它没有“嗖嗖”。“)绿色镜头是”制作“,红色镜头是”未命中“。如果角度恰到好处,则球在没有阻挡的情况下窜过篮筐。
但是,如果我们稍微提高初始速度(到22.4 fps),我们得到这个动画:
图10:高大的球员,初始速度22.4 fps,不同的初始轨迹
在这里我们再次看到,如果角度太浅或太陡,球接触轮辋的前部。 然而,我们也看到实际上有2个初始角度区域导致“制造”,由球击中轮辋后部的区域分开。 这是一个意想不到的结果,如果没有JMP的可视化工具,就不会被注意到!
真实数据是否支持调查结果?
基于上图中显示的窗口,我感觉非常好,一个矮个子玩家的罚球时间比一个更高的玩家更难。 当然,有大量数据可以证明这是否属实。
我为1950年以后出生的NBA球员下载了球员身高和终身心祸百分比,他们在职业生涯中至少有1000次罚球机会。 然后我绘制了高度vs. 使用Fit Y by X平台的百分比:
图11:罚球百分比vs. 1950年以后出生的NBA球员的身高至少有1000次罚球机会
唉,我的论文毕竟没有得到证实。 有一个非常明显的趋势是短线球员的罚球命中率高于较高的球员。 事实上,如果我的论文是正确的,那么像里克·巴里这样的老球员(手持罚球命中率)的比例非常低。 (巴里在整个职业生涯中的命中率为90.0%。)
显然还有其他影响。 上面详述了一些模型假设。 其他可能包括:
- 练习罚球的时间。
- 眼手协调。
- 动机(也许短距离球员在罚球时更加努力,以弥补其他球场上的不足)
结论
用George Box的话说,“所有模型都错了,但有些模型很有用。”
在这种情况下,如果我试图在当地酒吧争论我的观点,我的模型可能会有用。 但显然我的弹道模型是错误的。 还有很多其他因素在决定击中罚球的能力。
我想我需要承认,我不是那么棒的运动员。 尽管如此,我希望您喜欢这次旅行,也许还有一些关于JMP如何成为您的数据探索需求的有用工具的想法。
同时…。
国际象棋,任何人?
我喜欢这些动画!他们真的很有助于理解[简化]罚球机制中发生的事情。
当谈到罚球时,我总是回想起Shaq,这是最初的“真正的大个子”之一。他的罚球是铿锵有力的,铿锵有力的。我觉得罚球命中率与其他射击能力(想想得分后卫)非常相关,而非高度。大个子整天都在进行上篮和扣篮,而不是像外面的球员一样抛射。
谢谢 @eclaassen !也许大家伙有太多的肌肉,它会影响他们的精细运动技能。 或者也许他们的手臂太长了以至于影响了他们的眼手协调!
(正如你所看到的那样,作为一个矮个子的人,我花了很多时间思考为什么矮人不应该总是对高个子人不利,尽管兰迪纽曼的歌 !)