Comparing NBA Teams from Different Seasons
The game of basketball has changed drastically over time. What if one wanted to compare two teams from different seasons?
One of the first challenges I faced when building an accurate NBA Game Simulator was a simple idea any sports fan could tell you: teams will generally have better stats against bad teams and worse stats against good teams. If I were to simply use a simulator that took the a team’s season average shooting tendencies and percentages, my simulation would miss the ball on how good/bad a team is relative to the opponent. To combat this issue, I decided to take the offensive rating of a team and compare it to the opponent’s defensive rating (and vice versa).
Exploratory Data Analysis
After some exploratory data analysis, there was one major issue with this approach: the game of basketball has changed significantly over time, and the offensive/defensive rating is calculated by the number of points scored/allowed per 100 possessions. Over time, these values have increased significantly, as can be seen in the following graph that shows points scored per 100 possessions over time:
The Solution:
If I were to take the raw offensive and defensive ratings from each team, I would therefore be overvaluing teams’ offense from recent years, and also overvaluing teams’ defense from early NBA seasons. To solve this, I came up with the following solution: by comparing a team’s offensive/defensive ratings to the mean points scored per 100 possessions in a given year, I could get how strong a team was relative to the rest of the teams that year. That way, offensive and defensive “score” (as I’m calling this variable) would be a much better representation of how a team’s offense and defense compared to the rest of the league in the given year. I would treat a quotient of one team’s offensive score divided by the other team’s defensive score as a multiplier when simulating shooting percentages, to account for the natural difference in offensive and defensive skill between the two teams.