What is an assist worth?

The percentage of assisted field goals by a team is usually a good indicator of the way the team generates offense (e.g., through team work – vs – personal moments of inspiration). Apart from the team spirit present when field goals are assisted they also tend to be better quality (i.e., open) shots, as compared to off-the-dribble shots that many times are forced, contested attempts. Given these differences can we get an estimate on how we could potentially divide the credit between passer and shooter?

To explore this we used a detailed shot dataset that includes information such as touch time prior to shot, dribbles prior to shot, distance of closer defender etc. One information missing is whether the shot was assisted or not. However, we can estimate whether a shot is a pull-up or a catch-and-shoot (i.e., assisted), by using the touch time and the number of dribbles taken before the shot. The following figure shows the fraction of shots from each court zone that are assisted.

Screen Shot 2019-02-28 at 11.34.29 PM.png

As we can see three point shots – and in particular corner 3s – are shoots taken after a pass more than 90% of the time! In fact, this is what it seems to mainly drive their higher efficiency, rather than the closer distance to the hoop. We also calculated the average distance of the closest defender for assisted and unassisted shots and as we can see from the following figure, assisted shots are in general more open.  In particular, the average distance for the closest defender of an assisted shot is 40% further as compared to the case of an unassisted shot (both the t and Kolmogorov-Smirnov tests reject the null).

Screen Shot 2019-03-01 at 12.06.45 AM

So what are the differences in FG% between assisted and unassisted shots per zone? The following zone presents the results, where we also present the p-value from the z-test for proportions.

Screen Shot 2019-03-01 at 3.40.44 PM.png

As we can see in all cases, assisted shots have better chance of going through the net regardless of the court location. Given that midrange shots are assisted in the lowest possible rate, could that be the driving force behind their inefficiency? The short answer is no. Even if all shots from the midrange were assisted, their expected points per shot would still trail that of …unassisted threes. The following court map shows the expected points added (over unassisted shots) per assisted shot for each court zone.

Screen Shot 2019-03-01 at 3.46.58 PM.png

Where is the most value added? Well, in the most efficient locations to begin with, threes and in the restricted area. The “rich-gets-richer” in these locations with some help from teammates. What do all these tell us? Well, we can use the expected points added (over an unassisted shot) from a location to try and divide the credit of an assisted bucket between the passer and the shooter. Let’s assume that an unassisted shot from location \mathcal{L} provides p_u points per shot, while an assisted shot provides p_a points per shot. Then a simple way to divide the credit between the shooter and the passer for an assisted bucket from \mathcal{L} is to assign:

\beta_{\mathcal{L}} = \dfrac{p_a-p_u}{p_u}\cdot P(\mathcal{L}) points

to the passer, where P(\mathcal{L}) is the points earned from location \mathcal{L}. Hence, the shooter is credited with (1-\dfrac{p_a-p_u}{p_u})\cdot P(\mathcal{L}).  This can also be personalized to pairs of passer-shooter players but then you might run into problems with noise.  For some players with small numbers of shot attempts, there can be a lot of noise in the FG%. With the above approach, you might end up with negative point value for the assist (of course a player could indeed be better at pull-up shots compared to catch-and-shoot in which case I guess he should take the whole credit (?))!  In these cases, Bayes is our best friend, since we can use a prior to alleviate this problem. The prior can be the league-wide percentage increase from an assist in a zone (or any other choice). We can also use Bayesian average for the points per shot directly, similar to the way we used it for lineup ratings. For example, if player i has a \beta_{\mathcal{L}, i} = -0.1\cdot P(\mathcal{L}) points in 15 total shots, while the league-average is \beta_{\mathcal{L}} = 0.05\cdot P(\mathcal{L}) points in 48 shots (our prior), then we can adjust \beta_{\mathcal{L},i}, to:

\beta_{\mathcal{L},i,post} = \cdot P(\mathcal{L})\cdot \dfrac{(-0.1\cdot 15) + (0.05\cdot48)}{15+48}=0.018\cdot P(\mathcal{L})

Of course, more advanced approaches could be used that account for the exact locations of players, the progression of a possession etc., but a simple division of credit like the above can cover a long distance.

The code for this analysis can be found at my github page.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s