This is our old blog. It hasn't been active since 2011. Please see the link above for our current blog or click the logo above to see all of the great data and content on this site.

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: 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