私は一週間休暇を取りますブログシリーズ「失敗から学ぶ」 、もうすぐNCAAバスケットボールトーナメントの時間が近づいているからです! バスケットボールのポストのチャンスを逃すわけにはいかない。
私はインディアナ州で育ち、現在はケンタッキー州レキシントンの近くに住んでいるので、生来のバスケットボールファンです。 幼い頃(何年も前)、私はファイナル 4 で優勝する最後のチャンスを掴むことを夢見ていました。 栄光と名声は私のものだ!
残念ながら、私は決して優れたプレイヤーではなかったので、そんなはずはありませんでした。 私の言い訳は、身長のせいだった(そして今も)。 ご存知のとおり、私の身長は天気の良い日でも 5'6 インチ (167 cm) 程度しかありません。 バスケットボールでは身長 6 フィートを超える選手 (ほとんどが 7 フィート以上) のプレーヤーが主流であることは誰もが知っています。 マグジー・ボーグスやスパッド・ウェッブのような背の低い選手は稀な例外です。
高さが有利であることには明らかな理由があります。リバウンドが優れている、「リムの上」でプレーできる、ディフェンスをするために腕を広げるのが広い、選手を移動させるための体積が大きい、などです。 背の低いプレーヤーは、大きなプレーヤーよりもいくつかの利点(素早さなど)を主張できますが、最近のゲームは間違いなく「大きな男のゲーム」です。
それでも、このゲームが背の高いプレーヤーに有利になるように「仕組まれている」のではないか、それが私が決して上手なプレーヤーではなかった理由ではないかと疑問に思います。 そこで私は、フリースローを撃つ際には背の高い選手が背の低い選手よりも有利であるという単純なケースを証明してみようと決心しました。
目的の出力プロット
私が探しているのは、フリースローの「オペレーティング ウィンドウ」のプロットです。これにより、背の高いプレーヤーのウィンドウと背の低いプレーヤーのウィンドウを比較できるようになります。 これには、バスケットボールの初速度とボールの初期角度 (または軌道) の組み合わせをモデル化し、ショットが「メイク」か「ミス」かを判断し、結果をプロットすることが含まれます。 最終的には、次のようなプロットが得られます。
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: 入力速度が一定、軌道が変化する場合のフリースローのアニメーション
これを行う方法と、それが何を意味するかについて興味がありますか? 読む!
モデルの開発
私のモデルでは、米国の男子バスケットボール コートとボールの寸法を使用しました。
モデルを簡素化するために、いくつかの仮定と制約を導入しました。
モデルには 3 つの入力変数がありました。
- バスケットボールの「打ち出し」の高さ(つまり、リリースポイントでの床からの高さ)
- 私は 2 つの高さを観察しました。床から 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) がこの投稿に添付されています。 コードは非常に単純で、速度に関してはまったく最適化されていません (そのため、評価する速度と軌道の組み合わせが多数ある場合は時間がかかることがあります)。 コードには詳細な注釈が付けられているので、詳細を確認することができます。 主なコンポーネントは次のとおりです。
- 操作を制御するために、カスタム ユーザー入力パネルが表示されます。
- 新しいデータ テーブルが作成され、保存される変数ごとに新しい列が含まれます。
- 2 つのネストされたループ。1 つはボールの初期速度をステップ実行するためのもので、もう 1 つは初期軌道角度をステップ実行するためのものです。
- これらのループ内で、ボールを最終位置 (つまり、リムの高さ、下向きの軌道) に到達させるために、すべての弾道計算が行われます。
- その後、最終的なボールの位置と軌道を使用して、ショットが前に定義したように「揺れる」かどうかが判断されます。
- カテゴリカルな「メイクミス」変数は、計算結果に応じて「メイク」または「ミス」のいずれかに設定されます。
- メイクミス変数を含むすべての変数は、初速度と初期軌道のこの特定の組み合わせについてデータ テーブルに保存されます。
- 最後に、すべての計算が完了し、結果が新しいデータ テーブルに保存されたら、速度と軌道の操作ウィンドウをプロットし、スクリプトをデータ テーブルに追加してプロットを簡単に再作成します。
計算が完了すると、データ テーブルにすべての結果が含まれ、プロットすることができます。 次の場合にコードを実行しました。
場合
|
1
|
2
|
|
|
|
初期高さ、フィート
|
6.5
|
8.5
|
|
|
|
初速度、fps
|
|
|
最低
|
20
|
20
|
最高
|
50
|
50
|
インクリメント
|
0.05
|
0.05
|
|
|
|
初期軌道、度
|
|
|
最低
|
35
|
35
|
最高
|
89
|
89
|
インクリメント
|
0.05
|
0.05
|
これにより、初期高さごとに 1 つずつ、それぞれに約 650,000 行 (初速度と軌道の組み合わせごとに 1 つ) が含まれる 2 つのデータ テーブルが作成されました。
(注: これらの各ケースは、私のラップトップで完了するまでに約 2 分かかりました。)
フリースロー許容値ウィンドウの出力
私は、初速度と初期軌道の散布図を、成功または失敗に応じて色分けされたドットで表示する「フリースロー ウィンドウ」を見たかったのです。 それはグラフビルダーで簡単に実行できます。 JMP 。 「背の高い人」の許容範囲について話しましょう。
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: 背の高いプレーヤーのフリースロー許容範囲ウィンドウを拡大
これで、次のことがよくわかるようになりました。
- 射手が常に同じ初速度で射撃する場合に、シュートを行うために必要な角度の範囲 (黄色の線は例です)。
- 射手が常に同じ初期角度で射撃する場合に、射撃に必要な初速の範囲 (緑色の線が例)。
- 射手が適度に安定している場合の、速度と角度の許容範囲の一般的なウィンドウ (赤いボックスが例)。
背の低いものと高いものでのパフォーマンスの比較
2 つのテスト ケース (身長の低い射撃者と高い射撃者) の結果を手動で 1 つのグラフに結合しました。
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: 背の低いプレーヤーと高いプレーヤーのフリースロー許容範囲の比較
これで、背の低いプレーヤーと高いプレーヤーの違いが見え始めます。
- 背の低い選手は、背の高い選手よりも、より激しく、より高い角度でシュートを打たなければなりません(もちろん、それは誰もがすでに知っていました)。
- 打ち出し角が増加するにつれて 2 つの曲線は収束します (当然のことですが、両プレーヤーは非常に高いショットを打ち出すため、開始の高さはそれほど重要ではありません)。
- 一般に、背の高いプレーヤーのウィンドウ (青色の領域) は、背の低いプレーヤーのウィンドウ (黄色の領域) よりも若干大きくなります。
この時点では、論文についてはかなり良い感触を得ていましたが、輪郭の視覚化に奇妙な動作がありました。 上記のプロット (特に図 7) では、低角度から高角度に進むにつれて、青い曲線が約 22.5 fps の速度で始まり、その後許容可能な速度になることに注目してください。わずかに下がります角度が増加すると、再び増加する前に。 これは本当なのかと思いました。
ショットのアニメーション化
この奇妙さを調査するために、私は、ショットの角度だけを変えて、一定の初速度でフリースローを撃っている背の高い人を見ることにしました。 ボールの動き (単純な放物線) は計算が簡単なので、特定の角度におけるボールの経時的な xy 位置を計算しました。 これをいくつかの角度で繰り返しましたが、すべて同じ初速と打ち出し高さ 8.5 フィートを使用しました。
このデータを生成し、JMP データ テーブルに保存する 2 番目のスクリプト (animation.jsl、この投稿にも添付) を作成しました。 次に、バブル プロットを使用して結果をアニメーション化し (新しいショットごとに時間的にわずかにオフセットします)、それを 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、さまざまな初期軌道
ここでも、角度が浅すぎるか急すぎる場合、ボールがリムの前面に接触することがわかります。 ただし、実際には、ボールがリムの裏側に当たる領域によって区切られた、「メイク」をもたらす初期角度の領域が 2 つあることもわかります。 これは予期せぬ結果であり、視覚化ツールがなければ気付かなかったでしょう。 JMP !
実際のデータは調査結果を裏付けますか?
上記のプロットに示されているウィンドウに基づいて、背の低いプレーヤーは背の高いプレーヤーよりもフリースローを行うのが難しいことがわかりました。 もちろん、これが真実かどうかを示すデータは豊富にあります。
私は、1950 年以降に生まれ、キャリアで少なくとも 1000 回のフリースロー試投を行った NBA プレーヤーを対象とした、プレーヤーの身長と生涯フリースローの割合をダウンロードしました。 次に、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 選手のフリースローの割合と身長の関係
残念ながら、結局のところ、私の仮説は証明されていません。 背の低い選手のほうが、背の高い選手よりもフリースローの成功率が高いという明らかな傾向があります。 実際、もし私の仮説が正しければ、リック・バリー(フリースローをアンダーハンドで放った)のような年上の選手の成功率は非常に低かっただろう。 (バリーはキャリアを通じてシュート 90.0% を記録しました。)
明らかに、他の効果も働いています。 モデルの仮定の一部については上で詳しく説明しています。 他には次のようなものがあります。
- フリースローの練習に費やした時間
- 目と手の調整
- モチベーション(おそらく背の低いプレーヤーは、コート上の他の欠点を補うためにフリースローで懸命に練習します)
結論
ジョージ・ボックスの言葉を借りれば、「すべてのモデルは間違っていますが、いくつかのモデルは有用です。」
この場合、地元のパブで自分の主張を議論しようとする場合に、私のモデルが役立つかもしれません。 しかし明らかに私の弾道モデルは間違っていました。 バスケットボールでフリースローを打つ能力を決定する要因は他にもたくさんあります。
私はそれほど素晴らしいアスリートではないことを認める必要があると思います。 それでも、今回の旅行を楽しんでいただき、JMP がデータ探索のニーズにどのように役立つかについてアイデアを得ていただければ幸いです。
その間に…cヘス、誰か??