RAPM

Adjusted Plus/Minus (RAPM) is undoubtedly the most influential one-number metric in basketball analytics today, boosted by its unbiased nature (relatively speaking) which is impartial to playstyle and craftily captures both offense and defense on a fair playing field. Despite it strengths, however, RAPM has lots of intervening weaknesses which affect the metric’s ability to be interpreted. These include:

  • The inability to assign credit based on performance.
  • The “multicollinearity” problem from consistent lineup shuffling.
  • The sampling issues caused by the penalization term. 

For those unfamiliar, RAPM uses a “ridge” regression primarily because it is designed to introduce a slight bias in the model to offset the variability that would otherwise decrease the statistical significance of the coefficient estimates. To do this, most modern models use a penalization term (lambda) which tends to draw the coefficients closer to zero (or a prior, in the case of some hybrids) which is obtained via cross-validation, a process in which a data set is continually split into training and testing groups to find an ideal value.

Seems good enough, right? It’s certainly more “objective” than plotting the coefficients by lambda and picking a visually-appealing spot somewhere on the graph. But alas, there is one particular issue to address which hinders RAPM’s ability to be easily interpreted from season-to-season: a lambda value by cross-validation is chosen because it appeases the fit of the model. (And we know the caveats of what happens when solely prioritizing model fit.) So what happens when the model isn’t necessarily right?

The results can either “expand” or “compress” to an undesirable degree! Specifically, we’re dealing with the imperfections in how the metric deviates from its mean, meaning a lambda too high can excessively compress the coefficients and a lambda too low can excessively expand the results! So how do we solve this problem? At least today, by scaling the results based on external criteria. (This is not an original idea; Ben Taylor of Back Picks devised a variant of RAPM in which the coefficients were normalized to the same mean and standard deviation and Twitter user @SamphaStan applied the principle to multiple versions of RAPM.)

Similarly, I believed this to be a route worth exploring when scaling RAPM. But rather than standardizing the deviation of the metric from season-to-season, I considered something else: accounting for the natural fluctuations in offensive and defensive impact by proxy of results at the team level. (Remember, the NBA in 1997 is different than the NBA in 2022, and the evolutions of coaching and playstyle will affect how much individual players can impact the game.) But what exactly constitutes the “league” deviation in offense and defense?

By treating the team’s results (offensive and defensive efficiency) as the whole of the sum of its players, we can estimate the “actual” deviation by assigning equal credit to the “average” five players on the court. Doing this created a (seemingly) more “natural” curve that was unrelated to appeasing RAPM’s model fit, which is exactly what we wanted!

Notice how both offensive and defensive variation tapers off in the mid-2010s? This was an observation that intuitively felt inaccurate, as both qual and quant research tends to agree offensive superstars are creating more separation from their competitors than ever in the modern game. Interestingly enough, the scaled version of RAPM seems to “correct” this, as the “actual” highest deviation in offense for 2019 was the highest since 2008.

To summarize of the calculation process:

  • Calculate the (weighted) means for both offense and defense; set new means to zero
  • Calculate the (weighted) standard deviations for both offense and defense for RAPM and teams; adjust for team so it reflects the individual players
  • Re-calculate RAPM so that the (weighted) standard deviation equals the estimated “actual” (weighted) standard deviation; do for both offense and defense

Listed below are the top-250 seasons on record from 1997 to 2019 among players with more than 3,000 possessions during the regular season (more or less 1,500 minutes played).

PlayerYearTeamGPossORAPMDRAPMRAPM
Kevin Garnett2004MIN8261504.594.388.97
Kevin Garnett2009BOS5734162.105.807.90
LeBron James2010CLE7657285.961.777.73
LeBron James2011MIA7959164.772.897.66
Kevin Garnett2008BOS7144682.484.997.48
LeBron James2015CLE6948896.041.427.46
Giannis Antetokounmpo2019MIL7251743.573.817.38
Tim Duncan2003SAS8160583.483.897.37
LeBron James2012MIA6245334.842.517.35
Tim Duncan2004SAS6947412.234.837.06
Draymond Green2016GSW8159742.984.057.03
LeBron James2016CLE7653444.292.536.82
Tim Duncan2005SAS6641342.434.386.81
Shaquille O’Neal1998LAL6042734.552.236.78
Shaquille O’Neal2004LAL6748303.962.666.63
Kevin Garnett2005MIN8259463.732.876.60
Kevin Garnett2003MIN8264803.902.676.57
LeBron James2009CLE8157694.302.236.52
Kevin Durant2019GSW7858135.500.896.39
Shaquille O’Neal2001LAL7456555.730.636.36
Dirk Nowitzki2004DAL7757924.851.416.26
Alonzo Mourning1999MIA4631521.954.306.25
Stephen Curry2017GSW7956905.201.036.23
Dirk Nowitzki2003DAL8061184.281.846.11
Alonzo Mourning1998MIA5835422.313.786.10
Rasheed Wallace2004DET6844281.814.266.07
Shaquille O’Neal2000LAL7962114.121.896.01
Tim Duncan2001SAS8260392.193.816.00
Stephen Curry2015GSW8055345.220.765.98
Dwyane Wade2010MIA7753905.710.265.97
Steve Nash2008PHX8157106.00-0.045.96
Chris Paul2015LAC8257294.371.435.80
Jrue Holiday2019NOP6752124.331.475.80
Mookie Blaylock1998ATL7050033.752.005.75
Shaquille O’Neal1999LAL4932864.231.505.73
Kevin Garnett2012BOS6035831.404.325.72
Dirk Nowitzki2012DAL6240573.552.135.68
Shaquille O’Neal2003LAL6749914.790.875.66
Dirk Nowitzki2011DAL7349093.212.365.57
Stephen Curry2019GSW6950583.951.615.56
Manu Ginobili2008SAS7444703.521.985.50
Michael Jordan1998CHI8260103.931.535.46
Dirk Nowitzki2013DAL5333323.731.735.46
Kobe Bryant2008LAL8264885.200.255.45
Shaquille O’Neal2002LAL6747283.471.985.45
Paul George2019OKC7761723.671.775.44
Metta World Peace2006SAC5642551.334.105.43
Tim Duncan2002SAS8263241.873.515.39
Christian Laettner1997ATL8257032.472.915.38
Manu Ginobili2005SAS7441913.062.305.37
LeBron James2014MIA7756345.070.265.33
LeBron James2013MIA7655494.800.485.28
LeBron James2008CLE7558314.191.075.26
Steve Nash2010PHX8154265.62-0.365.26
Tim Duncan2007SAS8051251.713.555.26
John Stockton2001UTA8246213.082.175.25
Manu Ginobili2007SAS7540063.082.175.25
Bo Outlaw1997LAC8242240.794.455.24
Chris Paul2014LAC6244533.451.775.22
Kevin Garnett2010BOS6940410.294.845.13
Jason Kidd2005NJN6647103.371.745.11
Kevin Garnett2000MIN8162932.202.895.10
Chris Paul2013LAC7044894.560.535.10
Shaquille O’Neal2005MIA7348153.411.685.09
Kevin Garnett2011BOS714276-0.035.115.08
Michael Jordan1997CHI8259283.221.835.06
Mike Conley2013MEM8051683.291.775.06
Andre Iguodala2014GSW6341451.203.865.06
Tim Hardaway1997MIA8159172.672.385.05
LeBron James2017CLE7456554.790.255.05
Mookie Blaylock1999ATL4832242.872.185.05
Terry Mills1997DET7935923.311.725.03
Tim Duncan2006SAS8051880.994.035.02
Andrei Kirilenko2004UTA7853633.081.925.00
Dwight Howard2011ORL7856301.083.914.99
Tim Hardaway1998MIA8157054.000.974.97
John Stockton2002UTA8249572.682.274.95
Dirk Nowitzki2002DAL7657313.990.934.93
Kevin Garnett2013BOS683899-0.405.314.90
Kevin Garnett1999MIN4734671.493.404.89
Dwight Howard2010ORL8254692.432.424.84
Kevin Garnett1998MIN8263131.852.964.81
Alonzo Mourning1997MIA6643320.883.934.81
Dikembe Mutombo2000ATL825750-0.184.974.78
Karl Malone1998UTA8157884.660.114.77
Manu Ginobili2006SAS6535103.121.654.77
Davis Bertans2019SAS7634543.041.734.77
Dirk Nowitzki2005DAL7859622.951.764.71
Andrei Kirilenko2006UTA6948262.132.594.71
Stephen Curry2018GSW5135754.83-0.124.71
Ben Wallace2004DET815726-0.134.804.67
Dirk Nowitzki2008DAL7753193.990.674.66
Dwight Howard2012ORL5438910.823.834.65
Draymond Green2015GSW7952201.573.064.64
Scottie Pippen1997CHI8259243.381.254.63
David Robinson2000SAS8048671.143.484.62
Steve Nash2011PHX7550304.220.384.61
LaMarcus Aldridge2018SAS7549552.052.564.61
John Stockton1998UTA6435252.801.824.61
Nikola Jokic2016DEN8034880.254.364.61
Nick Collison2013OKC8131502.152.464.61
Joel Embiid2019PHI6446722.302.294.60
Lamar Odom2009LAL7846401.453.154.59
Amir Johnson2013TOR8144392.671.914.57
Vlade Divac1999SAC5035941.293.254.54
Ray Allen2003SEA7654563.740.794.53
Kyle Lowry2016TOR7755712.631.884.50
Mike Conley2019MEM7047823.361.144.50
Mookie Blaylock1997ATL7856033.361.134.49
Chris Paul2011NOH8054383.271.224.49
Eddie Jones2000CHH7255811.942.534.48
Jason Kidd2004NJN6747652.801.684.48
Dwyane Wade2012MIA4931843.990.474.47
Chris Paul2012LAC6041163.341.124.46
Russell Westbrook2016OKC8056613.880.574.45
Steve Nash2009PHX7451094.86-0.414.45
Damian Lillard2019POR8059843.990.454.44
Vlade Divac1998CHH6434411.562.894.44
Grant Hill1998DET8161932.741.694.43
Danny Green2019TOR8046673.231.194.43
Lamar Odom2011LAL8250771.592.834.42
Gary Payton2000SEA8267693.580.824.40
Kobe Bryant2010LAL7355703.690.714.40
Lamar Odom2010LAL8251271.053.344.40
John Stockton2003UTA8243372.691.724.40
Kevin Garnett2006MIN7655372.032.364.39
Rasheed Wallace2000POR8154361.013.384.39
Jeff Hornacek1998UTA8047543.770.614.39
John Stockton2000UTA8246961.942.434.37
Reggie Miller1998IND8152933.810.524.33
Tim Duncan2008SAS7849401.652.684.33
Paul Millsap2012UTA6440602.142.194.33
Grant Hill1999DET5034443.111.214.33
Nikola Jokic2018DEN7549832.951.374.32
Tim Duncan2012SAS5831920.483.824.30
Metta World Peace2008SAC5743761.622.674.29
Shawn Bradley2001DAL823860-0.464.754.29
Patrick Ewing1997NYK7855860.503.784.28
Kawhi Leonard2015SAS6440291.572.714.28
Chris Paul2016LAC7449353.191.084.27
James Harden2015HOU8160565.13-0.884.25
LeBron James2019LAL5542182.591.664.25
Chris Paul2017LAC6138892.611.644.25
Dwyane Wade2011MIA7654713.980.264.24
Tracy McGrady2003ORL7558683.840.384.23
Steve Nash2007PHX7654524.31-0.104.22
Shane Battier2006MEM8151960.413.814.22
Jeff Hornacek1997UTA8250073.001.214.21
Toni Kukoc1998CHI7442491.422.784.20
Kevin Garnett1997MIN7757420.243.954.19
Robert Horry1998LAL7243372.321.864.19
Dwyane Wade2008MIA5138364.030.164.19
Eric Gordon2019HOU6844833.920.254.18
Vlade Divac2000SAC8251040.853.324.17
Kyle Korver2015ATL7548663.121.044.17
Rashard Lewis2009ORL7956092.162.004.16
Tim Duncan2013SAS6941240.913.254.15
Detlef Schrempf1998SEA7851993.640.504.14
Ray Allen2010BOS8054813.280.854.13
Ray Allen2001MIL8261643.670.464.12
Russell Westbrook2015OKC6747694.50-0.404.11
Shane Battier2007HOU8257670.283.824.10
Steve Nash2012PHX6238983.720.374.09
Nene2011DEN7545500.693.384.08
Andre Iguodala2015GSW7742831.662.414.08
Stephen Curry2014GSW7858263.620.454.07
Dirk Nowitzki2014DAL8052923.021.054.07
Alonzo Mourning2000MIA7952681.102.964.06
Manu Ginobili2014SAS6831993.510.544.05
Paul Pierce2008BOS8055243.390.654.04
Chris Paul2010NOH4533033.870.174.04
Baron Davis2005GSW4630622.851.194.04
Paul Pierce2005BOS8258742.601.444.03
Dikembe Mutombo1999ATL503314-1.665.704.03
Ben Wallace2006DET825299-0.134.144.01
Rudy Gobert2017UTA8152461.532.474.00
Kobe Bryant2001LAL6854603.180.803.97
Eric Bledsoe2019MIL7849481.432.533.96
Steve Nash2005PHX7552284.92-0.993.94
Arvydas Sabonis1998POR7344751.672.273.94
Dirk Nowitzki2006DAL8157742.761.163.93
Rasheed Wallace2005DET7949791.142.793.93
Kawhi Leonard2016SAS7247020.743.193.93
Robert Covington2018PHI8053470.982.933.92
Baron Davis2004NOH6750972.091.833.92
Grant Hill2000DET7456973.600.313.91
Tim Duncan1999SAS5036861.832.083.91
Dirk Nowitzki2010DAL8159542.491.413.90
Kyle Lowry2017TOR6044692.001.903.90
Dirk Nowitzki2001DAL8261921.802.093.89
Scottie Pippen1998CHI4431663.600.293.89
Dwyane Wade2007MIA5137673.100.783.88
Greg Ostertag1997UTA7734251.112.773.88
Tracy McGrady2002ORL7657292.721.153.87
Gary Payton1998SEA8259823.160.703.86
Tim Duncan2009SAS7547121.192.673.86
Vince Carter2013DAL8142502.221.623.85
Kevin Garnett2007MIN7657451.762.083.84
Manu Ginobili2015SAS7032172.451.383.83
Rasheed Wallace2006DET8050601.182.633.81
Patrick Beverley2014HOU5635002.301.513.81
Baron Davis2008GSW8267012.960.843.80
Rasheed Wallace1998POR7755050.812.993.80
Victor Oladipo2018IND7552251.442.363.80
Paul Millsap2013UTA7845601.692.113.80
Chauncey Billups2009DEN7955063.400.393.79
Vlade Divac1997CHH8152901.792.003.79
Steve Nash2006PHX7956794.27-0.503.77
Kemba Walker2018CHA8056692.251.523.77
Bo Outlaw2000ORL8247180.043.733.77
Robert Horry2000LAL7634101.382.383.77
Chris Paul2018HOU5837922.611.153.76
Kyle Korver2018CLE7333132.521.233.75
Rasheed Wallace2002POR7956231.292.453.74
Josh Smith2012ATL6644410.643.103.74
Derek Fisher2002LAL7038872.541.203.74
Dirk Nowitzki2009DAL8159722.950.783.73
Tim Duncan1998SAS8259592.131.603.73
Shawn Marion2001PHX7956250.523.203.73
Gheorghe Muresan1997WAS7335680.463.283.73
LeBron James2007CLE7861242.301.423.72
Kevin Durant2014OKC8163423.500.203.71
Shaquille O’Neal2006MIA5935071.662.053.71
Paul Pierce2004BOS8061312.041.663.70
Andre Miller2001CLE8255162.391.313.70
Dirk Nowitzki2007DAL7853432.950.753.69
Dwyane Wade2006MIA7556432.740.943.68
Bo Outlaw1998ORL8254220.513.163.68
Omer Asik2013HOU8249830.093.593.68
Andrew Bogut2011MIL654296-0.874.543.67
Rasheed Wallace2003POR7450881.342.323.66
Jusuf Nurkic2019POR7241711.532.133.66
Andre Miller2012DEN6635692.930.723.66
Damian Lillard2017POR7555114.65-1.003.65
Kawhi Leonard2017SAS7448913.050.603.65

  • Data is from NBA.com; RAPM is prior-informed (regresses toward prior year’s data point rather than zero)