NBA-goat (part 1)
To find the greatest-of-all-time using statistics. I started this project to explore different methods for estimating relative skill of NBA teams. My inspiration was FiveThirtyEight.com’s CARMElo system. The aim is to dive-deep into every method, derive the update equations and discuss the pros and cons. I intend to cover the following methods:
- Elo and common extensions.[DONE]
- Assumed Density Filtering.[IN PROGRESS]
- Expectation Propagation(given that this NBA data has already ocurred and can be used for batched inference.)
- Extensions to EP(score difference).
The complexity of methods increases according to the standard, universally accepted W3D difficulty rating system. You have been warned.
A note about the notebooks.
I wrote this tutorial before I was aware of hackmd.io. At the time, I would write massive Jupiter notebooks with all the math, code and figures. The nbviewer link will take you to the rendered notebook - this is the recommended way of viewing the project. The 2nd cell of the notebooks contains some javascript which hides all the input code cells for a pleasant reading experience. If you’re interested in the code, then please click on the here link in the 2nd cell.
Part 1. Elo:
https://nbviewer.jupyter.org/github/priyamtejaswin/nba-goat/blob/master/nb-elo_vanilla.ipynb
- Tracking NBA franchises through changes in names and cities.
- Explain Elo with its core assumptions and apply the vanilla Elo on nba data.
- Extend the base model to account for score difference(mov-Elo).
- Extend the base model to account for home-court advantage(hca-Elo).
- Finish with interactive visualisation of Warriors and Bulls.
- Discuss and segue to ADF and TrueSkill.
Scroll down to the last cell for an interactive visualisation for two of my favorite teams!