Evaluating Shot Selection
Thanks to the innovation of Hoopdata
, and the creative work of Kirk Goldsberry
and others, shot location information has become a bigger and bigger part of the general basketball discussion. Even the most casual fan can now identify long-two pointers as the least efficient shots in basketball and corner-threes as an important offensive weapon. The ideas haven’t just permeated the consciousness, the data has as well. With a simple search at Hoopdata, Basketball-Reference
or several other sites, you can find information on who shoots from where and how effective they are.
Over the past few years I’ve used this data for some offensive analysis that I called Expected Scoring. By looking at shot location data for all players in the NBA we can calculate the average points scored on shots from different locations. Obviously each shot can only result in 0,2 or 3 points, but by dividing the total number of points scored by the total number of shots from each location we arrive at an average per shot value. Using this expected point value for shots at the rim, three-pointers, and everything in between gives us a different dimension to measure the offensive efficiency of a player. In the past my Expected Scoring work used those expected point values to calculate how many points per 40 minutes a player should be expected to score given their shot selection. We could then compare that expected total to their actual total to see how reliable their overall shooting was compared to the league averages.
I want to use that same basic idea today, but to take it in a different direction. What I’ve calculated is something called Expected Points Per Shot. I’ve used the same techniques for my calculations but I’ve dialed it down from per 40 minutes to per shot. What Expected Points Per Shot (XPPS) gives us is an objective way to evaluate and compare a player’s shot selection to that of his peers.
XPPS is calculated by multiplying the number of shots from each location by the expected value of shots from that location, adding that product to the product from all other locations, and then dividing by the total number of shots. A player who takes a lot of their shots at the rim, or from behind the three-point line, will have a higher XPPS because those shots have a higher expected value. I’ve taken my underlying statistics from Hoopdata so I’m using their breakdown of shot locations – At the Rim, <10ft. , 10-15ft. , 16-23ft. , Three Pointers. I’ve also included free throws in my numbers. I used the standard modifier of 0.44 to arrive at the number of free throw attempts and made free throws that resulted from shooting fouls, eliminating and-1s and free throws from technical fouls.
I’ve created a Tableau visualization to display the results:
The meat of the visualization is in the center. Each player is charted by their XPPS and their Actual Points Per Shot. You can hover over a player’s mark to see the actual numbers. Players above the black line have an Actual Points Per Shot that is greater than their XPPS, meaning they are more efficient than an average player would be with their shot selection. Players below the black line are the opposite, less efficient than an average player. There are a lot of marks clumped closely together so you can use the filters below the center graph to hone in on what exactly you’re looking for. You can filter by position, minutes played, field goal attempts per minute, or team.
The graph at the top also charts each player, separated out by team, and shows the numeric difference between their XPPS and their Actual Points Per Shot. Players in green, above the line score at above average efficiency, players below the line in red score at below average efficiency. The table at the very bottom shows all the raw data for each player.
It’s easy to get caught up in the filters. If at any time you want to reset the chart, click the button at the very bottom of the visualization that looks like a circle with an arrow.
There is a lot of data in the chart, so I thought I would pull out some of the numbers that I found most interesting. Of players who have played at least 300 minutes and average at least 0.350 field goal attempts per minute, the most efficient shot selections belong to:
- Ryan Anderson | 0.979
- Marcus Thornton | 0.973
- Nikola Vucevic | 0.964
- Jameer Nelson | 0.953
- Paul George | 0.953
- Mike Conley | 0.952
- Caron Butler | 0.951
- Raymond Felton | 0.950
- Trevor Ariza | 0.948
- Ersan Ilyasova| 0.946
Here’s what that group looks like when calculate the difference between their Actual Points Per Shot and their XPPS:
- Ryan Anderson | +0.167
- Marcus Thornton | -0.003
- Nikola Vucevic | -0.050
- Jameer Nelson | -0.040
- Paul George | -0.053
- Mike Conley | +0.126
- Caron Butler | +0.059
- Raymond Felton | +0.001
- Trevor Ariza | -0.160
- Ersan Ilyasova | -0.205
Looking at just these ten players we can see a trend that carries throughout the data – a player’s XPPS often differs drastically from the actual number of points they score. I think the explanation here is fairly simple. Some players are just plain struggling this season; see Ilyasova, Ersan. But for other players their own skills and abilities mean that an what is an efficient shot for the rest of the league is not necessarily an efficient shot for them. For example, just because three-pointers have a high expected value doesn’t mean Dwight Howard should start taking them. At some level measuring an efficient shot selection is an individual affair and has to take into account the player’s own abilities.
I tried to adjust for this by creating an Individual XPPS. To do this I calculated the expected point value for each player from each location by using their own shooting percentages. For example, a shot at the rim has an expected point value of 1.208 league-wide. But if a player has shot 4-10 at the rim this season I used 0.800 (8 points/10 shots) as their expected value. I did not include this calculations on the graph but you can find them in the table at the bottom of the visualization along with the Individual Difference (IXPPS – IAPPS) and their Shot Selection Difference (IXPPS – XPPS). When we use those values to calculate XPPS, and the same minute and shot attempt filters our new top ten looks like this:
- Ryan Anderson | 1.111
- Serge Ibaka | 1.053
- Ray Allen | 1.050
- Ben Gordon | 1.023
- Patrick Patterson | 1.022
- O.J. Mayo | 1.021
- Mike Conley | 1.019
- Randy Foye | 1.009
- Caron Butler | 1.004
- LeBron James| 0.994
These players jump up the list because they are not just taking good shots, they’re making them. Since a player’s actual shooting percentages are a part of the calculation this adds another layer to objective comparisons – a three-pointer for O.J. Mayo is worth more than a three-pointer for Paul George because Mayo is more likely to make it.
There’s a lot to dig in to here and I hope to use these numbers for some more analysis in the future, so check back in soon.