Dec 14 2008

Points Added: An Alternaive Way to Evaluate a Player’s On-Court Contributions

If you are reading this post then you are undoubtedly familiar with the increased popularity of plus/minus and adjusted plus/minus ratings. These methods help account for a player’s contributions made while he is on the court that are not measured by traditional statistics.

Thanks to the work done by the likes of Dan T. Rosenbaum, David Lewin, Steve Ilardi, Aaron Barzilai, and Eli Witus, adjusted plus/minus has become the standard for measuring a player’s on-court contributions. Thus we can be sure that adjusted plus/minus is the best available method to measure a player’s on-court contributions.

The Motivation to Create Something New

So, then, why create something new if adjusted plus/minus already exists?

It is because my motivation comes from the fact that I have a hard time interpreting adjusted plus/minus. The way the data is fit does not seem “clean” to me, although I suspect my reservations in this area come from rare cases that probably don’t affect the ratings very much. Also, to be honest, this motivation likely comes from my level of statistical ability when compared to those mentioned above. I am not at their level, so I need something, perhaps more basic, that makes sense to me.

Therefore, my goal was to create something that I could interpret, since having a way to measure a player’s overall contributions to his team is very important. I think we have way too many ways to rate players as it is, but the most important one to me, adjusted pus/minus, I can’t explain.

I don’t suspect I have the ability to compete with PhDs, so it is safe to say that adjusted plus/minus has a better foundation than my method. That said, I feel I now have a measurement that I can actually explain to someone with respect to a player’s overall on-court contributions.

The Theory of Points Added

The theory of points added is that the points scored on any given possession can be explained by the following formula:

Points = O1 + O2 + O3 + O4 + O5 + D1 + D2 + D3 + D4 + D5

Where O1,…,O5 and D1,…,D5 stand for the offensive and defensive players, respectively.

The idea is that every player adds something to the points on a given possession. This is different from a plus/minus viewpoint, since no player has negative contributions. (You can’t have negative points scored, can you?) Thus the best offensive players have a larger number of points added, and the best defensive players have a small number of points added.

The Method for Fitting the Data

With the basic theory in place, I chose to use the following formula for fitting the data:

Points = HCA + O1 + O2 + … + ON + D1 + D2 + …  DN

I have suppressed some details, so let me explain. First, the intercept for this equation is forced to be 0. The HCA variable measures the home court advantage. It exists in the formula if the offensive team is at home. Thus it does not exist otherwise. For the N number of players measured, O1,…,ON measures the points added on offensive possessions for each player, and D1,…,DN measures the points added on defensive possessions for each player. It is worth noting that for any given data point (as represented by the points scored on any given possession), only 5 offensive and defensive players are on the court. Thus all other players do not exist in the formula when fitting any given data point.

Fitting 2007-2008 Data with WinBUGS

I chose to use WinBUGS to fit the data for a couple of reasons. First, WinBUGS allows me to restrict the data in the logical form I wish to fit. Thus when sampling from the Normal distribution when fitting the data, I am able to limit these points to be strictly positive. The other reason for using WinBUGS is that the dimensionality of the data can be reduced thanks to the way the models are specified. This means that instead of trying to fit 216MBs of data, I can instead fit 6MBs of data. (My Mac especially appreciates this.)

To fit this model, you will need a couple of files: the model specification, pa_linear.bug; the R code needed to call WinBUGS from R, pa_linear.R; and the possession data, (which is in ZIP format, so you must extract it before use). You will need the R package R2WinBUGS to call WinBUGS from R. Also, you will need to update the wbugs_dir (and wine/winepath if on a UNIX box) variables in pa_linear.R for your environment. Lastly, you should grab 07-08.players.ids to match up the player’s ID numbers with their actual names.

The Results

If you use the R code to run WinBUGS for fitting the model then you should end up with a file log.txt that has the estimated coefficients to fit the data, along with their standard deviations and 95% credible intervals for the fits.

To clean up the data, I have extracted each player’s offensive and defensive points added per possession and transformed them in terms of 100 possessions to create points added offensive and defensive ratings.

Note: The data is only for the top 75% of players with respect to the total number of offensive and defensive possessions. Also, home court advantage was measured to be roughly 4.19 points per 100 possessions, with a standard deviation of 0.57 points per 100 possessions.

The top 10 offensive players of 2007-2008 are:

Player Mean Std. Dev.
Steve Nash 23.98 3.75
Chris Paul 21.81 4.62
Dwyane Wade 21.77 3.34
C.J. Miles 21.03 4.22
Kobe Bryant 20.80 4.40
Dwight Howard 20.43 7.20
Devin Harris 19.77 2.95
Kevin Martin 19.46 3.23
Sasha Vujacic 18.40 3.95
Jamario Moon 18.40 3.62

The bottom 10 offensive players of 2007-2008 are:

Player Mean Std. Dev.
Jermaine O’Neal 2.52 2.00
Yi Jianlian 2.62 2.14
Johan Petro 2.67 2.03
Jason Collins 3.00 2.17
Nenad Krstic 3.04 2.44
Kwame Brown 3.04 2.33
Kris Humphries 3.06 2.48
Robert Horry 3.27 2.55
Jameer Nelson 3.54 2.94
Mark Blount 3.63 2.47

The top 10 defensive players of 2007-2008 are:

Player Mean Std. Dev.
Kevin Garnett 2.08 1.72
Joel Przybilla 2.32 1.89
Nenad Krstic 2.42 1.92
Rasheed Wallace 2.66 2.17
Jason Collins 2.87 2.12
Josh Smith 3.05 2.17
DeSagana Diop 3.05 2.26
Chuck Hayes 3.08 2.27
Shaquille O’Neal 3.13 2.15
Sasha Pavlovic 3.23 2.29

The bottom 10 defensive players of 2007-2008 are:

Player Mean Std. Dev.
Sasha Vujacic 25.45 3.96
Al Jefferson 23.22 4.37
Chris Paul 22.70 4.19
Andre Miller 21.29 4.20
Marcus Williams 21.03 3.98
Jose Calderon 20.98 5.09
Acie Law 19.97 5.13
Carlos Arroyo 19.74 4.77
Ben Gordon 19.45 3.01
Mike Bibby 19.24 3.69

For all of the ratings, see the offensive ratings document and the defensive ratings document.


We have to be careful drawing conclusions from these ratings, specifically since they are only for a single season of data and have the typical issues that adjusted plus/minus has with respect to a small sample. Also, it is worth remembering that the performance of players can be affected by their role/coaching/etc. This model does not try and control for these factors, as it simply controls for home court advantage and the other players in the league.


My hope is that these will be useful with respect to looking at a player from a broader perspective. We don’t have great ways to measure defense, but hopefully this helps in the same manner as adjusted plus/minus does.

I’d like to hear any comments or criticisms of the methodology, especially since adjusted plus/minus has become widely used. Of course I find points added easier to understand and feel it is “cleaner”, but I also don’t have a PhD. :)

If you enjoyed this post, use RSS to get notified of new posts.

4 Comments on this post


  1. nobody said:

    the std. dev for your method seems to be higher than +/-, does this make it less reliable?

    December 17th, 2008 at 5:22 pm
  2. Ryan said:

    Out of curiosity, which Adjusted +/- data are you comparing this to?

    A higher standard deviation would indicate greater uncertainty about the true value of the rating.

    I would say in terms of reliability, it’s hard to compare that between the two methods, as they are very similar.

    That said, I think this general framework leaves a lot to be desired with respect to which lineups face each other. As of now there is really no connection between all of the players. This is why the multi-year adjusted +/- is a vast improvement over a single season’s data. Even still, I think there is room for improvement.

    December 17th, 2008 at 9:42 pm
  3. brown fury said:

    how can we add to this to account for the level of the players around a specific individual. for example, chris bosh is obviously a good player. but are his numbers good just because everyone around him sucks and so he just does a bulk of the work?

    May 11th, 2009 at 6:46 pm
  4. Ryan said:

    This sort of model is constructed to control for opponent and teammate ability. That said, it doesn’t control for many other things that are a real part of basketball. So there is much left to be desired, but adjusted +/- gives at least some peek into the players ability controlling for opponents and teammates.

    May 11th, 2009 at 11:00 pm