LorenzoCapra / EffectiveAssistValue

0 stars 0 forks source link

EAV per 36 minutes #2

Open LorenzoCapra opened 11 months ago

LorenzoCapra commented 11 months ago

L'idea di questo risultato è quello di standardizzare la statistica sui minuti giocati per partita da ciascun giocatore. Questo è utile e per spiegare il perché faccio un esempio:

il giocatore X ottiene 10 EAV e gioca 36 minuti a partita, mentre il giocatore Y ottiene 7 EAV e gioca 18 minuti a partita. Se venisse guardata la statistica solo nel suo valore assoluto, il giocatore X sembrerebbe fare meglio, quando in realtà la sua produzione è maggiore semplicemente perché resta più tempo in campo (questa è ovviamente una semplificazione che assumeremo vera). Standardizzare per 36 minuti significa semplicemente interpolare linearmente la statistica assumendo che ogni giocatore giochi 36 minuti: per il giocatore X in questione questa interpolazione conferma solamente lo stesso valore di 10 EAV, in quanto X gioca esattamente 36 minuti di media. Per il giocatore Y invece l'interpolazione ritorna un valore di 14 EAV per 36 minuti.

Spero che questo esempio abbia chiarito il significato e l'utilità di questo nuovo risultato. A questo punto riporto gli step necessari per calcolare questo nuovo risultato, partendo dal fatto che abbiamo l'EAV medio a partita per ogni giocatore nella cartella data/PLAYERS_22_23:

gCass commented 11 months ago

C'è un problema: il campo MIN che ci hai indicato non credo contenga i minuti medi a partita, ma i minuti complessivi giocati dal giocatore a stagione a occhio. Ad esempio c'è Aaron Gordon che ha giocato 2055.1066666666666 minuti. Per calcolare velocemente il numero di minuti medi a giocatore c'è il campo 'GP' che dovrebbe essere 'GAME PLAYED' per avere il numero di partite giocate a giocatore. Ho controllato con il sito di sky che fosse coerente con i dati scaricati ed è corretto.

Ho quindi usato avg_min = MIN / GP per ottenere i minuti medi a giocatore. Dopodiché visto che hai assunto che ogni giocatore in media gioca 36 minuti ho calcolato il fattore per aumentare l'eav medio nel seguente modo: *eav_corrected = (36 / avg_min) eav_avg**.

Dove 36 / avg_min serve a aumentare l'eav_avg perché il giocatore ha fatto meno di 36 minuti medi, od ad abbassarlo perché ha fatto di 36 minuti medi a partita.

Dimmi se ti torna.

Un'altra cosa: dai dati che ho scaricato dall'endpoint che hai indicato ho scaricato più giocatori di quanti tu ne abbia. Tu hai filtrato in qualche modo i giocatori?

LorenzoCapra commented 11 months ago

Ottimo problem solving, direi che hai calcolato bene la statistica. Per quanto riguarda il numero di giocatori, ho filtrato per games played, in modo da evitare outliers di chi gioca una sola partita e fa il fenomeno. Dovrebbe bastarti filtrare per "GP>41", dove 41 sta ad indicare metà delle partite in una stagione. Facendo girare il codice, mi sembra che nel .csv finale che esce, alcune entries siano mancanti (tipo alcune righe non hanno il nome del giocatore). Se riesco ci guardo, però lo scrivo giusto per tenerne traccia.

UPDATE: di fatto le righe senza giocatore erano quelle associate ai giocatori che hanno giocato meno di 41 partite, che si riempiono di nan quando hai fatto merge dei due dataframe. Perciò ho solamente aggiunto nel codice un filtro su GP per ripulire il .csv

gCass commented 11 months ago

Perfetto. Ci do un'occhio per confermare e poi se sei d'accordo questo task è chiuso. Non ho fatto la classifica nel codice ma solo prodotto il CSV con cui fare i confronti. La classifica la farei in un notebook a parte dove costruisci tutte le osservazioni che vuoi fare