Of course, this requires spatial data, which can be either obtained via SportVU, or you can construct your very own data collection tool!

SportVU data effectively collects spatial locations of players and the basketball as an (x,y)-coordinate system on the basketball court. Each snapshot of the eleven entities is collected roughly every 0.04 seconds. The resolution is extremely nice as we are able to model fine-grained motion of each entity and develop rigorous spatio-temporal models.

The (x,y)-coordinates are effectively contained within the rectangular region (0,94) x (0,50). These are the dimensions of the court with the baseline running in the y-direction and the sideline running in the x-direction. I say the term effectively, due in part to the camera system being able to track players running out of bounds.

The challenge with SportVU data is that it is relatively large. For a 48 minute game, we effectively obtain 72,000 samples of 11 (x,y)-coordinates! Over the course of a season, not including playoffs, this equates to roughly 88,560,000 samples of spatial data.While this isn’t large for industry standards, trying to operate on a basic home PC can be slightly time consuming.

The other challenge is that processing SportVU data is indeed time consuming. Ideally, we would like to develop streaming analytics to run at game time. For instance, if we develop a crude algorithm that does a fantastic job of building a model, but it takes an hour to process a minute of game; we’d be expecting to analyze a game over a week’s worth of time, accounting for sleep, eating, and other basic living requirements. This is not so acceptable. Therefore, we need to either **develop simple analytics that break down complex actions to approximate simple streaming actions **or **we get quite crafty with our data manipulation skills**.

To start building an analytic, we start with **asking a question**. Here our question is, “How far away is the player from the passing lane?” This question is derived from a further complex question of, “How well is the off-ball defender guarding his man?” Traditional coaching strategy suggests that if your man does not have the ball, then you should hedge off of him just enough to be a nuisance to any developing play away from your man, but be able to also cover your man simultaneously. This is commonly referred to as the **man-you-ball** set-up on defense.

Once we have our question, we hypothesize a **test function** that hopefully answers our question. If you notice, I am interested in answering if my defender is suitably covering his man off the ball. I should really be asking for an analytic that says **“Is my defender in the passing lane?”** Which I am not. I’ve broken the analytic down into simpler parts, as I **do not know what constitutes as covering a man means**. Starting simple, we can derive the appropriate test **later**.

Therefore, we start with measuring distance to the passing lane first.

Since I have spatio-temporal data, I am able to take a particular snapshot of (x,y)-coordinates and quickly form simple geometric relationships with the data. This requires a little bit of calculus. We will concurrently illustrate how to build the analytic while identifying the required tools from calculus. Let’s start with the current state of the system.

Let’s consider a fast-break that is occurring. The **red team** is on a fast break with an unmarked defender that is forced to make a decision. This defender will either have to press the ball-handler or sag and cut off the passing lane. This unmarked defender is relying on his teammate, the **green dot**, recovering to stop any pass to the lead man. This means we need to identify his distance to the passing lane to identify whether the unmarked defender is able to make a proper choice.

The equation of a line is simple. It’s merely **y = mx + b**, where **m** is the slope of the equation and **b** is the y-value of the y-intercept. We only need to care about this line because it will help us identify the shortest path to the line. So let’s walk through how to compute the line given two spatial points.

If we consider the ball-handler as **(x_1,y_1)** and the teammate as **(x_2,y_2)**, then the slope is simply rise over run. In this case it is

We can plug either of the coordinates back into the equation to obtain the y-value of the y-intercept; let’s choose **(x_2,y_2)**. In this case, we get

This means our equation of the line in-between a passer and their teammate is given by

Rearranging terms, we obtain

This is the equation of the line between two players on the court.

By computing this value, we are able to identify the **passing lane**. However, **we do not have to actually compute this line! **We can draw the line simply by calling a **draw** function and plugging in the two player coordinates. We only need the coefficients of this line. For now, we will call this passing lane, **which a vector**, the vector **P**.

The normal vector is a line that is **orthogonal **to that line. Orthogonality is merely a line that forms a right angle, or intersects our line at a “T”-intersection, with the passing lane line. This is a standard calculus quantity and is found by **computing the gradient of a function**.

What the gradient calculates is the direction of the greatest amount of change of a function. Our function here is the passing line, which is of two variables: x and y. This means we obtain a vector quantity that simply computes the derivatives with respect to x and y, individually.

In this case, we obtain the gradient

We call this gradient, **n**, because for the line, it is orthogonal to the line. Notice that these are the coefficients for the equation of the line above! While this quantity will be needed in determining the distance between the defender and the passing lane; we don’t even need to store it.

The difficult part here is that **we do not know where the orthogonal part of the line that passes through the defender is located within the passing lane**. So we just find another way through vector calculus.

The dot product takes two vectors and gives insight into the interior angle. In fact, it helps compute the area of the parallelogram spanned by both vectors of interest! If this is confusing, no worries. We will break this down.

First, we take our passing lane vector, **P**, and compare it to the vector, **D**, which is the vector between the passer and the defender of interest. We can compute **P **and **D** very quickly by subtracting the passer’s location from both the teammate’s and the defender’s locations, respectively.

Notice that when we combine **P**, **D**, and **n**, we **almost** form a triangle! In fact, the distance we scale the normal vector by is the **distance from the defender to the passing lane!**

The dot product is a quantity that gives us

The dot product is the length of the passing lane times the length of the distance between the passer and the defender, times the cosine of of the angle between the passing lane and the line between the passer and the defender. The quantity is excessively simple to compute, as it is given by

Here, **(x_3,y_3)** is the defender position. The dot product is a useful tool in determining **projections,** which is exactly what we want.

A projection of one vector onto another vector is an orthogonal mapping. Let’s take another look at the Phoenix Suns court with all the vectors mapped out.

The yellow line, **D**, needs to be projected onto the red line, **P**, which is the passing lane. The normal vector, **n**, is the actual direction of this projection! However, the **length of n is not the distance between the defender and the passing lane!** Instead, we **project** the yellow line down onto the red line by using a **dot product**.

What this helps us find is the number, a, that we multiply the normal vector, **n**, in order to obtain the distance we need! Let’s call this vector **a **= a***n**. The length of **a** is then our distance we wish to compute.

So let’s carry out this math by piecing together the above calculus components.

By performing this projection of **D** onto **P**, we obtain the angle in-between **D** and **P**. Call this **theta**. Noting that the projection form a right hand triangle, we can use simple **SOHCAHTOA** methods to obtain the distance. What’s SOHCAHTOA you ask? It’s the relationships: **sine = opposite / hypotenuse, cosine = adjacent /hypotenuse, **and **tangent = opposite / adjacent**. Here, the length of vector **a** along **n** is the opposite of **theta** while the hypotenuse is the length of the yellow line, **D**.

This gives us then the length

We can verify that this distance is indeed the correct length, as we can compare it to the normal vector, **n**, and see that it indeed as projective scaling.

Applying this methodology to our Phoenix Suns representation, we find that the teammates are located 32.9192 feet apart while the defender is 26.3454 feet from the ball handler/passer. Computing the dot-product, we obtain a value of 721.9091; a relatively large number.

Using the dot-product, we compute the angle between the passer-defender line and the passing lane. This angle**, theta**, is that ugly arc-cosine term above. This is **33.6547 degrees**.

If we take this computation of theta, we then compute the distance to be **14.6003 feet from the passing lane!
**

Therefore the analytic returns the distance we are interested in. Note as we did all this math, all that we required was the dot product and a couple trigonometric quantities. This is due to all the calculus steps taken to ensure we applied a proper projection and obtain the value we actually cared about. Hence the coding aspect is now straightforward.

We take in the spatial coordinates: **(x_1, y_1)**, **(x_2, y_2)**, **(x_3, y_3)** as the passer, teammate, and defender, respectively. In fact, we can do all defenders and all teammates **simultaneously** by vectorizing everything and obtaining all distances of all defenders relative to all four passing lanes. Instead of overwhelming you with those details, we focus on this single trio of players.

We first compute **P = (x_2 – x_1, y_2 – y_1)**. This gives us the **P** vector. Next we compute **D = (x_3 – x_1, y_3 – y_1)**. This gives us the **D **vector. We then compute **sqrt(D*D’) **and **sqrt(P*P’)**. These quantities are the distances between the passer and defender as well as the passer and teammate, respectively. In math symbols, this is **|D|** and **|P|**, respectively.

Finally we compute the last quantity. **Note:** the angle **theta** will be in **radians!** This is important to remember.

Thus our analytic is a sequence of five computations; each that run much faster than 0.04 seconds. Allowing our analytic to process quickly at a near streaming rate.

Recall that we were actually interested in whether our **defender is covering the passing lane!** This is where the data science aspect of the analytic comes in. We can compute something silly like **three feet from the line is covering**. Or we can use the data to tell us something better.

If we are interested in understanding a **player’s ability to cover a passing lane, **we can trawl through the data and label situations where a pass was made to the player that defender is guarding. Depending on the definition of **guarding the passing lane** you decide will help you determine whether each instance was **guarded or unguarded**. This definition is critical.

For instance, a defender could be covering a passing lane, however, there is not basket coverage, such that a basketball can be thrown over the top of the teammate. This is typical on fast breaks where the teammate breaks for the basket on a full court pass.

If we decided to use **recovery time for a player**, we can label covered passes as passes where the defender either steals or tips the ball, or where a defender is able to recover such that a shot attempt is not taken as the player is forced to pass or put the ball on the ground to elude the defender.

In this case, we can track the distance covered with respect to the passing lane for every pass and use the covered/uncovered labels to **statistically determine recovery speed for every NBA player**. In doing this, we can use a **classification algorithm** to identify the distances between “able to cover” and “unable to cover.”

For example, **Tony Allen (New Orleans)** was able to recover on passes up to **6.243 feet from the passing lane**. Therefore, his threshold is generous. Whereas **Jahlil Okafor (Philadelphia) **is one of the slowest in the league and is given a tighter leash **3.843 feet**.

**Full disclosure**: These estimates are on sampled data; not a census of all 1230 games this past year. Plus it is determined off of a classification I decided to build; possibly not what a team is specifically interested in or plan for.

However, we are able to answer some of our questions and this gives insight into the mechanical process of a data scientist who is attempting to develop analytics for NBA data.

]]>

Game score is given by the function

**Points + 0.4FGM – 0.7FGA – 0.4(FTA – FTM) + 0.7OREB + 0.3DREB + STL + 0.7AST + 0.7BLK – 0.4PF – TO**

This equation may seem quite ridiculous, so let’s understand its utility. Here, we count the number of points scored by a player; the single most important value in any game. Similarly, we subtract the number of turnovers; which makes complete sense as a turnover eliminates a possession and therefore erases potential points off the board. The remainder of this equation becomes more muddled.

Here, offensive rebounds are valued more than defensive rebounds. Offensive rebounds are indeed tougher to obtain, and indeed prolong a possession; however, defensive rebounds terminate possessions for opponents. In this case, offensive rebounds are valued at 2.3 times more important than defensive rebounds. A steal, however, takes away a possession outright; therefore eliminating a possession for an opponent, which can be viewed as gaining an extra possession for their team.

So the weights somewhat make sense to a degree. However, we have not statistically tested them. So let’s allow them to stand on their merit.

Here, we are interested in identifying how well a shooter must perform in order to **increase their game score.** To do this, we must partition off the shooting elements of game score and see what they truly mean. In doing this, we will obtain **break-even** shooting percentages necessary to improve game score.

So the question is… **how good of a shooter must you be in order to improve your game score?**

In the game score equation, the points scoring elements are given by

**PTS + 0.4FGM – 0.7FGA – 0.4(FTA – FTM).**

We can rewrite the number of points as

**PTS = 3*3PM + 2*2PM + FTM.**

Similarly, we can write the number of field goals made and attempted as

**FGM = 3PM + 2PM,**

**FGA = 3PA + 2PA.**

This allows us to write the scoring element of game score as

**3*3PM + 2*2PM + FTM + 0.4*3PM + 0.4*3PM – 0.7*3PA – 0.7*2PA – 0.4*FTA + 0.4*FTM.**

Arranging the three different types of shooting attempts, we obtain the nicely structured equation

All we have to do now to **break even** in game score is to set this equation to zero and treat each component as a vector space. In this case, we note that the number of attempts a player takes **cannot be negative**. Since we are interested in maximizing each field goal and free throw percentage, the coefficients cannot be zero. This therefore allows us to write each coefficient equal to zero. However, if we do this…

Setting the coefficient for three point percentages to zero, we obtain a three point percentage of 0.7/3.4; or **20.5882 percent**. Similarly, if we look at the coefficient for two-point field goals, we break even at a percentage of **29.1667 percent**. Yikes.

For free throws, all a player needs to shoot in order to break even in game score is **28.5714 percent**. Shaq would be proud.

So let’s get this straight. If a player shoots 21 percent for three’s, 30 percent for two’s and 30 percent for free throws, then all they have to do to improve game score is **shoot a ton?** The answer is **YES**.

Let’s consider a side-by-side comparison of this terrible shooter and **Kent Bazemore** of the **Atlanta Hawks**. Bazemore, over the 2017 NBA season, was a 34.6% three-point shooter (92 for 266) and a 44.6% two-point shooter (203 for 455). Bazemore had a mediocre free throw shooting season at 70.8% (119 for 168). Over a total of 73 total games, this equates to an average shooting-only game score of **5.4068** **per game**.

Let’s compare Bazemore to Shooty McShootsalot, who shoots 30% from three’s, 40% for two’s, and… let’s be generous here… 50% from the foul line. If this player has the exact same rate of shooting as Bazemore, then Shooty will make 80 three’s, 182 two’s, and 84 free throws. This results in a shooting only game score of **3.4863 per game**. This means that a shooter who shoots worse than Kent Bazemore with the same load as Kent Bazemore will have a worse game score when compared to Kent Bazemore. That’s a good sign.

Now, what if this player’s usage is increased? Let’s say up from the 10.42% workload that Bazemore sees: 721 field goal attempts against the team’s 6918 (It’s even lower if you consider free throws) to 1150 field goal attempts; with the same ratios as Bazemore broken out. This means the player takes on 16.2% of the team’s offense.

In this case, the player is only taking 5 – 6 more shots per game than Bazemore would. If this carries out, this player now has an average game score of **5.51370**. This identifies the player to be better than Bazemore, just by taking 5-6 more field goal attempts per game.

Let’s understand this… By taking 5-6 more field goals per game, with the percentages that the shooter has, this player will average **15.04 points per game** but require an extra six to seven possessions to do this. This means that despite the game score being higher than Bazemore’s, the **points per shooting possession goes down from 1.1107 (Bazemore) to 0.9547** (Shooty). Extrapolating to per 100 possessions and we have that the **Hawks with Bazemore will gain roughly five points per game than the Hawks with Shooty** **McShootsalot. **This is an important note to make despite game score favoring the shooter.

Game score can be improved the same way that PER gets scaled. However, instead of scaling at the high level, after shooting has been contributed, we scale based off the data; making game score a **relative measure**.

Let’s start by looking at the distribution of game score. Let’s take a look at Bazemore’s distribution of shooting only game score.

We find that the shooting portion of Bazemore’s game score actually lands at a mean of 4.2986. This is the average of scores, as opposed to the average of averages we performed above. Due to the skewness of this distribution, these values **are not the same**.

We’d like to standardize, however, there is one glaring problem if we simply standardize.

For every missed field goal attempt, a rebound can be made. A miss is equivalent to earning **negative 0.7 points**. However, a rebound is equivalent to either 0.7 points or 0.3 points. **Good News: **an offensive rebound effectively wipes out a player’s miss; however, if the player does not collect their own rebound, they are penalized despite having no actual negative impact on the play.

If we are to stick to our guns about this rebounding relationship, then we can indeed impose standardization. In this case, we identify that the league shot 23,748 for 66,422 from beyond the arc this past season. This resulted in a **35.7532** percent shooting. Similarly, the league shot 72,313 for 143,693 from inside the arc; a **50.3247 percent **rate.

To enforce a league average for shooting, say 35% for three’s and 50% for two’s; we can reverse engineer a better multiplier **or split up FGM/FGA**. For a better multiplier without separation, we can form the regression problem:

In doing this, we get **instead of 0.7**, we obtain **1.2117008. **Let’s set this to **1.2**.

Now for offensive rebounds, we should keep in faith of keeping a possession alive and adjust 0.7 to 1.2 as well. However, in determining the relationship of offensive and defensive rebounds, we scale the defensive rebounds mechanism according to distributions of rebounds.

Last year, there were 24,937 offensive rebounds compared to 82109 defensive rebounds. This means that **23.2956% of all rebounds were on offense**. With the value of offensive rebounds being three times more desirable, we can adjust defensive rebounds to have a game score of **0.3 to 0.4**.

We can adjust other factors according to the data as well. In this case, we can take assists, steals, turnovers and personal fouls and weight them against the number of points scored. These values are a little more muddled as the question is “why 0.7 assists per point?” in the original model. Take note… **last season there were 0.2578 assists per non-free throw point scored. **So any desirable weighting can be used here; provided it passes some sort of eye test. There are many possibilities, but beware; they need to make sense. 20% from three’s is enough to get a player yanked after a while; but in considered as contributing to a score.

As a side note, I definitely get ten boards, three assists, and shoot 3-of-12 for three’s in pick up ball nowadays. That gives me a nice **6.9 game score**. Never mind we lost 21 – 17.

So how would you go about adjusting game score?

]]>

In our previous article, we asked how to identify player contribution with respect to scoring in a game. We provided a relatively simple example and walked through the most fundamental statistic: **plus minus**.

Identifying that the statistic really isn’t all that helpful for understanding player contribution, we set out to identify how players interact and use a basic regression model. This yielded **Adjusted Plus Minus (APM)**. In this model, however, multicollinearity crushes us and we either have to get creative with inputs or deleting players in a strategic manner. The resulting multicollinearity rears its ugly head in the form of over-inflated variances. So our resulting estimates aren’t statistically different.

Instead, we control the degree of multicollinearity by introducing a little bias. This method is called **ridge regression** and yields the **Regularized Adjusted Plus Minus (RAPM)** model. We are able to control the impact of multicollinearity in attempt to get stable and comparable numbers between players. We give up a degree of interpretability in the model, but are still able to perform prediction and can compare the relative contribution of players.

First, we have to define an observation of data. By asking the question, **“who contributes the most to building a positive point differential for a particular team?” **we are effectively asking what players are on the court and how do we quantify positive point differential? We can either ask as a **possession **model and treat every possession as an observation. Or we can ask as a **stint** model and treat every stint as an observation. The goal is to select an interpretation and proceed accordingly.

In the classic sense of RAPM, analysts tend to use stints as observations. A **stint** is a period of time that the same set of ten players are on the court. Anytime a substitution is made, the stint ends and a new stint begins. For each stint, the number of **possessions** are counted. If this possession count is zero, then the stint has done nothing on the court and is not considered an observation.

If a possession is logged, then we obtain a viable stint and start recording the point differential. Recall that a possession is ended by a converted last free throw, made field goal, defensive redound, turnover, or end of period. For this exercise, we ignore end of period possessions.

Before we even begin, we start with the players. We need to know who is available before we begin. To this end, we can simply walk through every game and build a dictionary of players.

Once we know how many players we anticipate in all the games, we can initialize the data frame to pull in each stint.

Now we march through every file, build stints and count possessions. Many folks like to do this using time. Instead, I partition on the type of play to obtain a smaller matrix and transition through the possession ending, and non-possession ending scoring situations.

There are a list of columns of the data indicating the away players on the court and the home players on the court. I use these to indicate stints. Anytime this ten-some changes, I check to see if there are any possessions and then form the observation.

I initialize the stint using the first action of the game.

Then walk through all shot/defensive rebound/turnover/free throw situation. First things first, as the next action occurs, I check the current ten-man rotation and see if it changes.

If it hasn’t, we go right into checking possessions and counting points.

We see the possession ending situations. If points changed for a team, we add them to the stint. In all cases, we increment possession counts.

We have to manage free throws. In order for a possession to end, the shooter must convert the final free throw of the bunch. In this case we check how many free throws a shooter gets and compare to which number of free throw they are on.

Here we keep track of time as substitutions can be made between free throws. If this is the case, we cannot write the stint observation until all free throws are concluded. This is due to free throws being awarded to the stint prior to changing.

Unfortunately, if a team substitutes, and the last free throw is missed with an offensive rebound; we double count the possession. This is the nature of the fact that we either divide by a slightly larger number **or throw away points**. We could get tricky and count the possession as **one-half possession** for each stint. But, I didn’t do that here.

Paying close attention to the free throw block of code, there are really two sub blocks. The first block check to see if the free throw is the last free throw. If it isn’t, we just check score. The second block is if the free throw is indeed a final free throw, if it is possession ending.

When substitutions are made, we have to check free throws first. This is the only situation where a previous stint gets credit for points when they are not on the court. To ensure the stints are indeed correctly called out, we simply asked when times of free throws are taken. Since time cannot advance on a free throw, the time matches and we know to add the points to the previous stint.

We perform the same calculation for when free throws occur **immediately** after a substitution. If this time matches, then free throws are added to the stint. This is due to time outs after fouls.

Now that the free throw situation is over, we can save off the stint.

Before we move on in the file, we check if this new line-up has any non-free throw activity. And start populating the new stint.

After iterating through all 1230 NBA games, we obtain a stint matrix where the response is point differential per 100 possessions. This results in slightly over 34,000 stints for the 2017 NBA season. Now we are able to proceed with APM and RAPM.

Recall that if we performed straight-linear regression, we will have an uninvertible matrix. To perform this task, we trawl through nba.stats.com and located all players who played less than **x** minutes. In this case, we eliminate all players who played less than 125 minutes; and then again with less than 250 minutes.

Sorry, I cut off the names of all the players. It’s a long list.

Now we can run the APM model, which is just a regression.

The summary yields:

We see that the variance is still too large for all the players; as indicated by the associated p-values. This is no different than in the example with our last post. Despite this, let’s take a look at the top 20 players:

In case you can’t zoom in, that’s (in order):

- Damien Lillard
- Cody Zeller
- George Hill
- Stephen Curry
- Beno Udrih
- Bradley Beal
- JJ Redick
- Klay Thompson
- Lou Williams
- Darren Collison
- Harrison Barnes
- James Harden
- Paul Millsap
- CJ McCollum
- Karl-Anthony Towns
- Kyle Lowry
- LeBron James
- Devin Booker
- Nikola Jokic
- Dirk Nowitzki

Now, mind you, while this list is not surprising; there are some questionable additions such as **Beno Udrih** and **Cody Zeller**. Take that back, I thought Zeller was questionable. One team exec told me “that pretty reasonable.”

Despite this, the r-squared (no relation to squared 2020) is an abysmal **0.0245**. Compare this to Rosenbaum’s equally abysmal 0.15 in his studies. Sure, we get answers, but the multicollinearity is so high, there must be further action taken.

So let’s move to ridge regression. In this case, we need to identify a proper lambda. To do this, we turn to **scree plots!** A scree plot is a **cross-validation** tool that identifies predictive performance of a model. Cross-validation, in turn, is a method for splitting our data up into a test set and a train set. We build the regression model on the training set and apply it to the test set. By walking over all possible combinations of test and train sets, we obtain a **jackknife** measure of error associated with the model. We perform this for every lambda in ridge regression and we obtain a function of lamdba and jackknifed error. Plotting this is a **scree plot**.

Ideally a scree plot will have a convex shape, so we can find a minimum. In many cases, this never happens. Therefore we look for areas that flatten out. This is entirely subjective.

Taking a look at the jackknife error, we don’t see much variation. Hence we will take at roughly lambda = 1000. This equates to column ten of the RAPM output.

The ordering here is:

- Damian Lillard
- Stephen Curry
- JJ Redick
- Klay Thompson
- George Hill
- Bradley Beal
- Paul Millsap
- Lou Williams
- Cody Zeller
- Harrison Barnes
- LeBron James
- Darren Collison
- Kyle Lowry
- CJ McCollum
- Nikola Jokic
- Karl-Anthony Towns
- Devin Booker
- Kawhi Leonard
- Isaiah Thomas
- James Harden

Here we see names we expect with a couple exceptions: Darren Collison and Lou Williams. I’ll leave Cody Zeller alone this time. While these players contributed significantly to their teams successes (Sacramento’s big time run towards 8th in January before the Boogie trade and Lou’s carrying of the Lakers before shipping to Houston); they cannot be adequately viewed as top 20 talent in the league. Therefore we can perform further analysis.

We only looked at point differential. What happens if we change point differential to rewards? Here, we replace points differential per 100 possessions with **positive activity per possession**. And instead of stints, we use possessions. Further, we apply a ridge regression. What do we obtain here?

This is a similar list, with similar attributes; such as Solomon Hill climbing up the ranks. We could use these ranking lists and then perform a **rank-aggregation** analysis such as **Kemeny-Young** to obtain a listing that combines both positive activity on the court and point differential.

We see that RAPM is a great improvement on plus-minus models, but many of the assumptions are failed to be met. Ignoring this, we still obtain understandable; somewhat non-iterpretable values that adequately measure player contribution.

Advanced models build off this and investigate **multi-liner models**, where player statistics are incorporated. Some use different definitions of responses, like we summarized above. Some use different input schemes. Whichever the methodology, the process is almost identical: build the data set, identify characteristics of the data to perform model assessment, and test the model.

That said, what do you have in mind for a model?

]]>

We will identify the players as A1, A2, A3, A4, and A5 for Team A, and B1, B2, B3, B4, and B5 for Team B. For insight, suppose that each rotation comes out as follows:

- A1, A2, A3 vs. B1, B2, B3 resulted in 11-5 over 15 possessions
- A1, A2, A3 vs. B1, B2, B4 resulted in 2-4 over 8 possessions; current score 13 – 9
- A1, A4, A5 vs. B1, B4, B5 resulted in 7-1 over 10 possessions; current score 20 – 10
- A1, A4, A5 vs. B3, B4, B5 resulted in 6-6 over 17 possessions; current score 26 – 16
- A2, A3, A4 vs. B2, B3, B4 resulted in 4-7 over 10 possessions; current score 30 – 23
- A2, A3, A5 vs. B2, B3, B5 resulted in 5-7 over 16 possessions; current score 35 – 30
- A1, A2, A3 vs. B2, B4, B5 resulted in 4-5 over 8 possessions; current score 39 – 35
- A1, A2, A3 vs. B1, B4, B5 resulted in 4-7 over 10 possessions; current score 43 – 42
- A3, A4, A5 vs. B1, B4, B5 resulted in 4-0 over 8 possessions; current score 47 – 42
- A1, A3, A4 vs. B1, B2, B3 resulted in 5-2 over 10 possessions; current score 52 – 44
- A1, A4, A5 vs. B2, B3, B4 resulted in 2-9 over 14 possessions; final score 54 – 53

Each row is called a **stint**; or a section of time that a grouping of players are on the court. A stint starts, in this case, when possession starts for all six players on the court; and terminates when either a substitution is made or a period is ended. For our hypothetical game there are **eleven** stints.

The traditional measure used to identify contribution of a player is the plus-minus, (+/-). This value is a simple calculation of the difference of number points a team scores and the number of points their opponent scores. In our example, player A1 starts the game at 0 – 0 and exits at 26 – 16 for a (+/-) of 10. Player A1 enters the game a second time with a score of 35 – 30 and exits with a score of 43 – 42. This time, player A1 is outscored 8 – 12 to finish with a (+/-) of 6. Finally, Player A1 returns for the ending of the game, getting outscored 7 – 11 to finish with a (+/-) of 2. Computing this quantity for all players, we have that:

- Player A1 2
- Player A2 -5
- Player A3 2
- Player A4 3
- Player A5 1
- Player B1 -14
- Player B2 6
- Player B3 3
- Player B4 6
- Player B5 -4

Note that they sum up to zero. This better happen for any game. If we went solely off of plus-minus, we would see that Player B2 and Player B4 are the players of the game, while player Player B1 is the worst player of the game. However, is this really so? Are we able to make an argument that Player A4 is the best player and that Player B4 just reaped rewards of not having to play with Players B1 and B5 at the same time at the end of the game? A simple solution is to consider the system of equations, which leads us to **Adjusted Plus-Minus (Adj +/- or APM). **

Adjusted Plus-Minus (APM) considers the system of linear equations that represents players playing on a court. The system is relatively simple. The set of equations are given by:

Let’s define some parts of this equation. First, the quantity **Y_i** is the average point differential of home team over away team per 100 possessions. The values **X_ij** identifies if player **i** on team **X** is playing in stint, **j**. To be complete, let’s assume Team A is the home team. Then, this value is -1 for a road player, 1 for a home player, and 0 if that player is not on the court. Let’s plug in all the pieces for our eleven stints:

The goal is then to find values of **beta** that satisfy these equations as best as possible. Either by direct solution or by approximation.

Let’s verify the first equation. For stint one, we saw Team A break out for an 11 – 5 lead over the course of 15 total possessions. Note that this is 8 possessions for one team, 7 for another. The differential is then +6 as it is calculated home score over stint minus away score over stint. Since there were 15 possessions, this breaks down to 0.40 points per home team gain per possession. We normalize over 100 points to obtain 40; which is exactly what we get for the value of **Y_1**.

Over this stint, players A1, A2, and A3 are on the court for Team A. They are all given 1’s. Similarly, players B1, B2, and B3 are on the court for Team B. They are all given -1’s. The other four players not in the game? They are given zeros, as they are contributing nothing on court for this stint. Plugging these values in, we get exactly the right hand side of the equation.

The beta values associated with the player is the **weight** of contribution that a player gives towards the differential. There’s a mechanical version of what this means from a regression point of view; but let’s not be hasty. That “hold all other players constant” bit doesn’t work here. **There always has to be three players on the court. **Let’s actually calculate this contribution.

If the player is added to the court, we must remove another player from the court. So let’s suppose that players A1, A2, and A3 are on the court. Suppose we wish to replace player A3 with player A4; while Team B introduces no changes. The difference between these lineups are **(beta_4 – beta_3)**. To see this, take the proposed lineup and subtract the current lineup. This is what we get on the right hand side. However, on the left hand side, we get **Y_2 – Y_1**, where 2 just means proposed stint while 1 means current stint. This is the difference in **differential per 100 possessions**.

This means that the beta values are **relative expected differential in contribution of a player with respect to replacement.** This is not a player’s pure contribution, but rather their **relative contribution**. In fact, a player with positive weight can be a negative contribution. How so? Replace a player with an 8.049 beta with a player that has a 2.569 beta. We expect the new player to contribute **less** on the court than the previous player; **as they are realistically a -5.48 contribution with respect to the previous line-up**.

To solve for this linear system, we assume a great many things. Instead of focusing on the mundane, let’s discuss the really important assumptions.

First, we assume that contribution of a player can be realized by their **expected value**. That is, a player playing in their first minute is assumed to have the same impact as their 43rd minute, regardless of tempo, bench time, or opponent strategy.

Second, we assume that we can solve this system of equations. Sure, we can apply mathematics and get numbers; but they may not be reliable as the methodology may not satisfy our assumptions.

Finally, we like to identify these estimates to help with **prediction**. In order to do this, we must assume some sort of distribution on the data. The most commonly selected distribution? The **Gaussian **distribution. It’s nice and has fantastic properties, but is difficult to satisfy. For instance, it assumes that our data is **continuous **and **takes a nonzero probability over the real line**. That’s already violated as **differential per 100 possessions is a discrete value that effectively maximizes at 400, **barring crazy free-throw situations. Situations as this would be converted basket, missed free throw and offensive rebound, converted basket; etc.

However, most folks are willing to ignore the violation of these assumptions and proceed as usual. That’s not a major problem, provided there is enough data, and they can be indicated as being roughly shaped as Gaussian. We will return to this when proper.

To solve this system of equations, we write the matrix form of the above system of equations.

Next we multiply, **on the left**, the inverse of the player matrix. Unfortunately, we can’t just do that as the matrix is **non-invertible **and **not square**. Instead, we appease the **Least-Squares** **formulation**. To do this, we multiply both sides by the transpose of the player matrix. This will give us a square matrix against the beta-vector. Our system now looks nearly unintelligible:

The left hand side of this is merely identifying** the differential per 100 possessions of Player A1**. To see this, the transpose of the player matrix puts the column of whether Player A1 is on the court as its row. This row is then multiplied by the differentials. The result is given by 40 – 25 + 60 + 0 + 0 + 0 – 12.5 – 30 + 0 + 30 – 50 = 12.5. Think of this as the **averaged traditional plus minus**** per 100 possessions**. Granted, this is not quite so as the number of possessions differ from stint to stint; but that’s the effective representation of this vector.

The player matrix gains a really nice property. We now see the **number of interactions between the players**. For instance Player A1 played in 8 of the 11 stints. Furthermore, Player A1 player with A2 four times, A3 five times, A4 four times, and A5 three times. Similarly, Player A1 played against B1 and B2 each five times, B3 and B5 four times, and against Player B4 six times. This matrix now counts the number of interactions between every player!

By multiplying by the inverse, we now obtain the average traditional (+/-) per 100 possessions **per** interactions of players on the court. This effectively identifies the amount of contribution that a player yields during 100 possessions, relative to the personnel played against! So let’s solve this.

This shows that Player B4 is the top player of the game with an expected 0.405 point differential game per possession. What’s more important to glean is that Player B1, despite obtaining -14 (+/-), has strong competition from Player A3 of being the worst player of the game according to APM. Why is this the case? This is due to **possession inclusion** and **player interaction**. This shows us that depending on match-ups, we can see a fluctuation in a player’s output. We could not see that with traditional plus minus.

Now the question is…** did this work properly? **Note that I showed you a classic example with solutions that we can argue away; but did this actually work? Why is Player A2 worth nothing? First off, let’s be clear that **I lied to you** to get these coefficients. If you perform the above computation, we obtain a **condition number** problem. In fact, the above **player matrix cannot be inverted!** To identify the values above, I either have to cross my fingers and delete players (I can’t in this example) or I have to apply **pseudo-inverses**, a methodology in numerical and matrix analysis that allows us to approximate inverses for solutions to linear problems. In fact, it is **this very reason** that Dan Rosenbaum required throwing away several players over the course of multiple seasons in his initial articles on Adjusted Plus-Minus. By having 60,000 stints over 2 seasons for approximately 500 NBA players, Rosenbaum was able to gain some flexibility in obtaining an invertible matrix for regression.

Let’s walk through the rest of this scenario and expose what happens next…

The above least squares solution is merely an **approximation**. This means that there is error involved with the calculation. Assuming Gaussian distributions, we can compute the associated error relatively easy.

First, we must compute and overall variance error. One way to do this is to compute **residuals**. Residuals are effectively the averaged error of estimated responses to the true responses.

Given our estimated betas, we can compute the predicted values of differential per 100 possessions. In doing this, we obtain something quite blasphemous! First, let’s compute these predicted values:

These values are not too far off from the truth! Taking the difference from the truth values and summing their squares, we obtain 3158.8. Note that Player A2 is viewed as non-existent. This means that the regression model identifies that there are only 9 players to compare; not 10. In this case, to obtain the average deviation, we divide the residual sum of squares by 11-9 =2, instead of 11-10 = 1. This gives us an approximated error of **1579.4**.

Next, we compute the associated variance of the beta’s. This is important. The variance requires that same inverse calculation above. Hence we need to have a pseudo-inverse again. The result gives the following:

As we can see, the variance is **HUGE**. Emphasis on huge. So much so that none of the values above allow us to state, statistically speaking, that Player B4 is indeed the best player on the court. So while APM is a huge improvement over the (+/-) statistic, it still fails miserably in its basic sense.

Instead there are two areas for improvement if we attempt to enforce linear methods for predicting player contribution: model specification (Rosenbaum’s methodology in the link above) by tailoring inputs, removing players, or adding years upon years more of data; or applying a filtering technique such as **Regularized Adjusted Plus Minus**.

If we look at the player interaction matrix above, we find that the rank of such a matrix will **always be at most N-1**, where **N** is the number of players. Think of the reasoning this way. We know in an NBA game, there are ten players on the court at any given time. Suppose there are N players total in the league. Each **degree of freedom, **or **independent pieces of information**, is equivalent to asking each player **“are you in the game right now?” **If we ask the first N-1 players, **we know whether player N is in the game without having to ask him**, regardless of permutations in asking which players.

If this rank is never **N**, then we **cannot invert the player interaction matrix!** Hence, another methodology is required. Such a methodology is given by **ridge regression**. Ridge regression applied to APM yields the model most commonly known as **Regularized Adjusted Plus Minus (RAPM)**.

Ridge regression is a Bayesian filter with a particular goal in mind: if we apply a slight perturbation to the player interaction matrix, we can guarantee the matrix is invertible. While we introduce a slight bias in the results, the bias is nearly negligible and we obtain low-variance estimates for each player. **And we don’t have to throw out players.**

What this means in, in the above problem, if we write the least squares problem as

we then obtain the perturbation form of

This time, the matrix is invertible and we are able to obtain estimates for beta. This perturbation is serves two purposes. First, it is a **regularization** on the betas. This means that we take the linear model (APM):

and put on a regularization term. If you are unfamiliar with regularization, think of it as a penalty for being abnormal. That is, if a value looks like he’s getting too far away from what should be expect (or “regular”), then we penalize that value and force him back to the group of other betas; or make that value look like any other old value. In this case, we penalize by adding on a square term:

The solution to this equation is now

Note that this isn’t exactly beta, but rather an approximation.

Now second, this regularization serves as a **dimensionality reduction technique. **If lambda is **zero**, then we obtain the **least squares model above!** This is bad news as we saw what happened with APM. However, is lambda is **infinity**, then the inverse is effectively zero, meaning that **no players have contribution!** This means we range between **N** players and **0** players yielding meaningful contribution to point differential. Because of this, you may hear of ridge regression as a **shrinkage method**, as the coefficients shrink towards zero as lambda increases. This value of lambda attempts to control **multicollinearity** between the players.

In fact, here’s the written work, if you are willing to delve into graduate level statistics; as I learned at **Wisconsin **as a wide-eyed 23 year old:

What this means now is, we focus on selecting a proper lambda and compute the estimates for beta. There are methods for finding a “comfortable” lambda and will hold off on describing those methods for later.

Instead we look at the coefficients for our ten players over different values of lambda.

First, we see the wildness of APM at the far left side. Next, we see all the coefficients converge towards zero as lambda blows up. Hence, we pick a warm fuzzy location and select for our analysis.

Interpretation of the coefficients is no easy task. We cannot simply do the subtraction trick above, as there is now a regularization term. Instead, we focus on the actual statistical process.

Ridge regression is actually a Bayesian filtering process, where the coefficients are seen as random quantities that follow a mean-zero Gaussian distribution, called a **prior distribution**. The value of lambda identifies the variance associated with the Gaussian and therefore controls how quickly each beta value will **shrink** with respect to lambda.

In light of this, the coefficients are interpreted as follows: **amount of differential contribution with respect to variation**. Here, the variation is lambda; which filters large-magnitude values of beta out. We can think of this as approximate differential contribution scaled by lambda.

Taking a look at the players from our simple example, we have that Player B4 is the top player; while Player B2 is right beside him. Effectively, this agrees with (+/-), but more importantly is attempting to negate out the effects of Player B1 on both players.

What we **cannot state** is that Player B4 contributes 1.17724 more points per possession for his team than Player B1 in the same situation. This has to be said, relative to lambda = 20. Regardless, this provides for a methodology of understanding the value of a player within a particular system; and hopefully gives insight on how PM, APM, and RAPM work.

In our next article, we take a deep dive looking directly at the 2017 NBA season.

]]>

There’s a fantastic article from Doug Eberhardt at SBNation that details the Hammer Screen, leveraging a Fast Draw-type implementation sketched out by Zak Boisvert. Without going into the depth that has already been achieved by these writers, our focus will be on outlining the motion, identifying wrinkles that some teams put into the action, and then identify methods for analysis.

As there has been so much said about the Hammer for the Spurs, so much that SBNation has written **two** articles on the same subject (!!), I will make sure to not show a single Spurs action.

The Hammer screen is a **weak offensive maneuvering **that frees a shooter while the defense’s focus is aimed to the strong side. The action is almost similar to a flare screen, where the player being screened pops out away from the key towards the three point line. However, the difference here is that the action is **timed** in coordination with distinct activity towards the basket on the strong side of the court. The goal? Pull the defense in to stop penetration from a guard, set the weak side screen on the shooter’s defender, and kick out across the court to the now-free shooter.

Let’s take a look at an instance of the Los Angeles Clippers running the hammer. This is the famous 99-98 Clippers 27-point comeback win over the Memphis Grizzlies in Game 1 of the First Round of the 2012 NBA Playoffs. During this key run, the Clippers pulled out the Hammer:

In this play, the Clippers run a sideline screen action with **Reggie Evans (#30 – LAC)** setting the screen on **Michael Conley Jr. (#11 – MEM)** to free **Chris Paul (#3 – LAC)**. If you recognize the start of this screen play, we covered this recently in covering the BLUE defensive scheme. In fact, we see the Grizzlies start out running BLUE! This forces Paul to go baseline, getting picked up by **Marc Gasol (#33 – MEM)**.

As we see the BLUE defense, Gasol is beaten by Paul. **Mareese Speights (#5 – MEM)** is caught hedging at the Two-Nine, forcing him to make a decision: pick up Paul or cover Evans, who is running a **Drag Screen down the lane**. Turning his entire focus towards Paul, **Blake Griffin (#32 – LAC)** sets a high post weak-side **(****Hammer)** screen on **Rudy Gay (#22 – MEM) **to free up **Nick Young (#11 – LAC)**, who breaks for the corner.

In a play worked to perfection, Paul steps underneath the basket towards the sideline as Young slips into the corner. Paul hits Young with a quick pass as he exits out of bounds; leaving Young with 7 feet between himself and the closest defender. Young knocks down the three to cut the deficit to 9.

The Indiana Pacers also run the Hammer screen but use different strong-side action to pull the defense in towards the paint. In this situation, the Pacers are down 94-103 to the Charlotte Hornets with 2:25 remaining in the game.

In this action, the Pacers post up with **Paul George (#13 – IND)** being guarded by **Nicolas Batum (#5 – CHA)**. We see that **Cody Zeller (#40 – CHA)** hedges the Two-Nine; releasing off of **Ian Mahinmi (#28 – IND)** in case George spins towards the basket. By taking his focus off of Mahinmi, Mahinmi is now free to head hunt **George Hill’s (#3 – IND)** man, **Kemba Walker (#15 – CHA)**. He does just that, freeing up Hill with a **Hammer Screen** as George spins towards the basket, drawing Zeller to the baseline for a double team. Throwing the ball across the court, Hille is open for a slightly contested three point attempt that cuts the lead to six with 2:14 remaining in the game.

The Pacers ultimately lost, 101-108.

Let’s take a look at how this play works. The action is almost always the same: A ball handler drives towards the basket, drawing a defense to collapse around the rim. A weak side defender is caught off guard by a screen, allowing a shooter to flare into the corner. The other two offensive players are wrinkles in this offensive scheme, free for a coach to design misdirection. Let’s map this action out.

For the Clippers (Red) version of the play, a drag screen is executed in response to the BLUE defense ran by the Grizzlies (Green).

We see that the convex hull of the defense well covers the points of attack. The only question marks are the path towards the basket; where Marc Gasol is guarding the block after sagging on the screen… and the three point region where Nick Young is lingering on the weak side. Otherwise, this defense should lead to a low percentage field goal attempt.

For reference, **Nick Young was a 36% three point shooter** while **Eric Bledsoe (#12 – LAC) was a 27% three point shooter (and rookie)**. This play breaks down because of two items: Gasol gets beat, forcing Speights to collapse.

Here, we see that the entire Grizzlies’ defense is covering the key and has large separation on two spots: Nick Young and Eric Bledsoe. Bledsoe, a low percentage shooter is lingering at 30 feet from the basket. Due to this, **O.J. Mayo (#32 – MEM)** opts to cover a low percentage shooter in an even lower percentage range; effectively covering no one on defense.

Instead by having Mayo opt to sag to the nail, this would have allowed Rudy Gay to **sag on the passing lane**. The analytic presence here is **passing lane coverage.**

Passing Lane Coverage is a simple metric that identifies what percentage of time a player is **in the passing lane** **regardless of location on the court**. If we condition field goal attempts off of passes, this gives us insight as to how out-of-position a defensive player is from receiving a pass.

Let’s draw the passing line in both ends of the drive from Chris Paul.

In this case, Rudy Gay is within the passing lane. If Chris Paul were willing to make a pass of thirty feet, through three defenders, then Rudy Gay has this play well covered. Unfortunately, this is not the play. Therefore covering the passing lane is not the optimal play.

Here, we see that Gay is now far away from the passing lane. This is the initiation of Blake Griffin’s screening motion; hence the screen is not the root cause of this separation. The root cause here is **O.J. Mayo not allowing Gay to sag along the passing lane. **If Gay were to sag, Griffin’s screen would be on the low block; not the high post.

It should be noted that Mareese Speights is in the passing lane. But he really isn’t. This bit comes from **scouting knowledge**. A player that is in the passing lane must have the ability to have active hands in a passing lane. What this means is, if a defender closes out on a ball handler, they are no longer in an active passing lane, but rather a on-ball defense. This scouting knowledge typically translates into coaching speak as **Man-You-Ball** or **Quarter/Third/Half-Way**. In the case of Speights, he is too close to the ball handler to make a meaningful off-ball defense with respect to Nick Young.

A secondary analytic is the passing lane distance, or the number of feet for a defender to cover a passing lane between the ball handler and his respective man. This distance measures how far out of place a defender is from the play.

In this case, we find that Rudy Gay is just under six feet (5.74 feet) from covering position. We can measure this distance with a third analytic, which is called **close out velocity**.

Close out velocity allows for an offense to know the recovery speed of a defender. The computation is relatively straightforward, however slightly more complicated that the previous two analytics. In this measurement, we take the time of flight of a pass and measure the distance traveled between the **relative **defender’s position at the start and finish of this time of flight. Taking the fraction of this quantity, we obtain **feet-per-second recovery**. For the roughly 20 games of SportVU data that we have for this, **Tony Allen (New Orleans) **and **Avery Bradley (Detroit)** are two of the fastest recovery men in the league.

Let’s be clear on this quantity. At the start of the pass from Chris Paul, **Rudy Gay is located 12.974 feet from Nick Young**. At the end of the pass, **Rudy Gay is 9.379 feet when Nick Young** receives the pass. While Rudy Gay has traveled a total of 8.474 feet; he has only **closed out a relative 12.974 – 9.379 = 3.595 feet** over **0.66 seconds** for a rate of **5.44 feet per second**. Compare this to a Tony Allen, who habitually is over 7 feet per second.

This means that on this play, Gay has a close-out rate of 5.44 feet per second. This means, as a coach on offense, you identify sets that spreads fast defenders out such that passing lanes open up; or lighten up on slower defenders to ensure a better opportunity to rebound. In this case, Gay closed out on the play better than an average player and still was unable to harass Young into a miss.

I encourage you to try this for the Pacers example above!

Let’s take a look at a player who actually covers the Hammer so well, that he leaves his team out to dry. In a game between the **Minnesota Timberwolves **and the **Los Angeles Lakers** on February 2nd, 2016. Down 5 with 13 seconds to play, the Timberwolves go straight into the Hammer with **Ricky Rubio (#9 – MIN) **speeding towards the baseline.

Once again with the sideline screen action, the Lakers are not quite in BLUE position and find themselves in a double team. The screener, **Karl-Anthony Towns (#32 – MIN)** stays high and out of the play. Despite being a rookie big-man, Towns is still a 34% three point shooter and is a pop-threat in a close contest.

**Brandon Bass (#2 – LAL) **and **Lou Williams (#23 – LAL) **are the trap men. Williams getting screened and Bass leaning too far, allows for Rubio to speed to the rim. This forced **Julius Randle (#30 – LAL) **to cover the Two-Nine, abandoning **Gorgui Dieng (#5 – MIN)** to set the hammer screen at the high post on **Jordan Clarkson (#6 – LAL)**, freeing **Zach LaVine (#8 – MIN)** to sprint to the corner.

However, instead of fighting through the screen, clarkson darts for the passing lane, as a **tipped pass out of bounds stops the play and forces the Timberwolves to restart the offensive position with less than 10 seconds left in the game**. Dieng and Rubio, seeing this, get a brilliant dump pass for an easy lay-up.

The question is then, who blew the coverage?

To be clear, Jordan Clarkson busted the hammer screen; saving the Lakers for a potential three point field goal from a **39% **shooter. Best on the court for the Timberwolves.

Brandon Bass, found himself in terrible recovery; unable to slow Rubio down. After allowing Rubio to pass and forcing Randle to effectively cover Rubio, Bass stayed outside of the lane to guard Towns; who would have required a miracle pass from Rubio (oppositie direction). **Kobe Bryant (#24 – LAL)** strayed at the top of the key to guard an unknown player. Who was that player (who was so far out of frame, that we never see him)? **Andrew Wiggins (#22 – MIN)**, the one who struggled to shoot 30% from the arc.

Taking a look at the coverage, an argument can be made that Bryant could have covered Dieng. Moreso, stepped in front of him, a difference of **four feet separating them. **Had the pass gone to Wiggins, the pass would have needed to clear Bryant, who would have been in the passing lane, to a low percentage shooter who was **ten feet beyond the arc**.

However, we won’t call out Bryant as he’s won more than enough games in his lifetime; including this game as the Laker prevailed 115-111.

However, we can apply these analytics (**passing lane coverage,** **passing lane distance) **to show how coverage performs well (Clarkson) to take away the three point attempt; as well as other analytics **(convex hull coverage) **to show how break downs occur. In this case, Dieng punctures the convex hull at a high probability shot region; allowing for the Hammer wrinkle to breathe life in a Timberwolves come-back with 9 seconds remaining.

So now that we see how we can measure defenses in the Hammer, how would you draw up a defense to stop it? How would you build personnel to slow the offense down and anticipate the plays?

These are simple measures; we can even take a step further to build **predictive analytics**. But we can save that for a later date.

]]>

During the 2016 NBA Playoffs, the Oklahoma City Thunder executed pick-and-roll scenarios to near perfection in their first four games against the Golden State Warriors in the Western Conference Finals. For example, consider this Kevin Durant – Russell Westbrook action on the right wing.

Durant sets a screen on Stephen Curry of the Warriors, allowing Westbrook the chance to go over the top of the screen and into the lane. Understanding that Westbrook is a premier rim attacking guard, Harrison Barnes (#40) of Golden State hedges out to deter Westbrook from attacking the lane. The result is leads to Durant popping to the wing, uncontested. Westbrook passes to Durant; leading to a basket.

In a second play Steven Adams (#12) sets a screen for Kevin Durant’s man, Harrison Barnes, at the top of the key. This time Adams’ defender, Andrew Bogut (#12), sags back at the free throw line.

The difference here is that Bogut understands that Adams is not a threat to shoot from outside and waits to cover Durant. The problem here is that Bogut never engages Durant and continues to sag, goading Durant to shoot an uncontested mid-range jumper. Durant obliges for two more points.

In a third example, we take a look at Nick Collison (#4) screen on Cameron Payne’s (#22) defender, Ian Clark of Golden State (#21). Understanding that Collison is not a premier perimeter shooter (like Adams), Marreese Speights (#5) sags on defense, preferring to engage Payne in the paint.

The result is similar to Bogut’s strategy, as Payne shoots from the free throw line; this time somewhat contested compared to Durant’s earlier attempt. Despite this the result is the same.

So the question is this: **what did both teams do right and what did both teams do wrong? **The answer isn’t a simple black-and-white response. However, we can construct a methodology to measure how effective the Warriors’ defense was against the Thunder during these four games.

The above three examples are a common pick-and-roll play in the NBA. Here, the screen comes from the center of the court, to create space for the ball handler who is currently on the wing. Most of the time, the court is cleared with the other three offensive players on the weak side, thus turning this play into a typical pick-and-roll in a two-on-two format.

Taking advantage of the rules in the NBA, a defender cannot be posted in the lane without actively guarding a player for three or more seconds. The defender may be on the opposite side of the floor from the man he is defending, however, this means the defender will more than likely be 20 or more feet away from his man; which is usually not a good idea. Hence, the sideline screen and roll commonly starts in this position:

In this diagram, we see that the strong side of the court is in two-man action, with the three other offensive players stretching the court. If any of the defenders move into the lane, they are only allowed to sit in the lane for **“2.9 seconds” **before being forced to either exit the lane or actively guard an offensive player foolish enough to enter the lane. Failure to do so results in a technical foul and a free throw for the offense.

There are a plethora of decisions for the defense here. Let’s tackle the four primary methods for guarding the pick-and-roll.

If both defenders jump the ball handler, this leaves the screener to be free. If the screener is a **“Flex-4”** style of player, such as Kevin Durant or Dirk Nowitzki, or a **“Spot Up Big” **like Kevin Love, Serge Ibaka, or Blake Griffin (who took roughly 2 3PA per game last season!), then the defense is in trouble and likely to give up baskets. **This was indeed the case in example one above.**

If the screener’s defender sags on defense, then the ball handler’s defender is forced to fight through the screen and recover on defense. This defensive posture coaxes a ball handler to shoot a longer distance shot while protecting the lane and being in better position for a rebound. The hope is that the ball handling defender is quick enough and recover on defense and deter a field goal attempt.

The difficulties with this defense, despite being quite popular, is three fold. **First, **if the ball handler is a premier shooter off the dribble, then they get a wide open look. **Second**, is the ball handler is a premier rim attacker, this puts the defender in a precarious position as they are left one-on-one with the ball handler. **Third**, the screener becomes an open roll man and the action turns into 2-on-1.

In the examples above, **this happened twice, both resulting in the first option (open look mid-range)**.

Instead of sagging, the screener’s defender may opt to hedge the ball handler. This motion pushes the ball handler off their attack off a screen and away from the basket. This action buys the ball handling defender an extra fraction of a second to recover on the ball handler.

This defense is extremely popular in collegiate basketball but leaves for a wide open roll from the screener towards the basket. Typically this will result in a look from the post or mid-range; rarely an attempt from beyond the arc.

This method is one of the least desirable methods of defense as it commonly invokes mis-matches on the court. Typically teams will force either a small defender onto a bigger offensive player, a slow defender on a quick ball handler, or a high value player into a high-propensity fouling situation.

The **BLUE** defense (also known as **ICE**) is a different form of defense that utilizes action on the weak side; allowing for the defense to be in better position. The action is simple, there are two primary positions on the weak-side of the court. These are the **“Two-Nine” **and the **“Nail.”**

The Two-Nine position is the lane. It is called the “Two-Nine” to represent the 2.9 seconds a player is able to squat in the lane without actively defending a player. Anything after 2.9 seconds, a **defensive three seconds** violation is called; resulting in a technical foul and a free throw against the defense.

If the defender is actively guarding an offensive player in this region, the defender may be in the lane for as long as they please. Otherwise, they must clear the lane to reset the defensive three second count. More importantly, if a smart rotation occurs, a defender may slip across the lane and be a third defender to cover the pick-and-roll for a brief period of time.

The nail position if the location just above the free throw line. It is given this name because there is an actual nail located at the center of the free throw line at each end of the court. If you found yourself playing basketball prior to the 2000’s, it would have been typical of your coach to instruct you to align your body with this marking on the court to shoot free throws. And if you were anything like me, a right handed shooter with a herky-jerky release, you probably stood a little to the left of this thing.

This nail location, however, serves as defining the strong and weak sides of the court on defense and is not subjected to defensive three seconds. This a primary help-side location.

The action in BLUE is to force the ball handler towards the corner and hedge with the screener’s defender. This action forces the basketball away from the middle of the court, limiting damage that can be done by a ball handler.

This action still has flaws, but allows for easier recovery from the on-ball defender. The only actions the ball handler can take in this situation are to **hoist a contested shot**, **pass to the screener away from the basket**, or **dribble out and reset the offense**. None of these situations are guaranteed missed field goal attempts or wasted possessions, however, it forces the offense to spend and extra few seconds and helps lower effective field goal percentage as shooters are contested more frequently. In fact, SB Nation gave a how-to guide on this in decent detail back in 2013; with the exception of smart rotation action.

However, recall that we led this section with the terms of Two-Nine and Nail. Here’s where BLUE becomes dominant. Let’s consider Tom Thibodeau’s “weak side” defense on BLUE.

In this sequence, the **Houston Rockets** are attempting a sideline screen with Omir Asik (#3) to free Tony Douglas (#15). **Chicago Bulls’** Nate Robinson (#2) moves weak side, forcing the screen to push Douglas to the baseline. Joakim Noah (#13) drops, acknowledging that Asik is not a premier perimeter shooter.

However, Asik is capable of rolling to the elbow, taking a pass that splits Robinson and Noah. The question is **why not? **As **Patrick Patterson **(#54) of the Rockets moves to the weak-side short corner, **Taj Gibson **(#22) **holds the Two-Nine instead of chasing Patterson**. This motion is the beginning of a **smart rotation**.

A smart rotation occurs if a player rotates from a low-probability shooting position to defend a high probability shooting position. In high school and college levels, this is merely **playing the weak side** and rotating when necessary. At the NBA level, players are unable to camp in the lane and therefore rotations need to be quicker and smarter.

In this case, let’s suppose Asik rolls to the middle and receives the pass. The smart rotation works this way: **Gibson** steps up and contends Asik in the lane. Patterson **should** move to the weak-side block, allowing for a second pass for a lay-up. In this case, **Jimmy Butler **(#21), who is already hedging at the elbow, slips to deny that pass. This forces either **Luol Deng **(#9) or Robinson to cover **James Harden** (#13) and **Chandler Parsons** (#25), who are both straying at the perimeter. This rotation either results in eating **thirteen seconds of shot clock** or **resulting in a contested shot by Asik**.

A way to hedge the offense one-to-two plays ahead on defense is to enforce smart rotations through the Two-Nine and Nail. These regions, illustrated, are given as ellipses in the following image.

The yellow ellipse is a common location for the Two-Nine. Typically, the offensive player will either sag to the short corner on the weak side, or swing into the corner. This forces the Two-Nine to move out of the lane within three seconds.

The blue ellipse is the nail location. This is a more challenging position to cover as this player tends to be guarding the weak-side wing. If this player is, say, **Steph Curry** or **Klay Thompson**, then this position may go unfilled. At this point, the opposite corner may pull to the weak side of the lane; intimating a fake nail presence.

Now that we understand the basic concepts of BLUE defense, the question is now, **how do we understand how well a team plays BLUE defense? **Or more importantly, **what physical tendencies do teams, or particular players, have when operating in a BLUE defensive scheme****?**

We can compute simple calculations such as distance to the rim, distance to ball handler, and location of quadrant on the court. This would give some spatial awareness. More importantly, this gives us awareness of how fast players move.

For instance, let’s consider identifying players closest to desired locations. We can compute the closest players on the weak side of the court to the Two-Nine location and the Nail locations. This would give us a distribution of how likely players are hedging on weak side defense. A really neat exercise was performed in this area (much more was done here than I am leading on; I need to re-emphasis how cool this is…) to show how “ghost players” would react in a defensive situation. Hence the reason for the Raptors’ backdrop for the courts above… **Seriously, read the article. Zach did some great reporting there. **

We can even take this a step further. In one of my previous posts, I mentioned being in development of a spatio-temporal model that monitors the correlation between players on defense. It builds an empirical orthogonal function computation that tracks the probabilistic movements of players. Combine this with classification of **“good” **or **“bad” **rotations; or **“scored” **versus **“unscored****” **possessions, we have a classification system that readily admits how players reacts along with their reaction times and **“ghost” **possessions.

A second model we can use simpler models such as **convex hulls**; work that I had performed back in 2013 for an Eastern Conference team (no longer in use I found out last year). The idea is simple, we mark locations on the court that need to be covered and instill simple rules such as **“don’t get beat by your man****“** or **“do not let penetration into the lane occur”**. If the convex hull covers these regions and the ball is safely protected outside of the convex hull, **and the offense is located near the boundary of the convex hull**, then a team rarely scores. By monitoring the **in/out** states of the rules set locations noted above we are able to quantify the capability of a team’s defense; or alternatively, quantify an offense’s ability to attack a defense.

Let’s walk through the Convex Hull situation. In an example from the 2015 season between the Memphis Grizzlies and the Golden State Warriors, we find ourselves with yet another sideline screen on the left hand side. The Grizzlies double team **Klay Thompson** (#11), freeing **Draymond Green **(#23) for an open jump shot attempt.

The green shaded region is the convex hull of the Memphis defense. Here, we see that **no one is protecting the Two-Nine nor the Nail**. In these locations, **Zach Randolph **(#50) shoudl be holding the Two-Nine and **Jeff Green **(#32) should be hedging the nail. This is due to the fact that **Mike Conley Jr. **(#11) **cannot leave Steph Curry **(#30) **alone**.

While we see the nail is covered, it is not covered as the ball penetrates the convex hull with Draymon Green getting a pass from Klay Thompson. At this point **Mike Conley **collapses the convex hull by covering Green, leaving **Curry wide open for three**. However, **Zach Randolph **bites and turns the hull into a spear, indicating that there are **two high probability regions to score: Curry for three **(No boundary, left uncovered) and **Andre Iguodala **(#9)** at the low post, uncovered for a lay-up**.

This results in an easy lay-up for Iguodala.

As we come down the court, Conley immediately gets a sideline screen… **yes on the left side** but **Stephen Curry and Festus Ezeli **(#31) **BLUE the screen****, leaving Randolph free to run the perimeter. **Draymon Green sets the nail; thanks to **Marc Gasol **(#33) passing through the lane. This allows Green to settle into the Two-Nine position while Iguodala hedges to the nail.

Conley kicks the ball back to Randolph and **(****recall the smart rotations segment above!)** Iguodala rotates onto Randolph just enough to stop a field goal attempt or drive, allowing Ezeli to recover. **The Memphis gets zero looks at a shot and have to reset the offense**.

Capturing the model, we have that Golden States covers all positions and leaves zero high probability shot regions open. This is due to non-movement of Courtney Lee (#5) on Memphis and Gasol’s rotation through the lane, allowing Golden State to rotate smartly and safely.

Now that you have seen how BLUE/ICE breaks down and where anchor points on the court for smart rotations, how would you develop an algorithm to quantify a team’s capability of playing pick-and-roll defense?

]]>

In this article, we quickly walk through the four factors, illustrate their utility within the game; and then compare a statistical and a mathematical model to identify the relationship between success and the four factors of the game.

The four factors are to **score efficiently, protect the basketball on offense, grab as many rebounds as possible, **and **get to the foul line as often as possible.** Each of these elements are closely related to the termination of a possession for a team. There are other options such as dead ball rebounds, end of period, and specialized fouling situations. These are few and far between and rarely impact possession data over the course of a season. Hence we will focus on the main four ways to terminate a possession.

This rule is the simplest of all and tends to be one of the hardest. An ideal team will always score, every time. However, teams are never ideal and we are left with attempting to identify the best way to measure scoring in the NBA. Oliver proposed using **effective Field Goal Percentage** **(eFG%)**. This measure is a scale corrected measure to identify field goal percentage for a team. The scale correction is to account for three point field goals. Note, however, eFG% cannot be taken alone. For instance, you cannot determine the type of team (block vs. perimeter) with eFG% alone. However, with eFG% we do obtain the best relative measurement for points per field goal attempt; simple by multiplying by two.

To be clear, eFG% is given by

If a team cannot score on every possession, then the optimal task is to grab every miss and give the team a second-chance opportunity. An offensive rebound extends a possession and allows for a second attempt at a field goal. This is effectively a “do-over” for teams and when strategized around properly, can be a deadly plan of attack for a team.

To measure the quality of a team’s ability to rebound, we simply compute the **offensive rebounding percentage (OREB%)**. This quantity is calculated as the number of offensive rebounds divided by the number of available rebounds after a missed field goal attempt. Note that this value is not over the number of missed field goal attempts.

The **Toronto Raptors** in the 2017 NBA season managed 871 offensive rebounds while giving up 2,619 defensive rebounds. Despite this, the Raptors missed 3,707 field goal attempts. This leaves 217 missed field goal attempts out of the picture. These can be attributed to dead ball rebounds, fouls before a rebound is secured, and expiration of period. Whichever reason, this is why we do not divide by the number of field goal misses. For the **Raptors**, their OREB% for the 2017 season is **0.24957**.

The next way to score points other than scoring a field goal or giving the team a second opportunity is to get to the foul line. Getting to the foul line serves two purposes in a game. First, it guarantees attempts to score points. Second, it inches opponents ever closer to being out of the game. Just getting to the line is not enough. Converting said attempts into points becomes the most important part of the equation.

To measure a team’s quality of getting to the foul line is to identify the number of free throws made per field goal attempt, called the **free throw rate (FTRate)**. The reason the comparison is to FGA instead of Number of Possessions is unknown. However, it’s not absurd. This is due to the fact that most teams average just under a field goal attempt per possession. For the 2017 NBA season, the worst team was the **Brooklyn Nets (0.8401)** while the best team was the **Detroit Pistons (0.9414).**

The final step of the four factors is to ensure that, other than a defensive rebound, a field goal attempt or free throw attempt terminates the possession. That is, **don’t turn the ball over**. This is a simple measurement called **turnover percentage (TO%)**. This measure is simply to calculate the percentage of possessions that ended in a turnover.

Despite Oliver coining the term “Four Factors,” this process is actually eight factors. A team who scores a lot is not necessarily better. They have to stop their opponent from scoring. Ask **Paul Westhead about that**. This means that we can take the same four factors and calculate the opponent version for each team.

The lone exception is rebounding.

For rebounds, we instead calculate the **defensive rebounding percentage (DREB%)**, which is the number of defensive rebounds divided by the number of opponent’s field goal misses that are available for rebound. Continuing on from the example above with the **Toronto Raptors**, who has a 0.24957 offensive rebounding percentage, we find that the Raptors grabbed 2,676 defensive rebounds while yielding 831 offensive rebounds. This results in a **0.76305** DREB% for the 2017 NBA season.

This means that we look at eight overall factors in Oliver’s Four Factors:

- Offensive Factors
- Effective Field Goal Percentage
- Turnover Percentage
- Offensive Rebound Percentage
- Free Throw Rate

- Defensive Factors
- Opponent’s Effective Field Goal Percentage
- Opponent’s Turnover Percentage
- Defensive Rebound Percentage
- Opponent’s Free Throw Rate

Here are the resulting four factors for the 2017 NBA season:

In basketball, success is not the number of points scored, but rather the sign of the differential of score at the end of a game; called a **win** if the sign is positive. Hence success is defined as winning a game.

Oliver placed a certain set of weights on each of the four categories to ascertain value of each factor in regards to a win. The weights are

- 40% on Shooting
- 25% on Turnovers
- 20% on Rebounding
- 15% on Free Throw Rate

The question is whether these rates actually capture the winning tendencies of a team.

To start, we can fit a naive model to the data above. Armed with the eight factors measured from 2017 data, we can use the number of wins as a response and perform a simple least-square s fit. This is a projective method that finds the hyperplane passing through the 8-dimensional “plane” (eight factors) passing through the 9-dimensional space (eight factors plus number of wins) such that the Euclidean distance between the plane and the observed number of wins is minimized.

If the data were assumed to be of Gaussian nature with fixed, independently, identically distributed errors, then we obtain the classical **linear regression model**. We ascertain the strength of fit by checking the **residual sum of squares** through the **coefficient of determination**. This measure identifies the percentage of variation between wins explained by the linear model. If this number is close to one, we have an explanation of the model to the data. In absence of statistical assumptions, this is fine. However, predictive power is not the greatest **unless statistical assumptions are upheld**. That is, take the results as a look into the past without using the weights to predict the future; unless assumptions are satisfied.

If we proceed with no intercept, we assume that the model

The values of the beta’s are the weights associated to the number of wins out of 82 games. Note that this is just purely a mathematical model with no assumption checks. That said, applying a least squares fit through projective algebra, we obtain

- Beta 1: 351.1146
- Beta 2: -287.2934
- Beta 3: 137.1432
- Beta 4: 41.0642
- Beta 5: -409.9348
- Beta 6: 289.4278
- Beta 7: 58.7066
- Beta 8: -70.4028

So the results give us some pretty good feelings! First, **the coefficients are in the correct directions! **This means for every positive action a team makes, they are rewarded while every negative action a team makes is punished.

Second, the **residual sum of square fit is high.** This means that the coefficient of determination is indeed close to one! How close? The value is **0.9138**. That’s a really decent fit.

Third, we obtain the model weights and therefore the weighting for each team!

Taking a closer look at the **statistical model**, we actually find that points scored drive teams to winning. This is relieving, but also quite uninformative.

We also find that Free Throw Rates are fairly negligible; as well as defensive rebounding. What this does show is that offensive rebounding and limiting turnovers are key to improving chances of winning.

An interesting note here is that **defensive rebounding is valued less than offensive rebounding; which agrees with Hollinger’s PER model.**

So what about these weightings? If we were to average their absolute values for each of the four factors, we gain insight into whether the 40/25/20/15 rule is upheld by the data. In this case we find:

- Shooting: 380.52 average
- Turnovers: 288.36 average
- Rebounding: 97.9235 average
- Free Throws: 55.7335 average

This yields a weighting of **46.2617 / 35.0574 / 11.9051 / 6.7758** result. This identifies that rebounding percentages and free throw rates are over-inflated and instead should have more emphasis on effective field goal percentage and turnovers.

To give full comparison, if we used the shoddy possession estimator formula of **FGA + 0.44*FTA + TO** we obtain weights of **44.8673 / ****38.6925 / 9.8396 / 6.6006.**

If we predicted the number of wins on the season using the linear model, we obtain a decent fit of 0.9138 and manage to adequately predict the number of wins with zero teams more than two standard deviations away from truth.

The worst predicted team is the **New York Knicks**: Predicted 37.5732 wins, Actual 31 wins. The other three far-tailed teams are the **Miami Heat **(Predicted 47.1967, Actual 41), **Oklahoma City Thunder **(Predicted 40.9732, Actual 47), and **Boston Celtics **(Predicted 47.0093, Actual 53). All other teams were within 4.5 games.

If we enforce an intercept, we obtain a **slightly** better fit… as we are introducing a new variable into the model; however the improvement is negligible.

The p-value for this model indicates that the slope is negligible, however the model does indeed improve. So let’s naively keep this model and see what happens.

First off, the coefficients elicit similar weighting structure as the no-intercept model with a **44.5990 / 34.1605 / 15.5112 / 5.7293 **as the weights. Again, turnovers are valued much more than Oliver pointed out previously. Also, again, free throws are less valued.

If we use this model to predict the number of wins, we obtain a slightly better fit overall; however the worst scenario is **worse**.

The worst case scenarios are again the **Boston Celtics **(Predicted 45.8309, Actual 53) and **New York Knicks** (Predicted 38.0212, Actual 31). However, Miami Heat and Oklahoma City Thunder tightened in closer to their prediction.

To perform one last check , we take a cursory look at a principal component decomposition of the four factors matrix. In the previous exercises, we identified that free throw rates are fairly negligible with relatively high p-values; similar for defensive rebounds. Since we made the claim (without checking!) that the data is close enough to follow a Gaussian distribution, we may as well perform a PCA decomposition to look at some relationships between the factors.

To start, a **principal component analysis (PCA)** is a method that transforms the data from a Euclidean domain to an uncorrelated domain best ellipsoidal fit. The semi-major and semi-minor axes of the ellipsoid turn out to be the **eigenvalues** of the decomposition and give insight into the relationships of the data. For instance, if we find that two features are completely correlated, we will find that there is a **zero eigenvalue**.

Performing such a decomposition here, we find that the scaled eigenvalues for Oliver’s Four Factor analytic for the 2017 NBA season are **0.3030, 0.2229, 0.1916, 0.0990, 0.0732, 0.0515, 0.0333, **and **0.0255**. We scaled by the sum of the eigenvalues to give an idea of how much variance is explained by that axis of the ellipsoid. This direction/axis is called a **principal component**.

In this case, we find that 95% of the total variation in in Oliver’s Four Factors are explained by **six principal components of the eight features**. In fact, let’s keep seven components and run a regression on these components. We obtain the following results

We actually obtain a great fit in the reduced space (0.917 compared to 0.922). We can plug in the principal components into this model to obtain the weights for each of the four factors. The results look better intuitively, however note that this model is not better than the two linear regression models.

Again, the **New York Knicks** are near two standard deviations off with 38.2860 predicted wins compared to 31 actual wins. Similarly, the **Boston Celtics **are predicted to have 46.8997 wins compared to 53 actual wins.

What this model shows us is that **Oliver’s four factors **are indeed correlated; enough to reduce the dimensionality from 8 factors to 7. Unfortunately, the correlation is quite tangled and this **does not indicate throwing out a particular factor. **

What Oliver’s Four Factors shows us is that an intuitive breakdown of a possession allows us insight on how to quantify the impact of possession completion on wins. For instance, finding a particular balance of rebounding, scoring, ball handling, and attacking of the rim is necessary in picking up wins in the NBA.

Finding the right mixture is pertinent as scoring and ball control are by far the strongest factors. However, isolating these variables is not the right way to go. Rather, this is an initial first step to identify weaknesses in a team’s ability to win. This give insight as to which of the four core areas a team is deficient compared to the league. From here, development of metrics to acquire talent to fill the necessary roles may be used, **or even pure old school scouting and coaching** to identify the non-measurable qualities of a player in an effort to improve players in current roles can be performed.

But the idea is simple: Score when you can; rebound for second chances when you can’t, and, according to my college coach… **“Don’t ever turn the got damn ball over.”**

]]>

For example, every rebound is reduced by the league rate of rebounding. For the 2016-17 NBA season, this amounted to reducing all defensive rebounds by 76.7% and reducing all offensive rebounds by 23.3%.

Consider two players who are identical in every way. Same number of minutes, same number of points scored with identical field goal (two’s and three’s as well) and free throw percentages, same number of steals, same number of steals, and same number of rebounds. These two players **should** have the same PER right? **Not a chance**.

First off, if these two players are on different teams, then they are affected by their team’s performances. There are two parts of PER, which I coined the “What the Heck” factor given by

For these two identical players, the league assists, field goals made, and free throws made totals are going to the be the same. However, suppose one player is on the **Golden State Warriors** and the other player is on the **Phoenix Suns**. Let’s denote the **percent of team field goals that came off assists as **

Applying a little algebra and we see that the difference between these two players **with identical stats across the board** has a difference of unadjusted PER (uPER)

First we see the difference between Golden State and Phoenix’ **assist to field goals made ratio** washing out as a difference between these players. To give insight, **Golden State had 70.5266% **of field goals come off assists. Alternatively, **Phoenix managed only 49.0520%**. This difference sits at **.214746**. This means the Warriors player will have a boost of the first term by twenty-one percent. We call this a boost, only if the first term is indeed positive.

For reference, the 2017 NBA season witnessed **55,600 assists**, **96,061 made field goals**, and **43,883 made free throws**. This results in

This is **only positive if the player makes 2.518625** **more field goals than free throws**. For the 2017 NBA season, this is only true for **238 of the 486 players**. The most common type of players on this list are three point specialists such as **Kyle**** Korver (6.2895), Danny Green (6.5185), **and** Wayne Ellington (6.2432)**; mid-range shooters who rarely draw fouls such as **Meyers Leonard (4.1714), Leandro Barbosa (4.3000), **and **Boris Diaw (5.6154)**; and terrible free throw shooters such as **Thaddeus Young (8.0444), Sam Dekker (5.3412), **and **Andre Drummond (3.5255)**.

This means if the players we are comparing score more field goals than free throws than the 2.51 required rate; then the **Golden State Warrior will obtain a higher PER just by being on the Warriors**. The amount difference? Let’s suppose this player is **Klay Thompson**. Then the Golden State Warrior bump in uPER is **2.4945**. This amounts to roughly an extra field goal made; which will result in roughly **an increase in 0.0769 in PER**.

What this means is… if a Phoenix Suns player replicates Klay Thompson’s 2016-17 NBA season; they are docked nearly 0.08 PER point due to playing on the Phoenix Suns.

Now that we have seen just by playing on a certain team, a player’s PER can be affected by roughly 0.08; let’s see the impact of rebounds. In this exercise, we return to the identical players who have the identical stat lines, **except for breakdown of rebounds**. In the 2016-17 NBA season, there were 256 of the 486 NBA players with 164+ rebounds (2 per game). Our example of Klay Thompson above yielded 285 rebounds on the season. Thompson’s rebounds break down as 49 offensive rebounds and 236 defensive rebounds. The amount of contribution to uPER for rebounds is given by

The **estimated points per terminated possession**, *v*, is a league average calculated points scored per estimated number of possession. While the estimated number of possession is grossly off, despite corrections given by Basketball-Reference (still off by a few hundred possessions) and Squared 2020, we calculate the **league points per possession factor **as 1.062323 (259,753 points scored over 244,514.2 estimated possessions).

The **defensive rebound rate**, *d*, is the percentage of league rebounds that resulted in defensive rebounds. This factor is the simplest of the three to compute in the PER calculations and is given by 82,109 divided by 107,046 for a value of **0.767044**.

This means that Klay Thompson’s rebounds contributes to an extra **98.3403** uPER. In our article breaking down PER, we noted that all rebounds are down-weighted by the league average. Using a little algebra and ignoring *v*, we saw that this is equal to **defensive rebounds minus league-average-weighted-defensive rebounds** **plus offensive rebounds minus league-average-weighted-offensive rebounds**:

What this means is that **Offensive Rebounds are more important than defensive rebounds!** Let’s check this calculation. Let’s assume that Phoenix Suns player who has identical stats to Thompson exists. Furthermore suppose that this Suns player has instead of 236 defensive rebounds, they have 250 defensive rebounds. This yields only 35 offensive rebounds. This will result in a uPER contribution of **90.3984. This is another 8 solid points less than Klay Thompson’s uPER attributed to rebounding**.

This means that **Klay Thompson gets an extra ~0.33 PER points from being a stronger offensive rebounder, weaker defensive rebounder, and playing on the Warriors instead of the Suns. **

This indicates approximately a 10 player jump in PER **despite having same summary statistics except a 15 rebound change in OREB/DREB. **

Next we look at how field goal percentage is taken into account. The terms involving field goals made (FGM) and field goals attempted (FGA) are taken into account. To understand how FGM and field goals missed (FGA – FGM) are rewarded/punished, we look at “breaking even” in field goal shooting percentage. This percentage would then indicate how well a shooter must shoot before seeing their PER increase.

To start, we take a look at the terms associated with FGM and FGA. These are given by

Note that the factor, *f*, is the what the heck factor which is merely **0.600493. **While league field goals made appears twice in the denominator of *f*, the contribution of a player is fairly negligible. For instance, consider the **worst field goals made players**: Aaron Harrison, Ben Bentil, Danuel House, Gary Neal, Patricio Garino, and RJ Hunter. All these players **scored zero field goals and admit zero contribution to these denominators**. On the flip side, **Russell Westbrook **lead the league with 824 made field goals. His contribution will affect this factor by .001 and **a****ffects field goal percentages by less than .0001. **This means that we can effectively treat this factor as a constant.

Next, we see that FGM appears for a player embedded in **Team FGM**. This is a place where a player can change the field goal percentage. The largest percentage, of which, is again Russell Westbrook with 824 of this **Oklahoma City Thunder’s **3237 field goal makes. This is over a quarter of field goal attempts taken. This will actually affect field goal percentage necessary for finding a zero contribution to uPER. In this case, **the maximum, we find the change in FG% is less than 1.5%**. This means that if we treat this percentage as a constant for each team, the field goal percentage will effectively be within one percent.

Now if we write the above model to being **zero contribution** (Break Even) to uPER and **eliminate constant terms that attribute to effectively plus-minus one percent of resulting FG%**, we obtain the model

The function F(*t*) is the factor, *f*, times the assists per field goals made for each team. This will be a function of a respective team. Now, let’s break down **FGM** by its definition **FGM = 3PM + 2PM**. Similarly, we break down **FGA** by its definition **FGA = 3PA + 2PA**. We then obtain an equation in terms of **3PA, 2PA, 3PM, **and **2PM**. We can collect like terms to obtain

Now we perform the trick of multiplying by one. This will eliminate two variables (more so will hide them cleverly) and give us two equations with two unknowns; **hidden as one equation**. I will build off the previous two steps to show where the work comes in:

This last line is actually two equations two unknowns. The rationale for this is due to the fact that **no player can attempt less than zero three point or two point attempts**.

Hence, the only way this quantity can be zero is if **both** **3PA ****and 2PA are zero **or **the coefficients are zero**. Let’s assume the latter, as we are interested in finding field goal percentage that results in a net zero gain. Let’s isolate this equation and look at each coefficient.

This equation is the important one. **First, **if the field goal percentage for each type of field goal attempt is above the “break even percentage” **then the uPER increases by the number of attempts of that player**. This directly shows that **PER favors volume shooters provided they shoot above a “break even” percentage.** Note from the equation that this is team-dependent.

**Second**, this equation yields the break even value for each team. Anything above this percentage results in positive PER. The better the field goal percentage, the higher the PER **per attempt**.

Solving for both three point and two point percentages, we obtain

Calculating this for every team for the 2016-17 NBA season, we obtain the break even field goal percentages for every team:

What this shows is that **a team effectively needs to shoot better than 33% from two-point field goal range and better than 23% from three-point field goal range. **These are terrible numbers! Anything above these percentages will result in positive PER **per attempt**.Let’s drive this point home.

Suppose a player on the New Orleans Pelicans shoots 35% for two’s and 25% for three’s. This player will obtain a multiplier of 1.05 per two-point field goal attempt and 1.0634 per three-point field goal attempt. Now if the player takes **Russell Westbrook** type attempts, say 26% of the offensive load, then the player will attempt 1,853 attempts over the season; 571 of which are three point attempts. **This results in a uPER increase of 1953 uPER**. Consider this compared to **Klay Thompson’s uPER due to scoring of 1010.3107**. This means this Pelican’s player is nearly twice an efficient scorer as Klay Thompson (as Westbrook played in just a little more minutes than Thompson on the season).

By the way, this results in the Pelicans player scoring 428 points on three’s and 897 points on two’s for a total of **16.16 points per game from the field. **That means he’s pushing his team to scoring roughly 64 points from the floor as he commands over 25% of field goal attempts. But yet, he’s nearly twice as efficient as Klay Thompson. This absurdity is highlighted by Thompson’s 19% of the offense on the floor that results in 1556 points for an average of **18.98 points per game**. And hold on… this number is lower than actual since Thompson played in 78 games instead of 82. That said, Thompson is pushing his team to score roughly 95 points per game from the floor. This is **150% more effective than the hypothetical Pelicans player**; **who currently is viewed as twice as better than Thompson according to PER scoring**.

In three careful examinations of PER, we find that PER benefits players on teams that pass well, make more than 2.5 times as many field goals than free throws, and tend to gather more offensive rebounds than defensive rebounds. We also identified that PER heavily benefits volume shooters and if they manage to be at minimal terrible shooters, that can use that **to inflate their numbers to look better than their All-Star and All-NBA quality peers.**

This doesn’t show that players with high PER are terrible, however. What we do say is take this measure with a grain of salt and surround it with qualifying metrics. We quickly see that this measure favors perimeter shooters, as well as poor free throw shooters who score a sizable amount of points from the field. The above explanations capture these rumblings.

How else do you see PER?

]]>

With the introduction of **Player Efficiency Rating (PER)**, John Hollinger constructed a methodology for comparing the relative accomplishments of players across leagues, as well as across years. While being commonly viewed as complex and unidentifiable, the idea is relatively simple: produce a value for each player such that it captures their **personal influence** on the game in terms of **points per minute/possession**. I emphasize minute/possession due to the fact that the original intention of the metric is to capture per minute effects of a player; however, the model uses a per possession framework.

Before we have any discussion on the components of the model, we should first introduce the actual model. For references, feel free to read Basketball Reference’s How-To-Calculate PER Guide or John Hollinger’s own high-level description of the model.

The PER model is computed in a multi-step fashion. First, a player’s **unadjusted PER** is calculated. This measurement calculates a player’s per possession, per minute, personal contribution to the game. The formula is given as

where

This model indeed looks torturous, however, it is not all that bad. We will break down this model in a bit. The second part of the PER formulation is to perform a **pace adjustment** to allow for comparison between up-tempo and down-tempo teams in the league. This adjustment is given by

This is a simple adjustment and serves as effectively a **stratified sampling correction**. This correction is intended to normalize players with respect to their team pace. A value of “1” indicates that the team plays at the leave average. To calculate league pace, we simply count the number of possessions for every team, divide the number of possessions by the number of minutes played and multiply by 48 minutes. To calculate a team’s pace, we have a slightly different formulation. That is, we average the number of possessions for a team and the number of possessions for their opponent and divide by the number of minutes played. Multiplying by 48 yields the Team Pace. We do it this way due to the fact that League Pace is **a census of all possessions** while the Team Pace is a **s****ample from the population of all possessions**.

The resulting PER is now called **adjusted Player Efficiency Rating (aPER)** and is given by

Finally, the third component is a league adjustment to allow to compare across years. The league adjustment enforces a value of **“15” **to be the mean for the league. This is given by

This forces us to calculate one more value, called **League aPER**. This value is the average aPER across the entire league. This is a weighted average, where the weights are given by the number of minutes played by the player. This is given by

Here, we need to make clear the the index, *i*, just indexes the players in the league and that MIN is the total number of minutes played by all players in the league; effectively **ten times the number of minutes played. **As there are ten players on the court at any given time.

What this means is that all the magic in Hollinger’s PER is effectively at the **uPER **step in the process. So let’s take a look at that.

Taking a look at the equation for uPER, we have twelve terms and three scaling factors. Our goal is then to attempt to deconstruct the different factors and understand their contribution to the model. First, let’s tackle the scaling factors!

The factor, *v*, is the **average number of points per possession**. The denominator is the basic form of estimating possessions from box score data. Here, we have the number of field goals attempted **minus** the number of offensive rebounds. This indicates the total number of made baskets and missed attempts that resulted in defensive rebounds. We also add in the number of turnovers and the number of free throws that result in an end of possession. Here, the multiplier of **0.44**, or 22/50, **is an estimated value indicating the percentage of free throws that terminate a possession**. It should be noted that this function is a poor estimator of possessions and that the 0.44 value has been too high for more than a decade (credit: Matt Femrite, Nylon Calculus).

Despite this primitive estimate, we still obtain a form of “points per possession.” It should be clear that this is a global average and therefore all teams are valued the same; despite the scheduling not stating so.

This can be explicitly seen from the 2017 NBA season where, according to stats.nba.com, the Golden State Warriors averaged 1.132 points per possession while the Philadelphia 76ers averaged 1.007 points per possession. What was the league average? **1.062**. This means that the metric will over-estimate the average number of points for an action from (or against) the Philadelphia 76ers while under-estimating the Warriors.

The factor, *d*, is the **defensive rebounding percentage**. This is straightforward as it merely calculates the number of defensive rebounds and divides by the number of total rebounds. Again, this suffers the same problems as the average number of points as this factor assumes all teams gather defensive rebounds at the same rate.

This final factor is a bit puzzling. First the two-thirds constant actually makes the most sense of this factor, **but we will touch on that in a moment**. The second term causes fits as it is one-fourth the league average of assists-to-field-goals-made **times **the league average of free-throws-to-field-goals-made. If anyone understands this relationship, please feel free to send me comments.

Now that we have a basic understanding of the scaling factors, we can start to pick apart the twelve terms of PER. First, rearranging terms, we immediately find points scored. To see this, let’s take a look at uPER again.

The first term is **3PM**. The third term, involving FGM, expands out to yield two terms. The first one is **2FGM**. The fourth term, involving FT, expands out into two terms as well. The first term of these if **FT**. Adding these three terms we obtain **2FGM + 3PM + FT**, which is **POINTS SCORED**. This indicates that Hollinger’s PER is merely a measurement of **points** **per possession per minute**.

Similarly, there are negative terms that subtract from a player scoring points. These terms are the fifth term, involving **turnovers**, the sixth term, involving **missed field goal attempts**, and the seventh term, involving **missed free throw attempts**. Let’s walk through the meaning of each of these three terms.

The fifth term of uPER involves turnovers. Taking the number of turnovers a player makes indicates the number of **lost possessions due to turnover**. By multiplying by the **league points per possession** factor, we obtain an expected number of points **lost** per possession that would have otherwise been expected to be scored.

Similarly, every miss that results in a defensive rebound loses a possession for a team. In the sixth term, we first calculate the number of missed field goals for a player, **FGA – FGM**. Since some misses are rebounded, we obtain an expected number of lost possessions by multiplying against the **league average rate of defensive rebounds**. Again multiplying by the **league points per possession** yields the expected number of points lost by a player missing a field goal attempt.

In the seventh term, we see a complicated looking formula. Let’s start at the tail. Here, we calculate the number of missed free throws, **FTA – FTM**. Next we have a deceitful term of 0.44 + 0.56*d*. Recalling that *d* is the **defensive rebound percentage**, we can rewrite this as 0.44*(1- *d*) + *d*. The second term is the **expected percentage of defensive rebounds on missed free throws that terminate possessions**. We multiply by the extra 0.44 to ensure the expected terminated possession. The first term is the **expected percentage of free throws that are offensively rebounded**. There is an extra 0.44 term. The reason for this is due to **the possession continuing for the same offensive team**. In this case, if a field goal is attempted, the associated value is absorbed in another term. Hence, the free-throw only contributions are multiplied by a second 0.44 factor. Multiply this term by the **league average points per possession **and we obtain the expected number of points lost due to missed free throws.

The eighth and ninth terms of uPER focus on rebounding. In these situations, for every defensive rebound obtained, a possession is taken away from an opponent, thus taking away an expected number of points. Similarly, picking up an offensive rebound or giving up an offensive rebound prolongs a possession. In this situation, the eighth and ninth terms attempts to place expected number of points added or lost due to rebounding.

As we have already picked off seven terms, we may not have the formula handy. Here it is once again…

The eighth term can be split up into two components. The first component is exactly that… defensive rebounds! We obtain **defensive rebounds multiplied by the expected number of points per possession**. This quickly attributes the expected number of points a player takes away from an opponent. This leaves us with the second component, which is average number of points per possession times the number of defensive rebounds times the league defensive rebounding percentage. If we rearrange this term, we obtain an interesting quantity… **the expectation of a Binomial distribution with population size DREB and probability d. **Think of this as a down-weighting relative to the probability of the league obtaining a rebound.

Assume we have player *j*, who obtains a certain number of rebounds. Then we can, using the subscript *j* to keep track of our player, write

The right hand side is indeed the number of defensive rebounds by player *j* minus the expected number of defensive rebounds for player *j*.

To test this out, let’s consider the 2017 NBA season. There were a total of 107,046 rebounds, of which 82,109 were defensive rebounds, for *d *= 0.767. This means that since 0.767 of league rebounds were defensive rebounds, we extract the 0.767 **from each player**.

Offensive rebounds follow the exact same suit as defensive rebounds. In this case, we must use the definition of *d* directly to see that this is also a down-weighting computation. Again consider player *j* and their rebound totals with respect to the league.

Once again we indeed obtain the binomial down-weighting as we did in the defensive rebounding case. For the 2017 NBA season, this means that **every player needs to eliminate 23.3% of their offensive rebounds**.

Once we down-weight each set of rebounds, we multiply by the **league points per possession **to obtain the expected number of points due to rebounding.

Steals and blocks are also incorporated into uPER in the tenth and eleventh terms. These two values are incredibly straightforward. First, steals are simply taking away possessions from an opponent, therefore we merely multiply **steals** with **league average points per possession**.

For blocks, there’s slightly more work to do. For a block to take away a possession, we must incorporate a defensive rebound. Hence, we multiply **blocks** with **defensive rebound percentage**, along with **league average points per possession**.

The personal foul term may look daunting, but it is rather simple as well. There are two components to personal fouls. The first component results in made free throws while the second results in possession ending free throw attempts.

The first component computes the **league average of free throws made per personal foul**. Multiply this by the number of personal fouls a player has, and this is the expected number of made free throws given up by that player; hence a negative value.

The second component are possession ending missed free throws. Since these free throws end a possession, we once again find that pesky 0.44 coefficient. Similarly, these are possessions ended without making a free throw; as they are subtracted off in the first term. Thus we multiply these misses by the **league average points per possession**.

So far, we have talked about all parts of Hollinger’s PER **except for assists**. To this point everything calculated has a reason and results in **expected number of points**. Assists are of a different beast. Assists creep in at three terms: the second, third and fourth.

The second term is 2/3 times assists. No explanation to the weight other than **“assists are two-thirds of a point.”** If we pick off this second term and a portion of the third term, we obtain the following

This value is the number of assists made by a player minus the **expected number of assists from his teammates for field goals made by that player**. Let’s do a quick check.

For the 2017 NBA season, **Jabari Parker **of the **Milwaukee Bucks** picked up 142 assists and 399 made field goals. The Bucks, however, finished with 3182 field goals and 1984 assists. Performing this computation above, **Parker finished with -71.1863 ****points added to the Milwaukee offense**. Hence Parker is punished for shooting more than his passing. Compare this to his teammate **Giannis Antetokuonmpo**, who had 434 assists and 656 made field goals, and we see that Giannis **scores a mighty 16.6528**. In fact, this section rewards passers **who never score**.

Maybe the remaining component would rectify this problem. The remaining portion of assists is given by

Remember the introduction to the **What the Heck Factor? **Well, here it rears its ugly head. This is a daunting task to decompose; as that this equation not readily identifiable. Here, we are introduced with two new constants, 1/4, and 1/6. The assumption is that we are looking at assists that lead to extra free throws; **however this value is detrimental to improving an offense** as indicated by its negative. The other term looks to have three rate corrections, which may be incorporating correlations between free throws and field goals made relative to the league. I can’t tell for sure, as this function actually doesn’t state that at all.

If you happen to understand the genesis of this quantity, please feel free to shoot me a message.

Now that we have completed the hard part of walking through uPER, we turn our attention to pace adjustment and rate adjustment. In uPER we effectively calculated, with exception of assists, the expected return of points for each type of personal action on the court. This was a **per possession** calculation that in the end is divided by the number of minutes played.

For pace adjustment and rate adjustment, we apply the final two multipliers to adjust for the number of possessions each team has per 48 minutes, as well as the adjustment to ensure that the league average is 15.

Note that simply taking the average PER’s will not give us 15. Instead, taking the **average minutes played weighted PER** will yield 15. As an example, for the top 355 NBA players in the 2017 NBA season, we obtain 15.2478. Let it be known, this is not an error. But rather the fact that ESPN reported on the top 355 players on their main PER page; not the 486 NBA players who logged at least one minute last season. Taking the extra couple moments to obtain all players, the average is 15.0490; primarily rounding accounting for the 0.0490 discrepancy.

Due to the adjustments, we are able to compare players from year to year. For instance, we take a look at the previous 7 years (2011 through 2017) of distributions of PER.

With the exception of some extra zeros in 2011 and 2013, the distributions for PER remain relatively stable.

PER is also well-known for passing the “eye test.” That is, if the list presents the “best players” in the league, and they are indeed arguably the best players in the league based on qualitative arguments, then the analytic is typically viewed as justified. One simply way to test this is to identify the location of the Most Valuable Player on the PER list. There is one caveat to this… **players must meet a minimum number of minutes to be eligible**. To qualify, a player must have played 500 minutes. What this insinuates is that PER is not a good measure for small samples. Adhering to this rule, we can identify the positions of MVP’s since 2011.

- 2011: Derrick Rose
**(9th)** - 2012: LeBron James
**(1st)** - 2013: LeBron James
**(1st)** - 2014: Kevin Durant
**(1st)** - 2015: Steph Curry
**(3rd)** - 2016: Steph Curry
**(1st)** - 2017: Russell Westbrook
**(1st)**

PER is also well known for having drawbacks. The primary drawback is that top-tier defensive players are not well-represented. The golden child example is Bruce Bowen from the San Antonio Spurs.

The key to PER is that it is based on **personal actions** of a player. What PER does not include is defensive capability or ability to spread a court. To correct this, we can perform an **experimental design** to identify the non-personal contributions of a player.

For instance, we can look at groups on the court and treat these as **random effects **with a response being the **grouping’s bivariate PER**. This would partition out how two units interact with each other, as well as against each other. If two players play well together, we expect their groups’ PER to increase. If a defender plays well but does not steal the ball much or picks up blocks, it will appear in their opponents lower PER.

Similarly, **PER is designed to be a box score calculation**. In the era of play-by-play data we can easily count the number of possessions as opposed to estimating the number of possessions using a crude measuring stick.

Third, **PER assumes that all teams are equal**. This is indicated at every location a **“league” **statistic pops up. We gave a clear example that playing the Warriors is not the same as playing the Philadelphia 76ers. In this effort, using the sampling design for schedules can be used to weight interactions. That is, instead of just calculating points per possession; we can calculate **points per possession relative to opponent**. This will help offset the schedule.

So what do you think of PER? Even more confused than before? It’s been a reliable analytic for over a decade; despite its obvious pitfalls with hard coded weights, ignorance of defensive factors, and assumption that all teams are equal. The nice thing about PER is that it can be used as a tool for further analysis and does not have to be an end-all of player capability.

]]>

Now, five years later since model construction, being on the edge of journal submission, I have pointed this model at defensive tendencies of teams with respect to the Pick-And-Roll offense of an opponent. In this article, there will be no math, but rather an intuitive glance at the process. If you are interested in the article, feel free to shoot me a message at jjacobs1@umbc.edu or @squared2020 on Twitter.

To give an example of the process, let’s consider a single play from a Cavaliers’ playoff game against the Indiana Pacers. In this play, the Pacers run a pick-and-roll on the left wing between Indiana’s Myles Turner and Jeff Teague. With a Cavaliers double team on Teague, Turner frees himself by rolling towards the free throw line.

The Cavaliers have a series of options on their rotation defense. With Tristan Thompson and Kyrie Irving doubling Teague, the Cavaliers must do one of three things: Pick up Turner at the free throw line from the baseline, Pick up Turner at the free throw line from the wing, or Hold and let Turner go free.

The Cavaliers opt to hold by planting Kevin Love in the middle of the box. LeBron James abandons C.J. Miles to guard an empty short corner. The result is that Turner take an uncontested shot attempt [Thompson recovers from behind Turner, with no effect on the shot] from the free throw line, resulting in two points.

Now, we can model this action as a spatio-temporal density of actions. The simplest method is to perform a kernel density estimator. However doing this, we don’t much knowledge other than the Kullback-Leibler divergence of differing plays; which does not yield enough signal-to-noise for player motion.

Instead, we look at **empirical orthogonal functions (EOF)**, and perform a density estimation over the components. What makes this special? The EOF breakdown yields correlations between spaces over time. The resulting transitional density estimates give a signature to each defensive play. Furthermore, the EOF differences yield quantifiable data for player movement. For instance, we can look at the transition of LeBron James and show that his movement is low, yielding little-to-no-change in the EOF coefficients. How does this translate to edge on the court?

- Cavaliers hold on Myles Turner; accepting a lower probability mid-range field goal attempt.
- If Kevin Love rotates, LeBron James’ movement is slow to recover a pull from Thaddeus Young across the key.
- This will most likely result in an assist to Young for two points.

This helps identify the speed of movement of players on the court. In a later play, the team jumps the shooter and this does indeed result in a Thaddeus Young basket; again due to late off-ball rotation.

Reconstructing the EOF distribution, we get a KDE-like transition of defensive movement.

We can also use the spatio-temporal breakdown to classify team defense types; as well as compare different teams’ ability to cover the pick-and-roll. This requires knowledge of two items: **hypothesis testing** and the **Karhunen-Loeve Transform** for empirical orthogonal functions.

Keep an eye out for the academic paper!

]]>