The world’s leading publication for data science, AI, and ML professionals.

Evaluating the Effectiveness of the Benches of NBA Teams

For every game played, each NBA team's roster has up to 15 players officially listed. However, even among those 15 players, who…

Looking at which NBA teams’ benches underperformed and outperformed expectations in the 2019–2020 NBA season.

Photo by Markus Spiske on Unsplash
Photo by Markus Spiske on Unsplash

For every game played, each NBA team’s roster has up to 15 players officially listed. However, even among those 15 players, who individually are some of the best Basketball players in the world, it is no shock that they each have different levels of responsibility when it comes to contributions to the team. A very basic heuristic to define the roles of the players on a team is to look at the "starters" versus the "bench players." In professional basketball, a team can have five players on the court at a time. "Starters" (or the "starting lineup") are the five players who are on the court at the very beginning of a game. Usually, these are the team’s best five players at each of the five positions, and sometimes, the starting lineup can be made up of the team’s best five players overall. Starters also tend to be the players who play the most minutes in a game. Starting lineups can vary from game to game, but for the most part, teams like to keep them pretty consistent, which is why we can distinguish the starters from the "bench" (the players who aren’t starters). Even among bench players, some players have more responsibility and get more playing time (e.g. the"sixth man") and others aren’t as important in the lineup from game to game. When it comes to my analysis, I wanted to look at which benches in the NBA underperformed versus outperformed expectations, and which benches contributed more to their teams in comparison to benches of other teams (adjusted for a team’s success).

Data

To perform this analysis, I need a way to measure team success and player contributions. To measure team success, I look at the team’s number of wins in the regular season, and to measure player contributions, I look at an advanced statistic called "win shares."

Team Wins

This is basically the number of games that a team wins in the regular season. Barring extraordinary circumstances (like we saw with the COVID shutdown in 2020), NBA teams usually play 82 games in the regular season, and games can either result in wins or losses. Here are the top 10 NBA teams in the 2019–2020 season listed by number of wins.

(Image by author)
(Image by author)

Win Shares (WS)

According to basketball-reference.com, "’win shares’ is a player statistic which attempts to divvy up credit for team success to the individuals on the team." From now on, I will abbreviate "win shares" as WS. For this analysis, I scrape data from basketball-reference.com, so I will be using their definition of WS, which means that one team win translates to roughly one WS (it’s not exactly one in the basketball-reference definition so WS can be awarded for exceptional performances in losses as well). This means that a team with 50 wins on the seasons will have roughly 50 WS. The sum of the players’ WS in a season is equal to the team’s WS for that season. WS is a statistic that is based on individual and team performance in comparison to the performance of other teams and players. The full definition of WS is given here. It is important to note that WS is a cumulative statistic, so between two players who play on similar teams and have similar contributions to those teams, the player who plays more minutes will likely have more WS.

In order to roughly compare these players, we use "win shares per 48" (I will henceforth refer to it as WS/48). It is pretty self-explanatory: you take the total WS that a player has amassed, divide by the number of minutes the player has played, and multiply by 48. This attempts to estimate how many WS a player would contribute in a single game, given that an NBA game lasts 48 minutes. Below, I have listed some all-time and 2019–20 WS and WS/48 leaderboards to help make the concept a little clearer.

All-time NBA WS leaders (image by author via basketball-reference.com)
All-time NBA WS leaders (image by author via basketball-reference.com)
All-time NBA WS/48 leaders (image by author via basketball-reference.com)
All-time NBA WS/48 leaders (image by author via basketball-reference.com)
2019–20 NBA WS leaders (image by author via basketball-reference.com)
2019–20 NBA WS leaders (image by author via basketball-reference.com)

It must be noted that WS and WS/48 should not be considered comprehensive metrics to compare NBA players. For example, no disrespect to the great Neil Johnston, but there is no way I’m picking him over LeBron James, even though he has a higher all-time WS/48. There are definitely other metrics that can be used to compare players, including "Player Efficiency Rating" (PER) and "Box Plus-Minus" (BPM), and sometimes even simple box score comparisons can suffice. Also, many aspects of the game of basketball aren’t captured by both basic and advanced stats. However, these aberrations definitely balance out when it comes to comparing a group of players or entire teams, which is why we can use this analysis to compare the bench squads of different teams. For example, below I have shown the scatter plot of team wins versus team WS for the 2019–2020 NBA season.

(Image by author)
(Image by author)

Methodology

Now that we have an idea of wins and WS, we need a way to define who our "bench players" are, especially given that lineups can differ from game to game. Here are the metrics that I use to filter out the "starters" and get the bench players. These are definitely somewhat arbitrary, but I think they do a good job of differentiating between players who start games more often versus those who come off the bench.

  1. First of all, I filter out the top five players on each team in terms of the percentage of games started, which is just the number of games a player started divided by the total number of games that player played.
  2. Afterward, I filter out any other player who started more than (>) 70% of the games he played in.
  3. I then filter out any players who have played at least 85% of the season and started in more than (>) half (50%) of those games.
  4. I then filter players who have played at least half (50%) of the season and started in more than (>) 60% of those games.
  5. The rest of the team is defined as the "bench" for that team.

For example, here are some of the rosters from the 2019–20 NBA season, along with a list of those rosters after applying these filters.

2019–20 Los Angeles Clippers (image by author)
2019–20 Los Angeles Clippers (image by author)
2019–20 Los Angeles Clippers bench (image by author)
2019–20 Los Angeles Clippers bench (image by author)
2019–20 Toronto Raptors (image by author)
2019–20 Toronto Raptors (image by author)
2019–20 Toronto Raptors bench (image by author)
2019–20 Toronto Raptors bench (image by author)
2019–20 Atlanta Hawks (image by author)
2019–20 Atlanta Hawks (image by author)
2019–20 Atlanta Hawks bench (image by author)
2019–20 Atlanta Hawks bench (image by author)

Analysis

Using the data that I have, I perform two different kinds of analysis. The first is an Ordinary Least Squares (OLS) linear Regression of wins versus WS, where wins is the independent variable (x) and WS is the dependent variable (y). In vernacular, this is known as the line of best fit. The second analysis is the OLS regression of wins versus WS/48. The first regression doesn’t take into account minutes played and gives a general sense of which teams utilize their benches more as compared to others. The second analysis provides insight into which benches are outperforming their expectations adjusted for overall team performance. To determine the idea of "outperforming" and "underperforming," I look at the residuals, which is just the difference between the observed and the expected value of bench win shares for that team (expected values lie along the regression line) given the number of games that the team has won.

Results

Both analyses gave some very interesting results, and these results mostly matched my intuition of what the most recent NBA season’s teams look like. Here are the tables and the regression results from the 2019–20 NBA season.

(Image by author)
(Image by author)
(Image by author)
(Image by author)
(Image by author)
(Image by author)

The first table is sorted in descending order based on the residuals of WS. The teams with the highest positive residual utilized their benches more than expected, and these benches were a lot more important to the teams’ success than the benches of other teams. This makes sense looking back at the 2019–20 NBA season. For example, the Los Angeles Clippers had two Sixth Man of the Year finalists (finalists for the award for the best "sixth man" in the NBA), so it makes sense that they would be close to the top in terms of bench importance. However, the Clippers bench WS is inflated by the fact that some of the Clippers bench players played a lot of minutes, so that definitely overstates how much they seem to outperform the average NBA bench. This is shown in the WS/48 regression, where the Clippers bench only has a small positive residual. Also, some of the teams that I thought were really top-heavy, including the Portland Trailblazers, in which starters like Damian Lillard and CJ McCollum generate most of the offense, and the Houston Rockets, in which the entire offense is centered around James Harden, who is in the starting lineup, are also at the bottom of the list. Also, I just wanted to give a shoutout to one of my favorite Chicagoans, Derrick Rose, who came off the bench for the Detroit Pistons this past year!

It’s really important to note that this is not a ranking of how effective or how strong the bench rosters are, but rather how much they contribute to their team’s success. Would I rather have the New York Knicks bench roster rather than that of the Los Angeles Lakers: of course not. But the Knicks bench was relatively more important to the team’s success (albeit very little of it) than that of the Lakers, at least in the regular season.

Conclusion

There are definitely some ways my methodology can be improved. First of all, the analysis could be made more accurate if I looked at the actual lineups for each individual game. For example, if a regular starter gets injured, some of the bench players would have to fill in until the starter comes back to full health. In this case, the WS that they garner during these games should go towards the starters WS rather than the bench WS. Also, teams just like to experiment with different lineups a lot of the time. Unfortunately, it would probably be very computationally intensive to request webpages for every single player from every single game and then calculate WS, but my filters provide a rough estimate of the bench players throughout the entire season.

When it comes to generalizing these results, I thought of whether or not they could have any predictive power. Obviously, we shouldn’t predict a team’s success in subsequent seasons based on how important its bench is. However, this analysis could definitely be important in the offseason, when general managers and the basketball operations teams of NBA franchises are evaluating what roster changes should be made. It could also be useful to the training staff and coaches regarding where to focus player development efforts. Overall, I just think it’s a cool way to get a sense of the dynamics of different NBA teams and validate your intuition about what you see happening on the court.

Misc.

I’ve also started pushing the Python scripts of my research projects to a public repository on Github linked here! These scripts are in .ipynb files, so you would have to open them using something like Jupyter Notebook or Google Colab. Also, feel free to contact me on Facebook or LinkedIn if you want to discuss any of my projects and other research ideas, or if you want me to run the results from a different NBA season. I would also love to talk basketball in general. Catch y’all in the next one!


Related Articles