Distributional Analysis of Free Throws and the Denver Nuggets

In possession models and analytics such as RAPM, the ability to count free throws is crucial. Any miscalculation in computing free throws can result in an unintended dire consequence. In the case of a possession, a team’s possession may be calculated with bias and therefore comparing two teams using per possession stats becomes a flawed experiment. Similarly, the failure to compute accurately capture free throws within stints may result in a drastic change in stint calculations; as RAPM is highly sensitive to its input.

This begs the question: how do we begin to understand free throws? In a game of highly mixed variables and interactions, the free throw is effectively the only isolated part of the game. No defender can contest a free throw. A shooter is granted enough time to collect their thoughts and perform all shooting mechanics they deem proper. But yet, leveraging the free throw in analytics becomes one the most tedious inclusions on offense.

In this article, we focus on the distributional analysis of free throws for the 2017 NBA season, with a primary focus on the Denver Nuggets. Here we will identify how players obtain their free throws and what this means for some advanced computations. Furthermore, we will also identify how the Nuggets compare to a rival, the Utah Jazz.

Free Throws – How They Muddle the Analytics World

To see how free throws become a burden in analytics, let’s consider a simple exercise. Suppose that we are interested in computing the number of possessions in a game. For a given possession, further suppose that there are ten specific players on the court. For that given possession, suppose finally that a foul has been committed and one team goes to the line to shoot two free throws.

Scenario One: No Substitutions, Last Free Throw Made

In this scenario, we have effectively the null possession. This doesn’t mean no possession, but rather the no change possession. This indicates that the possession is recorded and the associated possession statistics are logged. In the end we obtain that the defense is down at least 1 point, the offense is up at least 1 point, and there was one possession.

Scenario Two: No Substitutions, Last Free Throw Missed, Defensive Rebound

This scenario is no different than the previous scenario. The exception is that the defense is down at most 1 points, the offense is up at most 1 point, and there was one possessions. This scenario and the scenario above are the easiest scenarios.

Scenario Three: No Substitutions, Last Free Throw Missed, Offensive Rebound

This time, things get a little wonky. The nice thing here is that the players on the court are still the same. This comes down to adequately counting possessions. Since there was an offensive rebound, the possession continues. This means we are currently holding a possession stat counter that did not wrap up and therefore we have that the defense is down at most one point, the offense is up at most one point, and there are zero possessions recorded at the moment.

Scenario Four: Substitutions Made, Last Free Throw Made

In this case we have that a substitution is made. This situation is actually simpler than scenario three, but requires a little bit of data wrangling to compute. In this case, the free throws are made with different personnel on the court. If we take a straight possession logger, this means the free throw that came from the previous stint is now being included with the new stint; a stint that had nothing to do with the foul in the first place.

To correct this and toss the free throw onto the previous stint, we merely look at the time of the free throws and the substitutions. Since no time expires on the clock between free throws, we can group all actions at that time and re-order substitutions to occur after all free throws. No harm, no foul (except the one that led to the free throws) in data management, statistical computing.

In the end, the stints get their correct points, and the one possession is logged for the previous stint with zero in the current stint.

Scenario Five: Substitutions Made, Last Free Throw Missed, Defensive Rebound

Here is where things start to get tricky. As the defensive rebound comes after the substitutions are made, the defensive rebound is logged with the new stint. This means that there will be more rebounds than possible rebound opportunities for this given stint. That’s not the major problem. the major problem comes from possession counting.

Since a defensive rebound was collected, the possession terminates at the defensive rebound. This means that the stint prior was given a possession; as points were possibly scored, fouls were committed on that possession… and the new stint was given a possession as a defensive rebound was obtained. This means that the possession is double counted. All thanks to a free throw.

Scenario Six: Substitutions Made, Last Free Throw Missed, Offensive Rebound

In the final scenario, we have the identical problem of double counting possessions as the previous scenario; however this time the possession continues as if the possession is a wholly new possession. This means the “double counted” possession is no longer just a defensive rebound. It is now an offense rebound with possibly another field goal attempt and points scored.

Possession Counting Gets Tricky

What scenarios five and six show is that possessions do not partition a team’s total number of possessions. We can attempt to fix this with things such as partial possessions per stint. However, a new question that arises is: What percent of a possession is a defensive rebound? In this case, we merely accept that partitioning is failed and that some possessions may have more rebounds than possible.

What this really does is bias the possession calculations for players. For instance, if I wish to compute the True Shooting Percentage of a player, do I use the double counted possessions or do I use the team possessions? In the calculation of TS%, we actually we the league possessions by using a 0.44 factor generated by the league. And we know for certain that if a team’s possession counts don’t partition; the league certainly doesn’t either. That’s not fair to players who don’t meet that 0.44 criteria…

So Let’s Do this as a Per Possession Technique By Counting

To correct for this, we should really look at per possession per player type statistics. For instance, how do we correct a player’s TS%? Recall that TS% is merely the number of points per possession with scoring opportunity. If the player gets two free throws, that’s a possession. If a player gets three free throws, that’s a possession. If a player gets an and-one, that’s not a possession; as the player already scored and the possession is tallied in FGA.

If the shot is a technical, that’s debatable. Ideally, it should be treated as an and-one. However, if a player shoots only a technical and nothing else, their true shooting percentage is infinity. As it’s one point divided by zero possessions. However, the other way, it is sen as one point divided by one shooting possession; which biases their true scoring output per possession. This would indicate that no player would ever want to shoot technical free throws as it harms their stats; which is a ludicrous notion. In light of this, I cross my fingers and hope there is no magical 0 FGA, 1 FTA, 1 Tech FTA player out there and run with the former method of calling technical FTA’s as no possession.

Free Throw Distributions

Armed with the definition of what constitutes a possession with respect to free throws, we take to task on building a counting methodology to look at the distribution of free throws. This will help us in understanding how possessions are calculated, and more importantly, how teams get to the foul line.

Recall that a distribution is casually defined as the values a random variable takes and how often it takes those values. Here, the number of free throws is the random variable. That values it can take are either 1, 2, or 3. There are no situations in the NBA where four or more free throws are awarded. Instead, if a player obtains four consecutive free throws, it is due to situations where multiple technical fouls are assessed; and these are seen as +1’s and no possessions. The how often is simply the relative frequency of the attempts.

Python Computing

This is a simple task in either Python or R. Using play-by-play logs, we are able to walk through every game and check for free throw attempts. Fortunately, there is an out-of variable that identifies the number of free throws taken. We can key off this variable and look at the player shooting the foul shots in the player column.

Screen Shot 2017-10-12 at 9.32.41 AM

The variable playsFile is simply the play-by-play log. The variable freeThrows is the dictionary of players who attempted free throws for a particular team in the season. The variable team is the team of interest. Here, we just open the play-by-play file, check each line, or action, of the file and look to see if there is an ‘outof’ in the action. If there is content, we check to see if the team is out team of interest, extract the player and either add them to the dictionary if they are new or append their number of free throws.

Note: In doing this, we will double count all two-attempt free throws and triple count all three-attempt free throws. So we must remedy this. But for the time being, we output a dictionary of players with a list of their free throw attempts for the season.

Screen Shot 2017-10-12 at 9.36.18 AM.png

Now that every game is logged, we can walk through the dictionary and create the stats of interest. Here, we are interested in several factors. First, we build the histogram for each player in the variable hist. This returns a dictionary of player and their respective counts for 1’s, 2’s, and 3’s for free throws.

Next, we initialize five variables. The variable meanAll will compute the mean number of free throw attempts per possession on all free throw types. This is the biased calculation are all 1’s free throws are either discounted or tacked onto other possessions. The variables adds looks at the number of free throws attempted for all possession free throws. The variables mean computes the average number of possession free throw attempts per possession free throws. The variable meanCorr computes the number of free throw attempts per possession free throw attempts. Inverting meanCorr is what yields the correction factor for possessions.

Application to the Denver Nuggets

Applying this to the Denver Nuggets, we obtain the distribution of free throws for the 2017 season.


For the 2017 NBA season, the Nuggets attempted a total of 1986 free throws. Of these 1986 free throws, only 858 were free throw possession ending free throws. This identifies as a possession correction factor of 0.4320. This is a difference of 16 possessions for the Nuggets between counting and estimating using the 0.44 value. Due to this, TS% is actually lower the truth for the entire team.

Screen Shot 2017-10-12 at 9.55.55 AM

Free Throw Distribution for the 2017 Denver Nuggets

Recalling that possessions do not aggregate to the team level, we can focus on each player individually. For instance, Jamal Murray managed to get to the line 69 times for a total of 120 free throws. Of these 69 trips, only 46 of these trips were actual free throw possessions for Murray. This indicates that Murray’s free throw correction factor should be 0.3833. By using the 0.44 value, Murray is overestimated at having an extra 7 possessions. In this case, his true shooting percentage is affected by 0.4% as it is listed as 51.80% and is in reality 52.22%. While this difference seems minuscule, is still is a bias. And this bias takes away from the fact that Murray gets to the line for and-ones at a much higher rate than any other player on the Nuggets roster.

For players that are alarmingly allergic to continuation fouls, such as Jusuf Nurkic, we see their correction factor benefit from the league. Nurkic managed 60 trips to the line for 113 attempts. With 1.883 free throws per trip and zero three point attempts, this is evidence that either Nurkic is unable to finish at the rim or refuses to shoot in tightly contested situations. Nurkic holds the team lead for lowest and-one rate with a meager 11.67% (minimum 50 FTA). Due to this, Nurkic’s correction factor is 0.4690. Therefore Nurkic’s TS% is increased by 0.5% from its listed 51.48% from its realistically 50.99%.

What this illustrates is that while both Murray and Nurkic have effectively the same estimated TS% of 51.80% and 51.48%, respectively, Murray’s TS% is actually 1.23% percent higher than Nurkic’s. And we can see part of the reason why the Bosnian Bear went on to Portland to improve the front court with Mason Plumlee.

Comparison to the Utah Jazz

If we compare the shooting distribution to the Utah Jazz, we can understand some differences between the teams with respect to getting to the line. Applying the same Python code above, but with a swap of team from DEN to UTA, we obtain the following distribution:


Here, we find that Trey Lyles is included, who is currently listed on the Denver roster for the 2018 NBA season. The Utah Jazz managed to take 2,132 free throws in the 2017 season; a total of 146 more than the Nuggets. The Jazz have an even lower correction factor than the Nuggets with 0.4254. This means that possessions are overestimated at a clip of 31 extra possessions. This this indicates is that the TS% for the Utah Jazz is even more biased in the negative direction than the Denver Nuggets.

The Nuggets managed a total of 238 and-one attempts and 32 three-point attempts. Compared to the Jazz, the Jazz found themselves with 41 more and-one attempts and a mere 7 more three-point attempts. This suggests that while the two teams are roughly the same about the perimeter with respect to drawing fouls; the Jazz are slightly more competent at drawing fouls and finishing at the rim (or in continuation). Please note that this includes the 11 extra Jazz playoff games. Despite this, the Jazz are still an and-one better per game than the Nuggets.

Screen Shot 2017-10-12 at 10.26.18 AM.png

Distributions look almost the same. However, the Jazz have 41 more and-1 possessions; 42 more two-FTA possessions; and 7 more three-FTA possessions.

This discrepancy is thanks in part to veteran guard George Hill and veteran wing Gordon Hayward, neither of which are on the 2018 Jazz roster. These two players found themselves in and-one (empty) possessions at a high 30.00% (Hayward) and 25.62% (Hill). Toss this in with Joe Johnson’s absurd 35.72% of free throw possessions being empty, and you realize why the Utah Jazz were so deadly on offense behind this trio of players. The highest of such rate on the Denver Nuggets? Jamal Murray with 33.33%, followed by Wilson Chandler (35-113) with 30.97% and Will Barton (26-105) with 24.76%. The difference here is that the Jazz’s top three yielded 822 FTA while the Nuggets’ top three yielded 504 FTA. This meant the Jazz are head and shoulders more efficient on getting to the foul line while scoring.

Furthermore, let’s consider the impact on the Jazz’ TS%. We can see the egregious with the effect on Joe Johnson’s TS%. For Johnson, his correction factor is 0.3910. In this case, Johnson is listed at having a 54.18% true shooting percentage. In reality, Johnson has a 54.49% TS%. This difference is minor due to Johnson only totaling 77 free throws during the regular season.

However, we see Derrick Favors benefit from the league 0.44 value. Favors managed a 0.447 factor. In this case, his 51.19% TS% puts him right in the mix with Jamal Murray’s 51.80% and Jusuf Nurkic’s 51.48%. Similar to Nurkic, Favors’ TS% is actually lower than it is listed: 51.10%. The difference is minimal; however it is lower than listed (biased) and switches from being worse than Nurkic to being truly better than Nurkic.

Let’s look at one more team.

Comparison to the Atlanta Hawks

The final team we compare is the Atlanta Hawks. The reason for this comparison is to show the stats for newly obtained Nuggets forward, Paul Millsap.


We make this comparison because we want to emphasize the difference between teams. Particularly, Dennis Schroder. Before we jump into analyzing Schroder’s characteristics, let’s summarize the Hawks. For the 2017 NBA season, the Hawks attempted a total of 2,213 free throws. However, the team was inefficient as they obtained a meager 239 and-one situations (same as the Nuggets in 230 more trips); yielding a correction factor of 0.4568. The reason for this? Millsap’s and Dwight Howard’s inability to score when being fouled. To be fair, in the case of Howard, Hack-a-Shaq techniques were used due to Howard’s low free throw percentage. Despite this, his liability on the foul line cost the Hawks dearly in free-throw shooting efficiency.

To put numbers to the cause. Millsap got to the line for and-one situations in only 18.73% of trips to the line. Similarly, Howard had a 16.94% trip. Combine these two together and the low percentages chewed up 901 free throws. Compare this to the Utah Jazz’s clip of roughly 30 percent for 822 FTA, and the Jazz were getting roughly an extra  76 points over roughly 40 possessions (infeasible, but thanks to empty possessions) in comparison to the Utah Jazz. This quantity is calculated as the difference in percentages in and-one situations between the big three of the Jazz and these two of the Hawks; and 2 points per (minimum on and-one situations) divided by the number of two-free throw situations chewed up by Millsap and Howard.

However, the silver lining for the Hawks is Dennis Schroder; who’s style of play led to 52 and-one attempts, 117 two-attempt FTA’s, and 2 three-point FTA’s. This percentage shows that Schroder is more of an attacking guard and gets to the line with continuation at a rate of 30.41%. This translated into 292 free throws; which puts him on par with George Hill. To further compare these two players, we must look at other variables such as number of touches, number of FGA’s, and floor time; which is not in the scope of this article.

For a team with a low efficiency of getting to the line for possession free throws, Schroder manages to help bring the team to reality with a 0.4075 correction factor. Compare this to Millsap’s 0.4454 and Howard’s 0.4537; both well above league average, it is easy to see why fouling Hawks players or challenging them into low-contact field goal attempts was a smarter bet; it reduced their number of points per possession.

Now, as Millsap is a member of the Denver nuggets, one key action the coaching staff will need to make is to identify ways to get Millsap to finish at the rim and score with continuation. A skill that many all-stars possess and becomes the difference in close contests.



2 thoughts on “Distributional Analysis of Free Throws and the Denver Nuggets

  1. Pingback: Distributional Analysis of Free Throws and the Denver Nuggets — Squared Statistics: Understanding Basketball Analytics | Advance Pro Basketball

  2. Pingback: True Shooting Percentage Part I: Introduction and Framework for Advancement | Squared Statistics: Understanding Basketball Analytics

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 )

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.