我要請一週假「從錯誤中學習」部落格系列,因為NCAA籃球錦標賽快到了! 我不能錯過擔任籃球職務的機會。
我在印第安納州長大,現在住在肯塔基州列剋星敦附近,所以我是一個天生的籃球迷。 當我還是個小孩子的時候(很多很多年前),我夢想著最後一擊贏得四強。 榮耀和名譽將是我的!
唉,這並不是注定的,因為我從來都不是一個非常好的球員。 我的藉口過去是(現在也是)將其歸咎於我的身高。 您看,天氣好的時候我的身高大約只有 5 英尺 6 英寸(167 公分)。 我們都知道籃球運動是由身高超過 6 英尺(大多數接近 7 英尺及以上)的球員主導的。 像馬格西·博格斯(Muggsy Bogues)或斯普德·韋伯(Spud Webb)這樣的矮個子球員是罕見的例外。
身高優勢有明顯的原因:更好的籃板能力、在「籃框上方」打球、防守時更寬的臂展、移動球員時更大的體積等等。 矮個子球員可以比高個子球員擁有一些優勢(例如速度),但如今這項運動絕對是「大個子的遊戲」。
儘管如此,我還是想知道這個遊戲是否被「操縱」以偏向更高的玩家,因此我從來都不是一個好的玩家。 所以我決定嘗試證明一個簡單的例子:較高的球員在罰球時比矮小的球員更有優勢。
所需的輸出圖
我正在尋找的是罰球的「操作窗口」圖,以便我可以比較高個球員和矮個子球員的窗口。 這將涉及對籃球的初始速度與球的初始角度(或軌跡)的組合進行建模,確定投籃是“命中”還是“未命中”,並繪製結果。 最終,這應該會產生如下圖:
Figure 1: Example of Free Throw Tolerance WindowFigure 1: Example of Free Throw Tolerance WindowFigure 1: Example of Free Throw Tolerance WindowFigure 1: Example of Free Throw Tolerance Window圖 1:罰球容差視窗範例
此外,我們應該能夠為鏡頭設定動畫,如下所示:
Figure 2: Animation of Free Throws for Constant Input Velocity, Varying TrajectoryFigure 2: Animation of Free Throws for Constant Input Velocity, Varying TrajectoryFigure 2: Animation of Free Throws for Constant Input Velocity, Varying TrajectoryFigure 2: Animation of Free Throws for Constant Input Velocity, Varying Trajectory圖 2:恆定輸入速度、變化軌跡的罰球動畫
您對如何執行此操作及其含義感興趣嗎? 繼續閱讀!
開發模型
對於我的模型,我使用了美國男子籃球場和球尺寸:
罰球釋放點:距籃板前表面 15 英尺(水平)
球門直徑:18英寸
球門高度:離地 10 英尺(垂直)
球門中心:籃板前15英寸
籃球直徑:9.55 英寸
我引入了一些假設和限制來簡化模型:
此模型有三個輸入變數:
- 籃球的「發射」高度(即釋放點離地面的高度)
- 我看了兩個高度:離地面 6.5 英尺(大約是我的出手點,手臂伸展),離地面 8.5 英尺(大個子投籃的地方)
- 籃球的出手速度
- 籃球的出手角度(或初始軌跡)
模型的輸出(對於釋放高度、初始速度和初始軌蹟的每種組合)是「成功」或「未命中」的分類值。
運動方程式是標準彈道方程式。 這些都顯示在所附的 Word 文件中。
成功/失敗標準
對於「命中」的投籃,我要求投籃「咻咻」地穿過網,完全不接觸籃框。 這個標準乍看之下似乎很簡單:當球的中心位於輪緣高度且處於向下的軌跡時,球是否位於輪緣的最前部和最後部位置之間? (請記住,我們只專注於完美居中(從左到右)的鏡頭,因此邊緣的其餘部分並不重要。)
Figure 3: Ball and Basket Geometry for Made and Missed ShotsFigure 3: Ball and Basket Geometry for Made and Missed ShotsFigure 3: Ball and Basket Geometry for Made and Missed ShotsFigure 3: Ball and Basket Geometry for Made and Missed Shots圖 3:投籃命中和未命中的球和籃框幾何形狀
但上面“擊球”圖中顯示的球可能實際上並沒有“嗖嗖”。考慮到該影像此時球的軌跡可能相對“平坦”,如下所示:
Figure 4: Effect of Final Ball Trajectory on Make/MissFigure 4: Effect of Final Ball Trajectory on Make/MissFigure 4: Effect of Final Ball Trajectory on Make/MissFigure 4: Effect of Final Ball Trajectory on Make/Miss圖 4:最終球軌跡對漏球/漏球的影響
因此,我們還必須考慮球的最終角度,以及它縮小了揮桿射門的窗口 W 的事實:
Figure 5: Geometry involved in determining Make/MissFigure 5: Geometry involved in determining Make/MissFigure 5: Geometry involved in determining Make/MissFigure 5: Geometry involved in determining Make/Miss圖 5:確定成功/失敗所涉及的幾何形狀
因此,標準是當球的中心位於籃框高度且處於向下軌跡時:
- 球中心的 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 行(一個用於初始速度和軌蹟的每種組合)。
(注意:在我的筆記型電腦上完成這些案例中的每一個大約需要兩分鐘。)
任意投擲容差視窗輸出
我想看到“罰球視窗”,顯示初始速度與初始軌蹟的散點圖,其中的點根據成功或失敗進行顏色編碼。 這可以在 Graph Builder 中輕鬆完成聯合管理計劃。 我們來談談「高個子」的容忍窗口:
Figure 6: Free Throw Tolerance Window for Tall PlayerFigure 6: Free Throw Tolerance Window for Tall PlayerFigure 6: Free Throw Tolerance Window for Tall PlayerFigure 6: Free Throw Tolerance Window for Tall Player圖 6:高個子球員的罰球容差窗口上圖中的藍色區域顯示了高個子罰球所需的初始速度和初始角度的組合。 請注意以下事項:
- 在低速(22-24 fps)下,拍攝角度相對較低。 這是有道理的,因為以高彈道進行軟投籃不會進入籃框。
- 在大角度(70 度以上)時,初速必須很高。 在這種情況下,我們的射擊非常高。 (事實上,當角度接近 90 度時,初始速度會趨向無窮大。)
如果我們擴展上圖以強調低速區域:
Figure 7: Zoom In on Free Throw Tolerance Window for Tall PlayerFigure 7: Zoom In on Free Throw Tolerance Window for Tall PlayerFigure 7: Zoom In on Free Throw Tolerance Window for Tall PlayerFigure 7: Zoom In on Free Throw Tolerance Window for Tall Player圖 7:放大高位球員的罰球容差窗口
現在我們可以更好地看到:
- 如果射擊者始終以相同的初始速度射擊(以黃線為例),則射擊所需的角度範圍。
- 如果射擊者始終以相同的初始角度射擊(例如綠線),則射擊所需的初始速度範圍。
- 如果射手相當一致,則速度和角度的允許範圍的典型視窗(紅色框就是一個例子)。
比較短與高的性能
我手動將兩個測試案例(矮個射手與高個射手)的結果合併到一個圖表中:
Figure 8: Comparing Short vs. Tall Player Free Throw Tolerance WindowFigure 8: Comparing Short vs. Tall Player Free Throw Tolerance WindowFigure 8: Comparing Short vs. Tall Player Free Throw Tolerance WindowFigure 8: Comparing Short vs. Tall Player Free Throw Tolerance Window圖 8:比較矮個與高位球員的罰球容差窗口
現在我們可以開始看到矮個和高個球員之間的差異:
- 矮個子球員必須比高個子球員更努力、更高角度地投籃(當然,我們都知道這一點)。
- 隨著發射角度的增加,兩條曲線會收斂(這是有道理的——兩名球員都發射非常高的球,因此起始高度不太重要)。
- 一般來說,高個玩家的視窗(即藍色區域)比矮個玩家的視窗(黃色區域)稍大。
此時,我對我的論文感覺很好,但輪廓視覺化有一個奇怪的行為。 請注意,在上面的圖中(尤其是圖 7),當我們從低角度到高角度時,藍色曲線似乎以大約 22.5 fps 的速度開始,然後是可接受的速度略有下降隨著角度增加,然後再次增加。 我想知道這是否是真的。
動畫拍攝
為了研究這個奇怪的現象,我選擇觀察一個高個子以恆定的初始速度投籃,只改變投籃的角度。 球的運動很容易計算(簡單的拋物線),因此我計算了在給定角度下球隨時間的 xy 位置。 我在多個角度上重複了此操作,所有角度均使用相同的初始速度和 8.5 英尺的發射高度。
我編寫了第二個腳本(animation.jsl,也附在本文中),它會產生此資料並將其儲存在 JMP 資料表中。 然後,我使用氣泡圖對結果進行動畫處理(每個新鏡頭在時間上略有偏移),並將其儲存在 GIF 檔案中。
第一個動畫顯示一個高個子(釋放點離地面 8.5 英尺),以 22.3 fps 的初始速度射門:
Figure 9: Animation of Tall Player Shooting: 22.3 fps Initial Velocity at Different Initial TrajectoriesFigure 9: Animation of Tall Player Shooting: 22.3 fps Initial Velocity at Different Initial TrajectoriesFigure 9: Animation of Tall Player Shooting: 22.3 fps Initial Velocity at Different Initial TrajectoriesFigure 9: Animation of Tall Player Shooting: 22.3 fps Initial Velocity at Different Initial Trajectories圖 9:高個子玩家射擊的動畫:不同初始軌跡的初始速度為 22.3 fps
上面的動畫顯示了多次射擊嘗試,隨著射擊角度的改變,所有嘗試都具有相同的初始速度。 (每次射擊都標有初始發射角度(以度為單位)。)如果初始角度太淺或太陡,則射擊會擊中籃筐的前部(因此被認為是“未擊中”,因為它沒有“嗖嗖”。 ”)綠色鏡頭是“成功”,紅色鏡頭是“未命中”。 如果角度恰到好處,球就會毫無阻礙地穿過籃框。
然而,如果我們稍微提高初始速度(到 22.4 fps),我們會得到這個動畫:
Figure 10: Tall Player, Initial Velocity 22.4 fps, different initial trajectoriesFigure 10: Tall Player, Initial Velocity 22.4 fps, different initial trajectoriesFigure 10: Tall Player, Initial Velocity 22.4 fps, different initial trajectoriesFigure 10: Tall Player, Initial Velocity 22.4 fps, different initial trajectories圖 10:高個子玩家,初始速度 22.4 fps,不同的初始軌跡
在這裡,我們再次看到,如果角度太淺或太陡,球就會接觸到籃框的前部。 然而,我們也看到,實際上有兩個初始角度區域會導致“入球”,並被球撞擊籃框後部的區域分開。 這是一個意想不到的結果,如果沒有視覺化工具,我不會注意到它聯合管理計劃!
真實數據支持研究結果嗎?
根據上圖中顯示的窗口,我感覺很好,矮個子球員比個子高的球員罰球更困難。 當然,有大量數據可以證明這是否屬實。
我下載了 1950 年後出生的 NBA 球員的球員身高和終身罰球百分比,這些球員在職業生涯中至少有 1000 次罰球嘗試。 然後,我使用 Fit Y by X 平台繪製了高度與百分比的關係:
Figure 11: Free Throw Percentage vs. Height for NBA players born post-1950 with at least 1000 free throw attemptsFigure 11: Free Throw Percentage vs. Height for NBA players born post-1950 with at least 1000 free throw attemptsFigure 11: Free Throw Percentage vs. Height for NBA players born post-1950 with at least 1000 free throw attemptsFigure 11: Free Throw Percentage vs. Height for NBA players born post-1950 with at least 1000 free throw attempts圖 11:1950 年後出生且罰球次數至少達到 1000 次的 NBA 球員罰球命中率與身高的關係
唉,我的論文終究沒有被證實。 有一個非常明顯的趨勢,矮個子球員的罰球命中率高於高個子球員。 事實上,如果我的論點是正確的,那麼像里克·巴里(Rick Barry)這樣的老球員(他的罰球命中率很低)的命中率將會非常低。 (巴瑞整個職業生涯的投籃命中率為 90.0%。)
顯然,還有其他影響在起作用。 上面詳細介紹了一些模型假設。 其他可能包括:
- 練習罰球所花費的時間
- 眼手協調
- 動力(也許矮個子球員在罰球方面更加努力,以彌補場上其他方面的缺陷)
結論
用喬治·博克斯的話來說,“所有模型都是錯誤的,但有些模型是有用的。”
在這種情況下,如果我嘗試在當地酒吧爭論我的觀點,我的模型可能會很有用。 但顯然我的彈道模型是錯的。 還有許多其他因素決定籃球中罰球的能力。
我想我需要承認我並不是那麼出色的運動員。 儘管如此,我還是希望您喜歡這次旅行,也許對 JMP 如何成為滿足您的資料探索需求的有用工具有一些想法。
同時…c赫斯,有人嗎?