Statistical Plus/Minus

Statistical Plus/Minus is an estimate of the player’s contribution to the team’s point differential per 100 possessions, using his boxscore stats as inputs.
Formula Last updated:7/18/2014

Adjust all per-36 minute rates to a pace factor of 100.0 before plugging into formula.

Formula 1979-80 to present (3-point era)

Call:
lm(formula = plus_minus ~ mpg + p36 + tsa36 + tsasq + tpa36 +
fta36 + ast36 + orb36 + drb36 + stl36 + blk36 + tov36 + pf36 +
versatility + usgast, weights = minutes)

Weighted Residuals:
    Min      1Q  Median      3Q     Max 
-536.41  -59.98   13.52   58.81  852.80 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -6.132419   0.573255 -10.698  < 2e-16 ***
mpg          0.092111   0.007581  12.151  < 2e-16 ***
p36          0.542085   0.042788  12.669  < 2e-16 ***
tsa36       -1.085230   0.072533 -14.962  < 2e-16 ***
tsasq        0.011201   0.002087   5.366 8.73e-08 ***
tpa36        0.234685   0.024500   9.579  < 2e-16 ***
fta36        0.157581   0.038441   4.099 4.26e-05 ***
ast36       -0.255205   0.102324  -2.494  0.01269 *  
orb36        0.177641   0.063510   2.797  0.00519 ** 
drb36       -0.147541   0.047883  -3.081  0.00208 ** 
stl36        1.248259   0.095722  13.040  < 2e-16 ***
blk36        0.779884   0.064435  12.103  < 2e-16 ***
tov36       -1.355019   0.095769 -14.149  < 2e-16 ***
pf36         0.217562   0.051005   4.266 2.06e-05 ***
versatility  1.201469   0.086572  13.878  < 2e-16 ***
usgast       0.013780   0.004836   2.849  0.00441 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 125.5 on 2739 degrees of freedom  
Multiple R-squared:  0.607, Adjusted R-squared:  0.6048
F-statistic: 282 on 15 and 2739 DF, p-value: < 2.2e-16

Formula 1976-77 to 1978-79

Call:
lm(formula = plus_minus ~ mpg + p36 + tsa36 + tsasq + ast36 +
trb36 + stl36 + blk36 + tov36 + pf36 + versatility + usgast,
weights = minutes)

Weighted Residuals:	
    Min      1Q  Median      3Q     Max 	
-544.48  -59.44   13.80   61.52  838.63 	
	
Coefficients:	
             Estimate Std. Error t value Pr(>|t|)    	
(Intercept) -4.841329   0.566249  -8.550  < 2e-16 ***	
mpg          0.084138   0.007649  10.999  < 2e-16 ***	
p36          0.695031   0.036349  19.121  < 2e-16 ***	
tsa36       -1.173899   0.069078 -16.994  < 2e-16 ***	
tsasq        0.010736   0.002077   5.168 2.53e-07 ***	
ast36       -0.369669   0.103152  -3.584 0.000345 ***	
trb36       -0.094913   0.030240  -3.139 0.001715 ** 	
stl36        1.405904   0.095231  14.763  < 2e-16 ***	
blk36        0.720455   0.064989  11.086  < 2e-16 ***	
tov36       -1.354858   0.089508 -15.137  < 2e-16 ***	
pf36         0.178026   0.051015   3.490 0.000491 ***	
versatility  1.121073   0.083169  13.479  < 2e-16 ***	
usgast       0.019676   0.004843   4.063 4.98e-05 ***	
---	
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1	
	
Residual standard error: 127.6 on 2742 degrees of freedom	
Multiple R-squared:  0.5937,	Adjusted R-squared:  0.5919 
F-statistic: 333.8 on 12 and 2742 DF,  p-value: < 2.2e-16

After computing the raw versions above, adjust such that 5 * the minute-weighted average of a team’s individual ratings equal the team’s efficiency differential. This is done by adding/subtracting the one-fifth the difference between actual and predicted differential for the team to each player’s rating.


 

Update:  6/11/2011

Adjust all per-36 minute rates to a pace factor of 91.6251806668734 before plugging into formula.

Offense

Call:
lm(formula = oapm ~ pts36 + tsa36 + tsa36sq + 3pa36 + ast36 +
    orb36 + tov36 + mpg)

Residuals:
    Min      1Q  Median      3Q     Max
-5.0117 -1.1945  0.0144  1.1642  7.1628 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept) -6.873115   1.209980  -5.680 2.55e-08 ***
pts36        1.134918   0.106126  10.694  < 2e-16 ***
tsa36       -1.053041   0.192856  -5.460 8.27e-08 ***
tsa36sq      0.009919   0.005783   1.715  0.08708 .
3pa36        0.287426   0.066216   4.341 1.79e-05 ***
ast36        0.790446   0.080954   9.764  < 2e-16 ***
orb36        0.626947   0.144910   4.326 1.91e-05 ***
tov36       -1.519798   0.252819  -6.011 4.08e-09 ***
mpg          0.047345   0.016239   2.915  0.00375 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 1.873 on 409 degrees of freedom
Multiple R-squared: 0.6476,     Adjusted R-squared: 0.6407
F-statistic: 93.95 on 8 and 409 DF,  p-value: < 2.2e-16

Defense

Call:
lm(formula = dapm ~ tsa36 + orb36 + drb36 + stl36 + blk36 + pf36 +
    mpg)

Residuals:
     Min       1Q   Median       3Q      Max
-6.55889 -1.19094 -0.04867  1.22791  7.68363 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept) -5.57999    0.94753  -5.889 8.10e-09 ***
tsa36       -0.17041    0.03976  -4.286 2.27e-05 ***
orb36       -0.36938    0.18803  -1.964  0.05015 .
drb36        0.55435    0.11836   4.684 3.84e-06 ***
stl36        2.23664    0.29189   7.663 1.33e-13 ***
blk36        0.68844    0.20863   3.300  0.00105 **
pf36         0.40582    0.16024   2.533  0.01169 *
mpg          0.06387    0.02059   3.102  0.00205 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 2.13 on 410 degrees of freedom
Multiple R-squared: 0.2984,     Adjusted R-squared: 0.2864
F-statistic: 24.91 on 7 and 410 DF,  p-value: < 2.2e-16

Regression was run on all players with 1250 minutes from 2005-06 to 2008-09. You can read more about statistical +/- here.


A variant using Dean Oliver’s stats from Basketball on Paper can be calculated by constructing a lineup featuring the player and 4 average teammates. Each teammate will have a defensive rating equal to the league average; a Poss% equal to 100 minus the player’s Poss%, divided by 4; and an offensive rating equal to the league’s rating plus (20 – Teammate%Poss) * Tradeoff. “Tradeoff” is determined for a given league by: LgRtg * (1.296 / 107.5). (See this post for an explanation.) To compute raw offensive/defensive SPM, subtract the league’s offensive rating from the player’s “lineup offensive rating” and subtract his “lineup defensive rating” from the league’s offensive rating. Force these to fit team offensive/defensive performance by calculating the team adjustment necessary to make 5 * the minute-weighted average of player ratings equal the team’s actual ratings.


Another variant using only minutes per game, the team’s defensive rating, and Dean Oliver’s individual offensive rating, possession %, & defensive rating (the latter 3 metrics being measured relative to average):

(Formula updated 07-27-2011)

Offensive SPM

Call:
lm(formula = oapm ~ pctpos + drtg + pctpos*mpg + pctpos*ortg)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.3544 -1.1935 -0.0937  1.2127  7.7508 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  1.2569641  0.1447163   8.686  < 2e-16 ***
pctpos      -1.0157628  0.0872534 -11.642  < 2e-16 ***
drtg        -0.1395714  0.0287818  -4.849 1.76e-06 ***
pctpos*mpg   0.0035557  0.0008362   4.252 2.62e-05 ***
pctpos*ortg  0.0112577  0.0008497  13.248  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 1.962 on 413 degrees of freedom
Multiple R-squared: 0.6094,     Adjusted R-squared: 0.6057 
F-statistic: 161.1 on 4 and 413 DF,  p-value: < 2.2e-16

Defensive SPM

Call:
lm(formula = dapm ~ 0 + ortg + pctpos + drtg + tmdef + pctpos*mpg)

Residuals:
   Min     1Q Median     3Q    Max 
-6.843 -1.265 -0.010  1.376  7.988 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
ortg      -0.0447284  0.0163167  -2.741 0.006386 ** 
pctpos    -0.1892379  0.0453301  -4.175 3.64e-05 ***
drtg       0.4941729  0.0428933  11.521  < 2e-16 ***
tmdef     -0.1730666  0.0602370  -2.873 0.004274 ** 
pctpos*mpg 0.0028354  0.0008074   3.512 0.000494 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 2.036 on 413 degrees of freedom
Multiple R-squared: 0.3558,     Adjusted R-squared: 0.348 
F-statistic: 45.62 on 5 and 413 DF,  p-value: < 2.2e-16

“Old SPM”
An older version of the formula, created on 11/22/2010.

Adjust all per-36 minute rates to a pace factor of 91.6251806668734 before plugging into formula.

Offense

Call:
lm(formula = oapm ~ pts36 + tsa36 + tsa36sq + 3pa36 + ast36 +
orb36 + tov36 + stl36 + blk36 + mpg)

Residuals:
Min 1Q Median 3Q Max
-5.23379 -1.20433 0.05485 1.13443 7.02662

Coefficients:
Estimate Std. Error t value Pr(&gt;|t|)
(Intercept) -7.27339 1.25692 -5.787 1.43e-08 ***
pts36 1.17389 0.10589 11.086 &lt; 2e-16 ***
tsa36 -1.10678 0.19265 -5.745 1.80e-08 ***
tsa36sq 0.01010 0.00578 1.747 0.08145 .
3pa36 0.27568 0.06561 4.202 3.26e-05 ***
ast36 0.70050 0.08452 8.289 1.68e-15 ***
orb36 0.72753 0.15149 4.802 2.21e-06 ***
tov36 -1.45687 0.25292 -5.760 1.66e-08 ***
stl36 0.64889 0.27146 2.390 0.01729 *
blk36 -0.34008 0.17834 -1.907 0.05724 .
mpg 0.05023 0.01622 3.097 0.00209 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.853 on 407 degrees of freedom
Multiple R-squared: 0.6569, Adjusted R-squared: 0.6485
F-statistic: 77.93 on 10 and 407 DF, p-value: &lt; 2.2e-16

Defense

Call:
lm(formula = dapm ~ tsa36 + orb36 + drb36 + stl36 + blk36 + pf36 +
mpg)

Residuals:
Min 1Q Median 3Q Max
-6.55889 -1.19094 -0.04867 1.22791 7.68363

Coefficients:
Estimate Std. Error t value Pr(&gt;|t|)
(Intercept) -5.57999 0.94753 -5.889 8.10e-09 ***
tsa36 -0.17041 0.03976 -4.286 2.27e-05 ***
orb36 -0.36938 0.18803 -1.964 0.05015 .
drb36 0.55435 0.11836 4.684 3.84e-06 ***
stl36 2.23664 0.29189 7.663 1.33e-13 ***
blk36 0.68844 0.20863 3.300 0.00105 **
pf36 0.40582 0.16024 2.533 0.01169 *
mpg 0.06387 0.02059 3.102 0.00205 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.13 on 410 degrees of freedom
Multiple R-squared: 0.2984, Adjusted R-squared: 0.2864
F-statistic: 24.91 on 7 and 410 DF, p-value: &lt; 2.2e-16
  1. So are you guys using regular season 2014-2015, lifetime states, playoffs stats or a combo.
    Kind of important to know?

    • It just uses regular-season stats from the season in question as inputs… For instance, a player’s 2014-15 SPM is based on his regular-season rates from 2014-15 only.

  2. I’ve been following the links to this site through 538.com. As I try to follow the methodology, I asK: What does “usgast” represent?

    • It’s just pace-adjusted usage (plays used, or FGA + 0.44 * FTA + TOV) per 36 minutes times pace-adjusted assists per 36 minutes.

      Also, versatility is the cube root of pts/36 * reb/36 *ast/36.

Leave a comment