Benching Players in Foul Trouble: A non-homogeneous Poisson model for NBA fouls

Every sports manager is tasked with making decisions. Typically, they rely on years of experience and expertise in order to make the best decisions possible. However, with a correct mathematical model for some phenomenon, a coach can make much more informed decisions. We’re going to study the phenomenon of coaches benching players in foul trouble. Does this make sense from a statistical perspective? The common consensus amongst budding sports analysts is that ‘Benching players in foul trouble is a huge mistake!’ However, my conclusions in this article will be ‘If a player is in significant foul trouble, then intelligent benching schedules can actually lead to both more average minutes played and a higher likelihood of being available at the end of the game’.

The idea behind our analysis is in modelling the foul-arrival rate as a Poisson random variable. These random variables describe the arrival time of discrete events which occur at a known average rate. However, in the NBA fouls occur at varying rates throughout the game. In fact, it is precisely this fact that allows for intelligent benching of players in foul trouble. It is also this fact that most analysts ignore when they claim one should never bench a player because of fouls. We will develop an appropriate non-homogenous Poisson model for fouling in the NBA and perform some analysis in a few specific cases that shows benching players can be beneficial.

The Poisson Model

The Poisson (pronounced pwuh-sahn) distribution models the number of occurrences of some event in an interval of time (or space) when the average number of occurrences in that interval is known. For example, if we know that customers arrive to a store at an average rate of 3.5 per hour, the Poisson distribution could tell us the probability that zero, or two, or 10 customers arrive in any given hour. For us, fouls in the NBA are exactly the event we want to count.

For the Poisson model to be appropriate, a few conditions need to be satisfied. Most importantly, we need the arrival of events to be independent and it must be impossible for two events to occur simultaneously. Certainly the second condition is not satisfied in basketball (double technical fouls, for instance). It is also quite unclear whether or not the first event is satisfied. If I know that a team already has 7 fouls, does that change how many fouls I think they will have for the rest of the game? One could argue this both ways. If the team has many fouls already, perhaps they are more likely to foul. Or, on the other hand, perhaps they try to avoid fouls and so they happen to foul less for the rest of the game.

The thing is: it isn’t going to matter. When testing the appropriateness of a model, generally one does not try to test the assumptions. Rather, we only care to test whether or not the proposed model accurately and consistently predicts future behavior of the object of interest. Does using the Poisson model for fouling in basketball accurately describe what we observe to be true? We’ll examine the appropriateness of the Poisson model in the next section.

Testing for Poison-ness of Fouls

A Poisson model is defined by a single parameter, \lambda , the average number of events observed in a given interval. So, in order to test whether the Poisson model accurately describes our setting, we first need to figure out the average number of fouls per 48 minutes.

We pulled the play-by-play of every game in the 2019-2020 NBA season to generate a list of all the fouls that occurred last year. For simplicity, we got rid of the games that went to overtime which comprise an admittedly very small proportion of games to begin with. We found an average of 40.7 fouls per game (amongst games that ended in regulation).

Then, we went through every single game of the season and counted the total number of fouls. Shown below is a plot showing the frequency of a given number of fouls per game. The red dots show the observed percentage of games with a given number of total fouls in the 2019-2020 NBA season. For example, 30 fouls were recorded in about 1% of games last year. The black dots are the predicted percentages for a given number of fouls using the Poisson model.

Poisson model overlaid on observed foul occurences

This model looks quite accurate. We should examine the residuals, though, as always. Shown below is the difference between the observed frequencies of a given number of fouls occurring in a game and our predicted frequency.

residuals in our Poisson model for fouling

In general, this plot indicates relatively good accuracy of our model. The residuals are small – almost all less than a 1 percentage point difference between predicted frequency and observed frequency! Moreover, there isn’t a clear pattern to the residuals to suggest an incorrect choice of model.

So we’re done, right? Fouls are Poisson! It is true that the total number of fouls occurring in a game are well modelled by a Poisson(40.7) distribution. However, the next section will highlight why this model isn’t the most accurate we could generate if we care to use our model for in-game decision making.

NBA Fouls Occur at a Non-Constant Rate

Remember that we wanted a model for fouling in basketball because we wanted to aid a coach in choosing between benching his player and letting them continue to play. Therefore, the coach needs to be able to know about fouls occurring in sub-intervals of a game. The coach needs to know if benching a player from, say, minutes 30-35 will allow them to play longer into the game than if they were benched for minutes 35-40. To do this, we need to know the average fouling rate for every point in the game.

I plotted the number of fouls that occurred in each minute in the NBA in 2019-2020 to investigate this problem. The plot below shows the fouls per minute that occurred in each individual minute in the NBA (regulation only). For instance, we could read off the following chart that the average foul rate in minutes 8-10 was about 0.8 fouls per minute.

NBA foul rate by minute.

There are a few takeaways from this graphic:

  • At the beginning of the game (roughly the first 5 minutes), the foul rate is considerably lower than the rest of the game.
  • At the end of each quarter (except, curiously, the 3rd) we observe a marked increase in foul rate.
  • At the beginning of each quarter, we observe a marked decrease in foul rate.
  • The foul rate in the last minute of the game is about twice as high as in the rest of the game.

These things all match very closely with the intuition any NBA fan may have. Whatever takeaways or conclusions you want to make from the above graphic, one thing is clear: the foul rate throughout an NBA game is not constant and so we should use a more complex model than a simple, constant rate Poisson model.

A Non-Homogeneous Poisson Model for Fouling in the NBA

The theory of non-homogeneous Poisson distributions is pretty neat. The key fact that lets them work is that the sum of two consecutive Poisson distributions is itself Poisson. In the NBA case that can translate as follows. If the first half fouls are Poisson(18) and the second half fouls are Poisson(22), then the total game fouls would be Poisson(18+22)=Poisson(40).

First, I need to take a bit of a complex detour to talk about the calculus behind non-homogeneous Poisson models. To define a non-homogeneous Poisson model, we need to define the ‘instantaneous rate’ at time t as a function f(t), 0\leq t \leq T . The only real assumption on the function f we provide is that it is integrable. A traditional Poisson distribution is when the function is a constant value \frac{\lambda}{T}. The key property of non-homogeneous Poisson models is that over any sub-interval they can be represented as a basic, constant rate Poisson. For example, if we’re given an interval T_1\leq t \leq T_2 , then the number of occurrences of the event described by f(t) is Poisson(\lambda ) where \lambda = \int_{T_1}^{T_2} f(t)dt . Over any sub-interval, a non-homogeneous Poisson can be replaced by a homogeneous Poisson distribution.

It should be pretty clear now why the Poisson model was so accurate when we assumed a constant rate. There exists an underlying foul rate function f(t) \text{ with } 40.7=\int_0^{48}f(t)dt . Then, the number of fouls in an NBA game – even though the rate was non-constant – actually is a Poisson with an average of 40.7.

For us, we are going to use a fairly simple non-Homogeneous Poisson model (a pretty simple function f(t) that describes the instantaneous foul rate) for fouling. We will split the game up into the following parts in which the foul rate is approximately constant (as indicated by the figure above):

  • The first 5 minutes of the game, with an average of 2.9 in the first 5 minutes.
  • Minutes 6 through 11, with an average 4.5 fouls in this span.
  • The last minute of quarters 1, 2, and 3 with an average of 0.98 fouls in each minute.
  • The first minute of quarters 2, 3, and 4 with an average of 0.68 fouls in each minute.
  • The last minute of the game with an average of 1.56 fouls.
  • The rest of the game with an average of 0.87 fouls per minute.

Pictorially, we overlaid the observed foul rate by minute with the modelled foul rate by minute described above. This is shown below.

Piecewise constant foul rate for our non-homogeneous Poisson model

This is the model we’ll use – a piecewise constant Poisson model – to analyze fouling in the NBA.

Why Most Analysts Say ‘Don’t Bench Players in Foul Trouble’

Let’s do a quick case study. Suppose that I myself am an NBA player who fouls at a league average rate. Because there are 10 individuals on the court at a time, we can convert to my individualized foul rate per minute by taking the above rates and dividing by 10.

Let’s consider the following setting: I am a coach and my start player gets their 5th foul at the very start of the second half, before even 1 second has run off the clock. My normal playing schedule consists of playing this player the first 7 minutes of a quarter, resting for 3, and playing the last two minutes of a quarter. However, because of foul trouble, an alternate consideration is benching our start for the first 6 minutes of the third quarter, letting me play the last six minutes of the third quarter, then playing my normal minutes in the fourth.

If our goal is to maximize the time our star spends on the floor, which technique is better? We can do something pretty neat here and compute the probability of fouling out at exactly time t using an exponential distribution and conditional probabilities. For these calculations, we need to break the problem up into sub-intervals (because of the non-constant fouling rate at various points in time). The below table is the first step in computing the expected minutes-played. This table displays the probability that our star player survives (i.e. doesn’t foul out) by the end of the indicated interval. We computed these percentages given our normal playing patterns and our adjusted playing pattern.

Interval

Associated Minutes

Normal Survival %

Adjusted Survival %

1

Q3, 0:00 – 1:00

93.4

100

2

Q3, 1:00-11:00

50.8

64.7

3

Q3, 11:00-12:00

46.1

58.7

4

Q4, 0:00-1:00

43.0

54.8

5

Q4, 1:00-11:00

23.4

29.9

6

Q4, 11:00-12:00

20.0

25.6

Again, those probabilities are the percentage chances that our player would make it through the indicated interval in both settings. Notice: The above table doesn’t tell me the probability that I foul out 30 seconds into the third quarter. Poisson models don’t do that. We need another distribution to fill in the inner-interval probabilities.

If I want to compute the probability of fouling out 30 seconds into the third quarter, we need to use an exponential distribution. One way to view the exponential distribution is that it tells us the ‘probability of waiting an exact amount of time before some Poisson event occurs’. Then, the exponential distribution with the correctly chosen parameters will ‘interpolate’ the survival probabilities at the beginning and end of an interval.

If I want the probability that I last 30 seconds, I can compute the survival function (tail probability) of the exponential distribution with values \lambda =0.068, x=0.5 to get the value 96.7%. If I want to compute the probability of making it the 2:30 mark of the third quarter, we compute a conditional probability by multiply the probability of surviving into interval 2 (93.4%) by the probability that we survive the first 1:30 of the second interval. In this way, we can compute our survival function.

The following function shows the probability of us not having fouled out at a certain number of minutes into the second half.

One thing is abundantly clear here. Benching for the first six minutes of the third quarter gives a much larger probability of our star being available later into the game. The red curve being always above the blue curve indicates that, at all points in the second half, it is less likely our player will have fouled out at that instant if we bench them for some time to start the half. This is, in a sense, obvious. But many things in sports seem obvious but when you put numbers to them, things fall apart. This is the whole point of sports analytics. The previous paragraph had the wrong choice of key performance indicator (KPI).

If we want to maximize our winning chances, we should maximize the time that our best players play. Our KPI should be minutes played by our star. Benching players makes it more likely our player is available later into the game. However, it does not make it more likely that our star will play more minutes. To show this fact, let’s show the more correct survival curve for this scenario. Instead of plotting survival probability against minutes into the second half, let’s show survival probability against minutes played.

Notice that the blue curve is always above the red curve. This means that playing our normal minutes makes it more likely we will play four minutes, more likely we’ll play 12 minutes, more likely we’ll play 16 minutes, etc. That is, giving our start their normal on/off schedule will – on average – play them for more minutes. Note: both curves drop to a 0 probability at 15 and 18 minutes respectively. These are the maximum amount of minutes our player can record before the game ends (assuming, of course, it ends in regulation).

Having computed the survival curves, it is fairly straightforward to compute the mean number of minutes played in both scenarios. In fact, integrating a survival curve for a random variable gives the mean of that random variable. We numerically integrated these curves to find:

  • Average minutes played without extra benching: 9.28.
  • Average minutes played with extra benching: 8.4.

The extra benching towards the beginning of the third quarter actually leads to playing something like 52 seconds less on average. This is the reason that traditional analysts claim that benching players in foul trouble is incorrect – it leads to less playing time for your best players. But, as I promised above, the story doesn’t end there.

Intelligent Benching for Foul Trouble

The prior section showed that benching players for extended periods of time for foul trouble is detrimental. However, my actual claim is this: If you are a coach and one of your best players is in foul trouble, you should alter when they are on the court and when they are off the court. Fatigue is a major consideration in the NBA. Players need to rest at some point. My suggestion is to alter the player’s normal benching schedule so that they ride the pine during the traditionally higher-foul time periods. Namely, players should take their normal rest at the end of a quarter rather than in the middle or at the beginning of that quarter. The ends of the quarters have a higher foul rate than the middle of the quarter and a much higher foul rate than the beginning of a quarter.

Let’s work with a small, though perhaps contrived example to illustrate my point. Again, suppose I coach a team and my star player is starting the second half with five fouls (we’ll discuss below why I always use five fouls, not four). Suppose it’s a playoff game and I only want to rest my guy 1 minutes in the second half. Normally, I would bench him for one minute to start the four quarter. The alternative that I propose will bench him for one minute to end the third quarter. In doing so, our player can avoid being on the court during one of the game times it is most likely they will foul without sacrificing any minutes. Doing the exact same analysis as above and using the same foul-rate model, we’ll see that altering my player’s normal playing schedule can have benefits and lead to playing longer on average.

Again, shown below are the two survival curves for probability of lasting a given number of minutes into the second half before fouling out. The benefit is small, but we still see some savings.

Again, notice that the blue curve – corresponding to our adjusted benching schedule – is always above or as high as the red curve – corresponding to the traditional benching schedule. This means that the probability of our player lasting x minutes is always larger if we use our alternate benching scheme. That means our player is more likely to be available later into the game. Here, though, the effect is quite small as evidenced by our average minutes played in each setting:

  • Average minutes played with traditional benching: 10.09
  • Average minutes played with alternate benching: 10.18

Again, the difference is small, but an extra possession here or there can sometimes change a close game. Any advantage gained by giving up nothing is worth doing.

Commentary on Computation

I want to add a few closing thoughts that don’t deserve to be elaborated on in their own section. First, let’s discuss how you might do a similar analysis when we are more than one foul away from fouling out. What if our player registers a very early third or fourth foul? In general, one might have to use complicated conditioning along with an Erlang distribution to reproduce the same analysis I did above. However, we can save heartache by approximation. The key is to remember that Poisson distributions and Binomial/Bernoulli distributions are very closely related.

In particular, we can use a Bernoulli distribution to decide whether or not a player records a foul in a given second. Then, if we count how many seconds elapse before our player records their second foul, this is an estimate of the mean minutes played. Repeating this process many times (we’ve used Monte Carlo before!) will let us generate an estimate of the average minutes played by our player.

More advanced analysis could actually refine our results. If we wanted to implement this in real-game scenarios, we would like to know fouling tendencies of individual players. We would like to know how fouling changes between offensive and defensive possessions. We might also like to know if certain players tend to go on foul streaks. With all this information in hand, a coach could conceivably modernize how and when to play his players so that they play, on average, the most minutes possible.