Mi prendo una settimana libera dal mio Serie di blog "Imparare dai miei errori". , perché è quasi l'ora del torneo di basket NCAA! Non posso perdere l'occasione per un post sul basket.
Sono cresciuto in Indiana e ora vivo vicino a Lexington, KY, quindi sono un fan naturale del basket. Da ragazzino (molti, molti anni fa), sognavo di realizzare il tiro finale per vincere le Final Four. Gloria e fama sarebbero mie!
Ahimè, non doveva essere così, dato che non sono mai stato un bravo giocatore. La mia scusa era (ed è) quella di dare la colpa alla mia altezza. Vedi, in una bella giornata sono alto solo circa 5'6” (167 cm). Sappiamo tutti che il basket è dominato da giocatori alti più di 6 piedi (la maggior parte si avvicina ai 7 piedi e oltre). Giocatori bassi come Muggsy Bogues o Spud Webb sono la rara eccezione.
Ci sono ragioni ovvie per i vantaggi in altezza: rimbalzi migliori, gioco "sopra il ferro", apertura delle braccia più ampia per giocare in difesa, ingombro maggiore per spostare i giocatori, ecc. I giocatori più bassi possono vantare alcuni vantaggi rispetto ai giocatori più grandi (come la rapidità), ma al giorno d'oggi il gioco è decisamente un "gioco da grandi uomini".
Tuttavia, mi chiedo se il gioco sia “truccato” per favorire i giocatori più alti, da qui il motivo per cui non sono mai stato un buon giocatore. Così ho deciso di provare a dimostrare un caso semplice: che i giocatori più alti hanno un vantaggio rispetto ai giocatori più bassi quando tirano i tiri liberi.
Il grafico dell'output desiderato
Quello che sto cercando è un grafico della "finestra operativa" per i tiri liberi, in modo da poter confrontare la finestra per un giocatore alto con quella per un giocatore basso. Ciò comporterà la modellazione di combinazioni della velocità iniziale della palla da basket rispetto all'angolo (o traiettoria) iniziale della palla, determinando se il tiro è un "Make" o un "Miss" e tracciando i risultati. Alla fine, questo dovrebbe risultare in una trama come questa:
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 WindowFigura 1: esempio di finestra di tolleranza del tiro libero
Inoltre, dovremmo essere in grado di animare lo scatto, qualcosa del genere:
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 TrajectoryFigura 2: Animazione di tiri liberi per velocità di input costante, traiettoria variabile
Sei interessato a come farlo e cosa significa? Continuare a leggere!
Sviluppare un modello
Per il mio modello ho utilizzato le dimensioni del campo da basket maschile americano e della palla:
Punto di rilascio del tiro libero: 15 piedi (in orizzontale) dalla superficie anteriore del tabellone
Diametro della porta: 18 pollici
Altezza obiettivo: 10 piedi (verticalmente) da terra
Centro della porta: 15 pollici davanti al tabellone
Diametro del basket: 9,55 pollici
Ho introdotto alcune ipotesi e vincoli per semplificare il modello:
C'erano tre variabili di input nel modello:
- L'altezza di "lancio" del pallone da basket (ovvero l'altezza sopra il pavimento nel punto di rilascio)
- Ho osservato due altezze: 6,5 piedi sopra il pavimento (che è più o meno il mio punto di rilascio, con le braccia tese) e 8,5 piedi dal pavimento (dove sparano i grandi).
- La velocità di rilascio del pallone da basket
- L'angolo di rilascio del pallone (o traiettoria iniziale)
L'output del modello (per ciascuna combinazione di altezza di rilascio, velocità iniziale e traiettoria iniziale) era un valore categorico di "Made" o "Miss".
Le equazioni del movimento erano le equazioni balistiche standard. Questi sono mostrati nel documento Word allegato.
Criteri di successo/perdita
Affinché un tiro fosse "effettuato", avevo bisogno che il tiro "scivolasse" attraverso la rete senza toccare il canestro. Questo criterio sembra semplice a prima vista: la palla si inserisce tra le posizioni più avanzata e più arretrata del cerchio quando il centro della palla è all'altezza del cerchio e su una traiettoria verso il basso? (Ricorda che stiamo guardando solo i colpi perfettamente centrati (da sinistra a destra), quindi il resto del cerchio non ha importanza.)
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 ShotsFigura 3: Geometria della palla e del canestro per i tiri realizzati e sbagliati
Ma la palla mostrata nel diagramma “Made Shot” sopra potrebbe non aver effettivamente “scivolato”. Considera che la traiettoria della palla al momento di questa immagine potrebbe essere stata relativamente "piatta", come mostrato di seguito:
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/MissFigura 4: Effetto della traiettoria finale della palla su Make/Miss
Quindi dobbiamo anche tenere conto dell’angolo finale della palla e del fatto che restringe la finestra W per un tiro sibilato:
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/MissFigura 5: Geometria coinvolta nella determinazione del Make/Miss
Quindi il criterio è che quando il centro della palla è all'altezza del cerchio e su una traiettoria verso il basso:
- La posizione X del centro della pallina deve essere tra la parte anteriore e quella posteriore del cerchio.
- W deve essere grande almeno quanto il diametro della sfera.
- La palla non può toccare nessuno dei due lati del canale ristretto descritto dall'angolo finale e dal diametro del cerchio.
Attuazione del Modello
Le equazioni balistiche e i vincoli sono stati codificati in JMP Scripting Language (JSL). Lo script (ballistic calcs.jsl) è allegato a questo post, nel caso in cui desideri provare a eseguirlo tu stesso. Il codice è piuttosto semplice e per niente ottimizzato per la velocità (quindi potrebbe richiedere del tempo se ci sono molte combinazioni di velocità e traiettorie da valutare). Il codice è ben annotato se vuoi approfondirlo. I componenti primari includono questi:
- Viene presentato un pannello di input utente personalizzato per il controllo delle operazioni.
- Viene creata una nuova tabella dati contenente nuove colonne per ciascuna variabile che verrà archiviata.
- Due cicli nidificati, uno per scorrere le velocità iniziali della palla e uno per scorrere gli angoli di traiettoria iniziali.
- All'interno di questi circuiti vengono effettuati tutti i calcoli balistici per portare la palla nella posizione finale (cioè all'altezza del bordo, traiettoria verso il basso).
- La posizione finale e la traiettoria della palla vengono quindi utilizzate per determinare se il tiro “scivola” come definito in precedenza.
- Una variabile categoriale "makemiss" è impostata su "Make" o "Miss", a seconda del risultato calcolato.
- Tutte le variabili vengono memorizzate nella tabella dati per questa particolare combinazione di velocità iniziale e traiettoria iniziale, inclusa la variabile makemiss.
- Infine, una volta completati tutti i calcoli e memorizzati i risultati nella nuova tabella dati, traccio la finestra operativa velocità rispetto alla traiettoria e aggiungo uno script alla tabella dati per ricreare facilmente il grafico.
Una volta terminati i calcoli, la tabella dati contiene tutti i risultati, che possono quindi essere tracciati. Ho eseguito il codice per i seguenti casi:
Caso
|
1
|
2
|
|
|
|
Altezza iniziale, ft
|
6.5
|
8.5
|
|
|
|
Velocità iniziale, fps
|
|
|
Il più basso
|
20
|
20
|
Più alto
|
50
|
50
|
Incremento
|
0,05
|
0,05
|
|
|
|
Traiettoria iniziale, gradi
|
|
|
Il più basso
|
35
|
35
|
Più alto
|
89
|
89
|
Incremento
|
0,05
|
0,05
|
Ciò ha prodotto due tabelle di dati, una per ciascuna altezza iniziale e ciascuna contenente quasi 650.000 righe (una per ciascuna combinazione di velocità iniziale e traiettoria).
(Nota: ciascuno di questi casi ha richiesto circa due minuti per essere completato sul mio laptop.)
Uscita della finestra di tolleranza del tiro libero
Volevo vedere la "finestra del tiro libero", che mostrava un diagramma a dispersione della velocità iniziale rispetto alla traiettoria iniziale, con punti codificati a colori in base al successo o al fallimento. Questo può essere fatto facilmente nel Costruttore di grafici in JMP . Parliamo della finestra di tolleranza della “persona alta”:
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 PlayerFigura 6: Finestra di tolleranza del tiro libero per il giocatore alto La regione blu nel grafico sopra mostra le combinazioni di velocità iniziale e angolo iniziale richieste affinché una persona alta esegua un tiro libero. Tieni presente quanto segue:
- A basse velocità (22-24 fps), l'angolo per effettuare uno scatto è relativamente basso. Questo ha senso, poiché tirare un tiro morbido con una traiettoria alta non arriverà a canestro.
- Ad angoli elevati (superiori a 70 gradi), la velocità iniziale deve essere elevata. In questo caso stiamo sparando un tiro molto alto. (Infatti, quando l’angolo si avvicina a 90 gradi, la velocità iniziale sale verso l’infinito.)
Se espandiamo il grafico sopra per enfatizzare la regione a bassa velocità:
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 PlayerFigura 7: Zoom sulla finestra di tolleranza del tiro libero per il giocatore alto
Ora possiamo vedere meglio:
- L'intervallo di angoli richiesti per effettuare un tiro, se il tiratore spara sempre alla stessa velocità iniziale (la linea gialla è un esempio).
- L'intervallo di velocità iniziali richieste per effettuare un tiro, se il tiratore spara sempre con lo stesso angolo iniziale (la linea verde è un esempio).
- Una tipica finestra di intervalli consentiti di velocità e angoli, se un tiratore è ragionevolmente coerente (il riquadro rosso è un esempio).
Confronto tra prestazioni brevi e alte
Ho combinato manualmente i risultati dei due casi di test (tiratori bassi e tiratori alti) in un unico grafico:
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 WindowFigura 8: Confronto tra la finestra di tolleranza ai tiri liberi dei giocatori bassi e quelli alti
Ora possiamo iniziare a vedere le differenze tra giocatori bassi e alti:
- I giocatori bassi devono tirare più forte e ad angoli più alti rispetto ai giocatori più alti (ovviamente lo sapevamo già tutti).
- Le due curve convergono all'aumentare dell'angolo di lancio (ha senso: entrambi i giocatori lanciano colpi molto alti, quindi l'altezza di partenza ha meno importanza).
- Generalmente, la finestra (cioè l'area blu) per i giocatori alti è leggermente più grande della finestra per i giocatori bassi (area gialla).
A questo punto mi sentivo abbastanza bene con la mia tesi, ma la visualizzazione del contorno aveva un comportamento strano. Si noti nei grafici precedenti (in particolare nella Figura 7), mentre si passa dagli angoli bassi a quelli alti, la curva blu sembra iniziare con una velocità di circa 22,5 fps, quindi una velocità accettabile scende leggermente all'aumentare dell'angolo, prima di aumentare nuovamente. Mi chiedevo se fosse reale.
Animare lo scatto
Per indagare sulla stranezza, ho scelto di osservare una persona alta che tirava tiri liberi a una velocità iniziale costante, variando solo l'angolo di tiro. Il movimento della palla è facile da calcolare (una semplice parabola), quindi ho calcolato la posizione xy della palla nel tempo per un dato angolo. L'ho ripetuto per diversi angoli, tutti utilizzando la stessa velocità iniziale e l'altezza di lancio di 8,5 piedi.
Ho scritto un secondo script (animation.jsl, anch'esso allegato a questo post) che generava questi dati e li memorizzava in una tabella dati JMP. Ho quindi utilizzato un grafico a bolle per animare i risultati (con ogni nuovo scatto leggermente spostato nel tempo) e l'ho archiviato in un file GIF.
La prima animazione mostra una persona alta (punto di rilascio a 8,5 piedi sopra il pavimento), che lancia la palla con una velocità iniziale di 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 TrajectoriesFigura 9: Animazione del tiro di un giocatore alto: velocità iniziale di 22,3 fps con diverse traiettorie iniziali
L'animazione sopra mostra una serie di tentativi di tiro, tutti con la stessa velocità iniziale, man mano che l'angolo di tiro viene modificato. (Ogni tiro è etichettato con l'angolo di lancio iniziale, in gradi.) Se l'angolo iniziale è troppo basso o troppo ripido, il tiro colpisce la parte anteriore del cerchio (quindi è considerato un "mancato" poiché non ha "swish". ”) I colpi verdi sono "Make" e i colpi rossi sono "Misses". Se l'angolazione è giusta, la palla attraversa il canestro senza ostacoli.
Tuttavia, se aumentiamo leggermente la velocità iniziale (a 22,4 fps), otteniamo questa animazione:
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 trajectoriesFigura 10: Giocatore alto, velocità iniziale 22,4 fps, diverse traiettorie iniziali
Anche in questo caso vediamo che se l'angolo è troppo basso o troppo ripido, la pallina tocca la parte anteriore del cerchio. Tuttavia, vediamo anche che in realtà ci sono due regioni di angoli iniziali che risultano in un “make”, separate da una regione in cui la pallina colpisce la parte posteriore del cerchio. Questo è stato un risultato inaspettato e non l'avrei notato senza gli strumenti di visualizzazione inclusi JMP !
I dati reali supportano i risultati?
Basandomi sulle finestre mostrate nei grafici qui sopra, avevo la sensazione che un giocatore basso abbia più difficoltà a effettuare tiri liberi rispetto a un giocatore più alto. Naturalmente, ci sono molti dati che dimostrano se questo è vero o no.
Ho scaricato Player Height e Lifetime Freethrow Percentage per i giocatori NBA nati dopo il 1950, che hanno effettuato almeno 1000 tentativi di tiro libero nella loro carriera. Ho quindi tracciato l'altezza rispetto alla percentuale utilizzando la piattaforma Adatta Y per 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 attemptsFigura 11: Percentuale di tiri liberi rispetto all'altezza per i giocatori NBA nati dopo il 1950 con almeno 1000 tentativi di tiri liberi
Ahimè, la mia tesi dopo tutto non è dimostrata. C'è una tendenza abbastanza chiara per cui i giocatori bassi tirano con percentuali di tiri liberi migliori rispetto ai giocatori più alti. In effetti, se la mia tesi fosse vera, allora i giocatori più anziani come Rick Barry (che tirava i tiri liberi da sottomano) avrebbero avuto una percentuale molto bassa. (Barry ha tirato al 90,0% in tutta la sua carriera.)
Chiaramente, ci sono altri effetti in gioco. Alcune delle ipotesi del modello sono descritte in dettaglio sopra. Altri potrebbero includere:
- Tempo trascorso ad esercitarsi nei tiri liberi
- Coordinazione occhio-mano
- Motivazione (forse i giocatori bassi lavorano di più ai tiri liberi per compensare altre carenze in campo)
Conclusioni
Per parafrasare George Box, “Tutti i modelli sono sbagliati, ma alcuni sono utili”.
In questo caso, il mio modello potrebbe essere utile se provo a discutere il mio punto al pub locale. Ma chiaramente il mio modello balistico era sbagliato. Ci sono molti altri fattori in gioco che determinano la capacità di effettuare tiri liberi nel basket.
Immagino di dover ammettere che non sono poi così eccezionale come atleta. Spero comunque che il viaggio ti sia piaciuto e che forse ti sia venuta qualche idea su come JMP potrebbe rivelarsi uno strumento utile per le tue esigenze di esplorazione dei dati.
Nel frattempo… c cavolo, qualcuno??