You are on page 1of 27

10/24/2018 Linear Weights - Google Docs

Gears of WAR, Part I: Linear Weights 
136 
By  
Shawn Domagal‑Goldman 
  Updated Jan 18, 2010, 4:44pm CST 
SHARE 

Here  begins  my  introductory  series  on  sabermeric  concepts,  which  is  going  to  use  WAR  (Wins 
Above  Replacement)  as  a  unifying  framework.  I  plan  to  use  WAR  for  a  few  reasons.  For  one,  if 
you're  just  going  to  use  one  stat  for  both  evaluating  past  player  performance  and  valuing 
future  player  production,  it  should  be  WAR.  Why  does  WAR  have  this  prominence  as  the  best 
single  number  to  know about a player? I can answer this by defining the statistic. Simply put, 
WAR  is  the  number  of  wins  you'd  expect  a  team  to  have  added  to  its  total  due  to the presence 
of  a  particular  player,  instead  of  a  replacement  from  the  minor  league  ranks.  Thus,  WAR  is 
important  for  the  exact  same reason why many people are misled into thinking the W‑L record of 
a  pitcher  it  so  important:  WAR  is  measured  in  the  same  units  as  the  ultimate  measure  of 
success...  wins!  I  hope  to  talk  about  this  later,  but  the  difference  between  WAR  and  W‑L 
records  is  that  WAR  succeeds  in  this  goal  whereas  W‑L  records  fail.  W‑L  records  represent  a 
very  poor  attempt  to attribute wins to a pitcher. WAR does this, too... only WAR does it much, 
much,  much  better,  and  more  precisely  than  W‑L  records  do  and  they  have  they  have  the 
tremendous  advantage  of  being  capable  of  awarding  "wins"  to  position  players  and  pitchers  on 
an  equal  footing.  In  order  to  do  this  properly,  WAR  need  to  be  all‑encompassing;  this 
necessitates  the  inclusion  of  many  components.  Thus,  by  framing  things  with  WAR,  I  can  also 
introduce  all  of  you  to  a  variety  of  tools  and  concepts  currently  adopted  for  use  by  much  of 
the  sabermetric  community:  linear  weights,  wOBA,  UZR,  FIP,  EqBRR,  replacement‑level, 
positional  adjustments,  player  valuation,  forecasting  systems,  and,  error  and  uncertainty. 
This  article  is  the  first  in  a  series  of  10  parts.  (For  now...  maybe  the  series  will  end  up 
being  11  parts?  8  parts?  I'm  honestly  not  sure  yet...  We'll  see  where  this  goes.)  Anyways, 
this  is  Part  I:  Linear  Weights.  Jump  below  the  fold  to  for  an  introduction  to  a  very  central 
gear in the WAR machine... 

Originally,  I  wanted  to  make  this  first  story  one  on  error  and  uncertainty,  but  I  quickly 
realized  I  first  need  to  introduce  statistics  like  wOBA  and  UZR...  and  before  I  can  explain 
stats  like  wOBA  or  UZR  I  should  first  tell  you  what  linear  weights  are...  and  before  I  tell 
you  what  linear  weights  are  I  should  explain  what  a  run  expectancy  matrix  is.  So  let's  start 
there...  run  expectancy.  Take  a  look  at  the   following  table  (taken  from  Tangotiger's  site)  , 
which  tells  you  the  average  runs  scored  in  innings  that  occurred  in  the  years  1999‑2002, 
starting  with  given  base/out  states.  The  base/out  states  are  a  combination of the position of 
runners,  here  shown  in  different  rows,  and  the  number  of  outs  in  the  inning,  here  shown  in 
different columns. Look below the table for an example on how to use it. 

RE 99‑02  0  1  2 

Empty  0.555  0.297  0.117 

1st  0.953  0.573  0.251 

2nd  1.189  0.725  0.344 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 1/27
10/24/2018 Linear Weights - Google Docs

3rd  1.482  0.983  0.387 

1st_2nd  1.573  0.971  0.466 

1st_3rd  1.904  1.243  0.538 

2nd_3rd  2.052  1.467  0.634 

Loaded  2.417  1.65  0.815 

Let's  use  the  game  state  with  a  runner  on  second  and nobody out as an example. If you want to 
know  how  many  runs  were  scored  (on  average)  from  this  game state to the end of the inning, go 
to  the  column  labeled  "0"  (representing  the  number  of  outs)  and  look  down  to  where  it 
intersects  the  row  labeled "2nd" (representing the presence of a runner on 2nd). There, you'll 
find  the  value  "1.189." This means that, on average, teams scored 1.189 runs in the rest of an 
inning  where  there  were  0  outs  and  a  runner  on  2nd.  This  particular  calculation  was  for  the 
years  1999‑2002,  but  in  principle  one  could  calculate  this  for  any  given  year  or  range  of 
years,  or  even  with  models.  (Professionally,  I'm  a  modeler  so  this  makes  me  smile.)  If  you 
assume  that  the  run  expectancy  hasn't  changed  much  since  this  table  was  calculated,  this 
information  is  very  useful.  Every  base/out  combination  is  in  here,  so  you  can  figure  out  how 
many  runs  a  team  is  expected  to  score  in  the  rest  of  an  inning  at  any  point  in  the  game, 
assuming  average  production  from  that  team  the  rest  of  the  inning.  Note  that  run  expectancy 
doesn't  take  into  account  things  like  whether    Derrek  Lee  or    Neifi  Perez  is  due  up  in  the 
inning,  or  whether    Carlos  Zambrano  or   Aaron  Heilman  is  on  the  mound.  It  just  tells  you  how 
many  runs  a  team  would  be  expected  to  score  the  rest  of  the  inning,  based  on  what  teams have 
done  in  the  past  starting  from  the  same  base/run  state.  It's  an  expectation  based  on 
precedent.  Run  expectancy  is  an  important  concept,  as  it's  the  foundation  of  a  great  deal  of 
sabermetric  products  these  days,  including  the  (super‑cool)    win  expectancy  charts  at 
fangraphs  ,  their  measurements  of  "leverage index," and some cool individual statistics such as 
"clutch."  It's  also  at  the  heart  of   
linear  weights  ,  a  system  that  places  run  values  on  every 
type  of  play  ‑  singles,  doubles,  errors,  wild  pitches,  walks,  etc  ‑  and  in  so  doing  gives  us 
the  ability  to  translate a player's accumulated singles, doubles, stolen bases, etc. into runs 
created.  Once  we  know  the  runs  created,  we  can  translate  that  to  wins,  and  that'll  give  us 
WAR. But I'm saving that discussion for next time. 

Linear  weights  uses  another,    larger  table  (again  taken  from  Tango's  site)  .  This  table  is 
similar  to  the  prior  one,  except  the  entire  game  states  (including  both  where  runners  are  on 
base  AND  the  outs)  are  in  now  in  the  different  rows  and  game  events  (single,  double, 
strikeout,  reached  on  error,  etc.)  are  now  in  the  different  columns.  The  other  difference  in 
this  table  is  that  the  numbers  now  represent  a  change  in  the  average  number  of  runs  teams 
scored.  This  change  is  the  result  of  the  event  in  the  column  occurring,  and  is  measured  with 
respect  to  the  game  state  in  the  row.  Anyways,  here's  the  table  (if  it  doesn't  make  sense, 
look past the table for an example): 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 2/27
10/24/2018 Linear Weights - Google Docs

Let's  continue  from  the  previous  example  (a  runner  on  2nd  and  nobody  out)  and  see  the  change 
in  the  expected  runs  scored  if  the  next  thing  that  happened  was  a  double.  Go  to  the  row with 
"2nd"  in  the  "Base"  column  and  "0"  in  the  "Outs"  column. Now head across that row to the "2B" 
column.  The  number  there  is  0.97.  This  tells  us  that,  on  average,  doubles  that  occurred  when 
there  was  a  runner  on  second  and  0  outs  increased  the runs scored in the inning by 0.97 runs. 
This  makes  sense!  Think  about it with me for a moment. Most of the time, when there's a double 
hit  with  a  runner  on  second,  the  runner  scores.  Thus,  after  the  double  the  team  will  usually 
be  left  with  the  same  situation  we  started  with:  a  runner on second with nobody out. However, 
there's  a  huge  difference...  a  run  scored!  They're  still  expected  to  score  1.189    more  runs 
after  the  double,  and  have an extra run across the board. Thus, the increase in run expectancy 
of  0.97  runs  (a  number  very  close  to  1)  makes  sense.  This  allows  us  to  place  a  value on that 
double: in this game state, a double is worth 0.97 runs. 

Now  if  you  want  to  find  out  how  many  runs  a  player  added  to  a  team's  totals,  you  could  take 
all  the  doubles  they  got  with  runners  on  2nd  and  nobody  out,  multiplied  each  double  by  its 
value,  and  summed  the  products...  and  then  do  that  again  for  every  game  event  in  every  game 
state,  summing  the  totals.  But  there  are  two  problems  with  that:  1.)  it's  tedious  and  2.)  it 
assumes  players  do  better  in  certain  game  states  than  other  game states. I'll show in a later 
post  how  there's  no  reason  to  believe  2.)  is  true  case  except  for  a  couple  minor  exceptions. 
Besides,  it  would  be  nice  to  be  able  to  go  straight  from  the  stats  we'd  usually  find  on 
player's  stats  page  into  runs  and  wins.  Linear  weights  solves  these  problems  by  assigning 
values  to  each  game  event,  independent  of  the  game  state.  Basically, it answers the following 
question:  how  much  is  a  generic  double  (or  any  other  game event) worth, in terms of runs? The 
answer  to  that  question  will  let  us  calculate  a  player's  contributions  much  more  easily,  as 
we'll  be  able  to  simply  sum  up  their  doubles,  singles,  etc.  all  multiplied  by  the  run  value 
for  each  event  type,  and  ignore  all  the  permutations  of  game  type  with  game  state.  We  don't 
have  to  worry  about game state, because we've made the doubles (etc.) all context‑independent. 
In  other  words,  linear  weights  gives  us  the  bridge  we  need  to  get  from  game  events  that  are 
easily  found  in  a  player's  stat  page  (things  like  singles,  doubles,  stolen  bases,  etc.)  to 
runs  created.  For  pitching,  defense,  or  Ryan  Theriot's  baserunning  it  gives  us  a  similar 
bridge to runs prevented. That's pretty cool, if you ask me. 

How  does  linear  weights  do  this?  It  takes  a  weighted  average  of  the  value  of  each  event  over 
all  the  game  states.  The  weighted  average  allows  the  game  states  that  occur  more  often  to 
count  more  often  in  the  average.  This  is  necessary  because,  for  example,  the  game  state 
"nobody  on,  nobody  out"  will  occur  much  more  often  than  the game state "bases loaded, 2 out." 
The  former  state  is  guaranteed to occur at least 17 times a game; any game in which the latter 
game  state  occurs  17 times would be long remembered for its excitement, (and perhaps as Carlos 
Marmol's  longest  career  outing).  The  weighted  average  allows  us  to  account  for  this 
discrepancy  in  how  often  the  game  states  occur,  by  applying  heavier  weights  to  more  common 
game  states.  Once  we  do  that,  we  have  the  value  of the average double... and every other game 
event. Look at the last row in the above table, which has these values for every game event. 

If  you  understand  this  much,  you've  grasped  a  VERY  important  concept  in  sabermetrics.  If  you 
"get"  how  all  these  game  events  are  valued  in  terms  of  runs,  you'll  be  able  to  easily  grasp 
other  advanced  stats  like  UZR  and  wOBA,  two  of  the  most  important  components  in  WAR.  We'll 
return  next  week  with  a  look  at  wOBA,  which  is  the way we incorporate hitting into WAR; we'll 
also  talk  about  going  from  the  runs  calculated  in  linear  weights  to  wins.  If  you  DON'T 
understand what I've said so far, then fire your questions away in the comments section! 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 3/27
10/24/2018 Linear Weights - Google Docs

Before  I  finish  this  piece,  I'd  like  one  last  word  and  caveat.  You  can  derive  all  of  these 
numbers  and  tables  using a variety of methods, even (woot!) models. I showed the number/tables 
above  because  they  were  readily  available  (thanks  to  Tangotiger),  and  because  they're 
empirically  derived.  It  would  have  taken  a  lot  more  text  to  introduce  things  like  Markov 
chains.  So,  just  realize there are other ways to derive these numbers, and some will result in 
"better"  numbers  than  the  ones  here.  Indeed,  there  are  a  few  wonky  numbers  in  the  tables 
above.  If  you  use  Markov  chains  that  wonkiness  goes  away,  but the differences aren't huge and 
mostly  show  up  in  the  last  decimal  place.  More  than  anything  else,  my  goal  here  is  to  help 
people  understand  what  a  run  expectancy  matrix  is,  and  how  linear weights allow us to put run 
values  on  individual  events.  Finally,  if  you're  really  into  this  stuff  I  strongly  recommend 
grabbing  a  copy  of   
"The  Book:  Playing  the  Percentages  in  Baseball" by Tom Tango (tangotiger), 
Mitchel  Lichtman  (mgl)  and  Andrew  Dolphin  (dolphin).  That  book  is  a great place to learn more 
about  all  this  stuff,  and  will  include  many  applications  I  may  not  get  the  chance  to  talk 
about here. So get the book ‑ it's worth it! 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 4/27
10/24/2018 Linear Weights - Google Docs

who gets credit for this run and how much credit? 
If  you  go  by  runs  and  RBI,  you  would  presumably  give  half  the  credit  to  Bonifacio  and  the 
other  half  to  Ramirez,  since  those  are  the  only  two  receiving  run  stats  for  this  set  of 
circumstances.  But  does  that  tell  you  everything  that  happened?  Bonifacio  ended  up  on  base 
with  a  single,  but  Infante was critical to move him to third base on the double. However, when 
you  use  runs  and  RBI,  Infante  receives  no  credit  for  that  run,  despite  the  fact  that  he  was 
very important in moving the runner into position to score. 
This  gets  to  the  point  of  what  runs  and  RBI  measure. Yes, they measure runs scored and driven 
in,  but  there  are  more  factors  to  those  numbers  than  meets the eye. Runs scored encompass not 
only  a  player's  ability  to  get  on  base,  but  also  his  team's  ability  to  drive  him  in. 
Similarly,  RBI  is  dependent not only on a player's ability to move runners down the bases with 
hits,  but  also  his  team's ability to provide runners for him to move. In other words,   there is 
little  separation  between  the  individual  and  team  aspects  of  runs  scored  and  RBI  .  If  we  want 
to  evaluate  the  individual,  we  cannot  be  using  stats  that  encompass the team's performance as 
well. 
Note  that  this  does  not  mean  that  runs  and  RBI  are  "useless."  Like  all  statistics,  they  do 
tell  you  something,  and  they  can  tell  a  story.  As  is  the  case  with  many  stats,  it  is not the 
stat's  fault,  but  rather  the    misuse  of  the  stat  that  makes  it  look  bad.  These  stats  can  tell 
you  a  lot  about  the  type  of  player  you  are  dealing  with  and  the  quality  of  the  team 
surrounding him in the lineup, but they cannot determine how much that player has produced. 
Enter Linear Weights 
So  our  goal  in  this  case  is  to  isolate  each  player's  performance  from  his  team  and  give  that 
performance  a  run  value.  I  do  not  want  to  give  Infante extra credit for hitting a double just 
because  his  teammate  is  on base, and similarly I do not want to credit Ramirez more for making 
an  out  just  because  his  teammate  was  on  third;  neither  of  these  situations  were  in  an 
individual player's control. 
How  can  we  resolve  that?  One  way  to  handle  this  is  to  give  the  player  an    average  amount  of 
credit  for  each  play.  Every  base‑out  state  (for  example,  runners  on  second  and  third  with  no 
outs,  or  runner  on  first with no outs, or runner on second with one out) has a   run expectancy  , 
a  value  of  runs  that  is  expected  to  score  based  on  empirical  evidence  (for  example,  how  many 
runs  have  scored  after  a  second  and  third  with  no  outs  situation).  One  can  do  this  with 
play‑by‑play  data  from  any  era.  For  example,  let  us  use  this  table  by  Tom  Tango  for  the    1999 
to 2002 era  . 
  

RE 99‑02  0  1  2 

Empty  0.555  0.297  0.117 

1st  0.953  0.573  0.251 

2nd  1.189  0.725  0.344 

3rd  1.482  0.983  0.387 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 5/27
10/24/2018 Linear Weights - Google Docs

1st_2nd  1.573  0.971  0.466 

1st_3rd  1.904  1.243  0.538 

2nd_3rd  2.052  1.467  0.634 

Loaded  2.417  1.65  0.815 

Note: The columns are the number of outs, while the rows indicate the base situation. 
Let's  go  back  to  our  previous  situation.  Going  from  the  start  of  the  inning  to  after 
Bonifacio's  single,  we  see  that  the  Marlins  would  have  increased  their  expected  runs  scored 
from  0.55  runs  to  0.95  runs.  This  means  that,  in  this situation, Bonifacio's single was worth 
0.4  runs .  Then,  Infante's double changed the run expectancy from 0.95 to 2.05, meaning in this 
case  that  Infante's  double  added    1.1  runs .  Finally,  Ramirez's  sacrifice  fly  scored  a  run, 
meaning  we  automatically  add  one  run  to  his  total,  but  it  changed  the  state  to  runners  on 
second  with  one  out  (0.73  run  expectancy).  This  means  that  in  total,  the  change  from  runners 
on  second  and  third  with  no  outs  and  runner  on  second with one out  and a run scored was worth 
‑0.3  runs   (yes,  that  means Ramirez   hurt the team's chances of scoring a run by driving in that 
run via a sacrifice fly). 
But  remember,  we  wanted  to  give  credit  isolated  from  teammates.  So  what  we  can  do  is   
average 
all  of  the  changes  in  run  expectancy  resulting  from  singles,  doubles,  home  runs,  walks,  and 
other  basic  events.  That  is,  take  all  the  changes  in  base‑out  state  that  resulted  from  a 
single,  measure  the  run expectancy change from each single, and take the average. This gives a 
player  credit  for  the  average  event,  rather  than  credit  him  for  what  his  team  provided  in 
terms  of  runners  on  base  or  teammate  ability  to  drive  runners in. It eliminates the effect of 
the teammates surrounding the player in the lineup and isolates only that player's production. 
What  do  linear  weights  look like in terms of run values for each event? You can see an example 
for the 1992 to 2002 era   at the end of this table   by Tom Tango. Here it is summarized: 
  

Event  Runs Above Average 

Non‑intentional BB  0.33 

Hit‑by‑pitch  0.39 

Single  0.47 

Double  0.76 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 6/27
10/24/2018 Linear Weights - Google Docs

Triple  1.06 

Home Run  1.41 

Stolen Base  0.20 

Caught Stealing  ‑0.46 

Strikeout  ‑0.31 

Other Outs  ‑0.30 

These  values,  measured  for  the current run environment, are the basis for the weights found in 


wOBA.  Therefore,  wOBA  more  properly  weighs  the  value  of  different  hits  and  steals  than  OPS 
does,  making  it  a more accurate offensive stat. As you can see, there are numerous interesting 
questions that are resolved by this table: 
‑  One  can  see  the  actual  relative  value  of  an  average home runs versus an average single. SLG 
measures  a  4:1  ratio  in  difference,  while  linear  weights  shows  that  the  difference  is  more 
like 3:1. 
‑  A  triple  is  essentially  worth  a  run  when  you  take  into  account  the  average  number  of 
baserunners  aboard  when  a  triple  is  hit.  A  home  run  is always worth at least one run, but the 
average number of baserunners aboard when a home run is hit adds 0.4 runs to that value. 
‑  The  value  of  a  walk  is  very  similar  to  the  value  of  an  out,  which  makes  total sense seeing 
as  though  they  are  polar  opposites  of  each  other  (a  walk  is  the  least  valuable  non‑out  event 
at the plate). 
‑  The  value  of  a  stolen  base  is   
significantly  less  than  the  value  of  a  caught  stealing.  Outs 
on the bases are significantly more damaging than base advances. 
These  little  nuances  help  in  a  lot  of  different  analyses,  but  one  thing  this  allows  us  to  do 
is  properly  evaluate,  in  terms  of    runs  above  average  ,  the  performance  of  a  given  hitter,  not 
only  in  quality  but  in  quantity.  For  example,  in  2011    Jose  Bautista  led  the  majors  in  wOBA 
with  a  .436  mark.  He  was  the  best  hitter  in  terms of rate, but because he missed some playing 
time,  we  can  see  that    he  was  actually  just  outproduced  by    Miguel  Cabrera  by  about  one  run 
above average. 
This  was  a  quick  and  dirty  explanation  about  the  methodology  and  the  reasoning  behind  why  we 
use  linear  weights.  Any  questions,  leave  them  in  the  comments  section and I'd be happy to try 
and  address  them.  Getting  this  concept  really  helps  to  understand  valuing  offensive 
performance. 
 
 
 
 
 
 
 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 7/27
10/24/2018 Linear Weights - Google Docs

Linear Weights 
By Keith Glab 
Whereas  Bill  James  used  primarily  intuition  to  create  his  Runs  Created  formula,  Pete  Palmer 
took  the  average  value  of  every  offensive  baseball  event  in  instituting  a  Linear  Weights 
value.  He  figured  these  values  by  using  a  computer  simulation  that  modeled  run  production. 
The  simulation  corresponded  to the results that George Lindsay got from recording 373 games of 
play‑by‑play data from the 1959 and 1960 seasons. 
  
Basically,  you  take  any  event (say, a home run) and a situation (runner on first, one out) and 
subtract  the  initial  Inning  Run  Expectancy  from  the  Inning  Run  Expectancy after the event (in 
this  case,  2.243‑.498  =  1.745  runs).  You  then  repeat  the  process  for  every  situation,  and 
every event, and come up with this easy additive formula: 
  
.47*1B + .78*2B + 1.09*3B + 1.4*HR + .33*(BB+HB) ‑ .27*(AB‑H) 
  
You  can  also  view  it  as  .47  for  a  hit  +.31  for  each  extra  base.  A  hitter  with  a  negative 
value  is  hurting  his  team  while  one  with  a  positive  value  is  helping  his  team  by  that  number 
of runs. 
  
What   
Batting  Runs  does,  is  take  a  player’s  linear  weights  value  and  adjust  it  for  home 
ballpark  and  era.  A  value  of  zero  is  league  average;  a  negative  number  indicates  how  many 
runs  below  average  a  player  is,  while  a  positive  number  counts  a  player’s  run  contribution 
over the average player’s. 
  
Offensive Runs 
  

3*SB ‑.52*CS ‑ .02K 
  
Offensive  Runs  take  strikeouts, stolen bases, and caught stealings into account.  I’m assuming 
that  whevever  someone  calculated  the  value  of  a  strikeout  that  they  have  league  averages  for 
how  often  ground  balls  and fly balls advance runners, and how often hitters reach on a dropped 
third  strike.  Bill  James  uses  the  value  .03  for  his  RC formula… I’ve also seen values below 
.02.  I’m erring towards the lesser deviation from regular outs.   
  
  For  SB  and  CS,  Palmer  came  up  with  initial  values  and  then  bumped  them  up  due  to  their 
situational  nature  (managers  are  more  likely  to  steal  in  key  situations  where  advancing  a 
runner  would  be  of  more  benefit,  and  scoring  one  run  as  opposed  to  bunches  would  be  more 
appropriate).  In  doing  so,  he  sneakily  adjusted  the  ratio  of  SB  and  CS  values  to  overly 
penalize hitters for a bad SB%.  
  
One  of  the  biggest  Sabrmetric  cons  out  there  is  the  notion  that  you  need  a  75%  success  rate 
stealing  bases  to  help  your  team.  These  are  the  actual  era  break‑even  values  for  SB%  that 
Palmer’s model came up with: 
  
1901‑1920: ~62.5% 
1921‑1940: ~64% 
1941‑1960: ~65.5% 
1961‑1977: ~63% 
  

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 8/27
10/24/2018 Linear Weights - Google Docs

That  averages  to  about 63.5% from 1900‑1977.  In this offensive era of ours, the percentage is 


probably  right  around  66.6% ‑‑ 2/3 rather than the ¾ that stolen base naysayers would have you 
believe. 
  
OR/162 
  
OR*1.05 
  
This  adjustment  simply  treats  pre‑1961  players  as  though  they  had  the  opportunity  to  play  in 
162  games  per  season  rather than 154.  I increase their OR by 5%.  If their careers overlapped 
the  rule  change,  I  adjusted  that  5%  by  whatever  %  of the player’s career came before the rule 
change.   
  
  
DPOR 
  
‑.26*(AB‑H‑GIDP)‑.72*GIDP or ‑.26*(AB‑H)‑.46*GIDP 
  
Palmer  never  included  double  plays  in  his  Linear  Weights  formulae,  believing  that  they  were 
more  of  a  product  of  batting  order  than  ability.  I  don’t  see  how  anyone  can  look  at  the 
numbers  and  come  to  this  conclusion.  Yes,  leadoff  hitters  are  guaranteed  one  at  bat  where 
they  cannot  hit  into  a  DP,  but  the  differences  between  the  #2‑#9  spots  in  the  order  are 
negligible.  And  leadoff  hitters  get  shafted  in  normal  linear  weights  analysis  anyway,  since 
for  them  a  BB  and  SB  is  just  as  good  as a 2B in their first at bat (yet they’re credited with 
.15  fewer  runs  with  the  SB‑BB  combo).  Therefore,  I  think  that  DPOR  actually  does  a  pretty 
good job of leveling the playing field. 
  
I  calculated  this  value  of  the  DP  myself  using  Lindsay’s  data, but I’ve seen others calculate 
it  (probably  using  more  recent  data)  and  come  up  with  a  similar  number.  FYI  –  the  average 
player steps up to the plate in a GIDP situation once every five trips.   
  
The Final Formula: 
  
KLWTS= .47*1B + .78*2B + 1.09*3B + 1.4*HR + .33*(BB+HB) + .3*SB 
   ‑.52*CS ‑ .26*(AB‑H‑GIDP)‑.72*GIDP   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 9/27
10/24/2018 Linear Weights - Google Docs

Sabermetrics 101: Linear Weights 

By  
Graham MacAree 
  Feb 20, 2010, 3:31pm PST 
SHARE 

Now we're really getting into the good stuff. 

Prerequisites for understanding:  
Game state 
,  
environment 

Prerequisites for derivation: 
 Game state 
; database. 

The Not‑So‑Missing Link 

Let's  go  all  the  way  back  to  the  beginning.  We  started  this  series  by  looking  at  the  game 
state,  along  with  run  expectancy  and  win  expectancy.  We  did  so  for  a  reason,  and  that's 
because  it's  impossible  to  understand  any  of  the  more  modern  statistics  without  a  good 
understanding  of  the   game  state  (and  run  expectancy).  Here,  we  have  the  intermediate  step 
between  game  state  and  a  useful  metric,  whether  we  wish  to  look  at  batting,  pitching,  or 
defence:  Linear  Weights.  Just  as  runs  require  some  translation  in  order  to  be  presented  in  a 
measure  that  has  some  inherent  value,  the  events  on  the  field  must  also  be  converted  into 
runs. How? By going back to our game state and looking at run expectancy. 

We  know  the  average  number  of  runs  scored  over  the  remainder  of  an  inning  in  any 
baserunner/out  state.  Bases  loaded,  no  out?  You're  looking  at  a  lot  of  runs.  Empty,  with  two 
down?  Rather  less.  With play‑by‑play data, we can actually look at any class of event and find 
out  the  average  change  said  event  causes  in  run  expectancy.  Add in the average number of runs 
that  scored  on  a  play  and  suddenly  you're  left  with  the  value,  in  runs  ‑  i.e.  the  linear 
weight  ‑  of  any  given  event.  This  is  a  pretty  big  deal,  as  without  it  we'd  have  no  way  to 
measure  the  relative  importance  of  say,  walks  and  singles.  Combined  with  the  run/win 
conversion,  linear  weights  (in  run  form)  bridge  the  gap  between  the  old  baseball  stats  and 
value. 

Nothing Is Arbitrary 

Consider  the  previous  paragraph  again.  It's  critically  important  to  have  a good grasp of what 
it  means:  that  all  of  our  top‑line  stats  are  related  to  runs  above  or  below  average  by 
empirical  means.  There  is  nothing  arbitrary  in  the  exact  weighting  we  have  of  a  home  run 
relative  to  a  triple,  or  a  ground  ball  to  a  line  drive.  Years  upon  years  of  data  allow us to 
convert  back  and  forth,  or  up  and  down  with  ease.  A common complaint with modern sabremetrics 
is  the  bewildering  array  of  fractional  coefficients  that  dot  the  scene,  but  if  you  look  at  a 
formula  that's  based  on  linear  weight,  don't  see  them  as  confusing  numbers.  Instead,  look  at 
them as relative values, derived through years of baseball being played. 

A Livable Zone 

Linear  weights  is  a  fantastic  tool,  but  we  should  be  aware  of  the  limitations  as  we  sing  its 
praises.  Because  we  build  our  run  (and  out)  values  on  league  average  data,  there's  no 
guarantee  that  they  work  in  extreme    environments .  And,  in  fact,  they  do  not.  At  all.  If  a 
pitcher  struck  out  100%  of  the  batters  he  faced  and  we  attempted  to  estimate  his  ERA  though 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 10/27
10/24/2018 Linear Weights - Google Docs

linear  weights,  we  would  end  up  with  our  pitcher  allowing  something  like  negative  three  runs 
per  nine  innings,  a  clearly  impossible  solution.  Situations  don't  have  to  be  as  extreme  as 
that  either:  the  best  pitchers  in  baseball  effect  their  run  environment  to  the  point  that 
linear  weights  may  not  accurately  reflect  the  true  conversion  between  their  pitching  and  the 
runs  we'd  expect.  The  take  away  point?  Linear  weights  are  optimised  for  the  average  baseball 
game,  and  start  to fall apart when you drift too far away from that. They're still usable when 
a  long  way  from the mean, but as with anything, understanding what's wrong with what we use is 
just as important as knowing what's right. 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 11/27
10/24/2018 Linear Weights - Google Docs

Understanding Linear Weights 
MARCH 9, 2011 

tags:  
Linear Weights 

by  
triplesalley 

It’s  so  nice  to  have  a  night  where  I  actually  have  some  free  time  to  write.  I’ll be able to 
start  writing  with  regularity  in  about  a  week  and  a  half  or  so,  right  around  the  time  I make 
my  yearly  trip  to  Arizona  for  a  few  days  of  good  ol’  Spring  Training.  I  don’t  really  have 
anything  in  particular  to  write  about,  and  I’m  not  really  in  the  mood  to  do  player  analysis, 
so  I  thought  I’d  write  a  little  bit  about  a  very important sabermetric principle that’s found 
its  way  into  essentially  every  aspect  of  sabermetrics‑  linear  weights.  And  the  more  I  think 
about  it,  if  you  understand  linear  weights  (hereafter  referred  to  as  “LW”  or  “LWTS”),  you’ll 
understand a   lot  about sabermetrics. 

A brief history on LW, and how they are applied 

The  history  of  LW  begins  well  before  a  night  custodian  by  the  name  of  Bill  James,  when  a man 
named  Ferdinand  Cole  Lane  built  a  weighted  system  for  measuring  the impact of hitting events. 
This  was  later  picked  up  by  George  Lindsey,  who  recorded  detailed  play‑by‑play  data  on  over 
1,000  Major  League  games  and  produced  what  is  referred  to  as  a  run  expectancy  matrix,  which 
tells  us  the  probability of scoring from a particular base‑out state.  In   2010 , for example, a 
team  was  expected  to  score  .49  runs  from  a  man  on  first  and  no  outs  until  the  end  of  the 
inning,  and  2.4  runs  with  the  bases  loaded  and  no  outs.  This merely quantifies what we know‑ 
teams  are  more  likely  to  score  more  runs  in  situations  like 123_0 (bases loaded, no out) than 
they  are  in  situations  like  001_2  (man  on  first,  two  outs).  Lindsey  then  took  the  average 
increase  in  run  expectancy  from  each  event  to  find  the  average  value  of  each  event.  And 
really,  that’s  all  there  is  to  it.  Linear  weights  are merely the   empirical   average impact an 
event  has  towards  the  run‑scoring  process.  Pete  Palmer  expanded  upon  Lindsey’s  work  in  the 
1984  classic    Hidden  Game  of  Baseball  ,  which  introduced  the  Linear  Weights  System.  What 
separated  Palmer  from  the  rest  of  the  pack  is  that  he  included  negative  events  into  the 
equation,  so  that  players  were  held  accountable  for  the  outs  he  made  while  at  the  plate;  not 
just the positive outcomes.  Palmer’s original equation (sans outs on bases): 

LWTS = .46*1B + .80*2B + 1.02*3B + 1.40*HR + .33*(BB + HBP) + .30*SB – .60*CS – .25*(AB – H) 

Singles  are  worth  about  .46 runs, doubles about .8, a home run adds about 1.40 runs on average 


each  time,  and  walks  and  hit  batsmen  create  about  .33  runs each time; slightly less than that 
of  a  single.  Later  analysis  revealed  that  Palmer’s  original  SB/CS values were too high; if I 
remember  right,  he  increased the figures arbitrarily in an attempt to account for basestealing 
in  high  leverage  (or  pressure)  situations.  The  reason  why  linear  weights  works,  compared  to 
the traditional statistics, is explained beautifully by Palmer: 

“What  Linear  Weights  does  is  to  take  very  offensive  event  and treat it in terms of its impact 
upon  the  team‑  an  average  team,  so  that  a  man  does  not  benefit  in  his  individual  record  for 
having  the  good  fortune  to bat cleanup with the Brewers or suffer for batting cleanup with the 
Mets.  The  relationship  of  individual  performance  to  team  play  is stated poorly or not at all 
in  conventional  baseball  statistics.  In  Linear  Weights  it  is  crystal  clear:  the  linear 
progression,  the  sum,  of  the  various  offensive  events,  when  weighted  by  their  accurately 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 12/27
10/24/2018 Linear Weights - Google Docs

predicted  run  values,  will  total  the  runs  contributed  by  that  batter  or  that  team  beyond  the 
league average.” (67) 

Players  have  absolutely  no  control  over  where  they  hit  in  the  lineup.  Think  of  it  this  way‑ 
Bengie  Molina  was  the  cleanup  hitter  for  the  Giants  for  a  number  of  years.  Had  he  been  on 
another  team,  would  he  have hit in the same spot in the order?  And would he have collected as 
many  RBI?  Remember,  RBI  opportunities  are  highly  dependent  on  one’s slot in the lineup.  The 
same  goes  for  runs  scored‑  yes,  good  baserunners  will  score  more runs than bad ones.  But the 
player’s  teammates  are  the  ones  that  have  to  put  the  ball in play first.  So it is foolish to 
rate  players  based  on team‑dependent numbers.  Batting average is useless towards player value 
as  well‑  yes,  it  tells  us  the  rate  of  hits  by  the  player,  but  what  about  the  impact  of  the 
hits  and  the  walks?  OPS  sure  is  nice,  but  it  doesn’t  tell  us  the  amount  of  runs  the  player 
helps  generate.  Linear  weights  provides  us  with  a  player’s  runs  above  or  below  the  league 
average  based  on  the  ratio  of  his  positive  run  output  to his outs created.  If a player is +0 
LWTS,  this  simply  means  he  hit  at   
exactly  the  league  average  rate.  If  a  player  is  ‑10 LWTS, 
he  provided  10  less runs than a league average player in the same amount of opportunities, and 
if  he’s  +10,  he’s  provided  10   
more  runs  than  a  league average hitter.  That’s all there is to 
it. 

How I generate LW 

This  is  where  things  get  technical,  so  you  may  just  want  to  skip  ahead.  There  are  various 
ways  to  generate  LW values‑ there is the empirical method, as outlined above (and described in 
more  detail    here ).  This  is  the  most  “correct”  method.  But  since  not  everyone  is  a 
programming  genius  (guilty),  there  are  other  methods.  One  is  to  use  a    Markov  model  to 
simulate  the  impact  of  each  event.  This  takes  a  heck  of  a  lot  of  calculations,  so  it  might 
not  be  for  you‑  but  there  is  one   
very  basic  Markov  calculator  on  the  internet  that  will  spit 
out  marginal  values  for  you.  The  more  simple  method,  and  the  one  that  I  use,  is  the 
“plus‑one”  method    outlined  by  Brandon  Heipp  ,  which  squeezes  out  the  marginal  events  from  a 
dynamic run estimator‑ in this case, Base Runs (BsR).  Why BsR? 

Because  it’s  a  very  simple  run  estimator,  is  extremely  flexible  for  the  run  environment,  and 
works  with  a  true  model  of  run  scoring.  The  original dynamic run estimator, Bill James’ Runs 
Created, works as follows: 

Runs = (A*B)/C 

Where  “A”  are  the  times on base, “B” is the advancement factor, and “C” are the opportunities; 


plate  appearances.  The  problem  with  RC  is  pretty  simple‑  it  doesn’t  treat  home  runs 
correctly.  The  simple  equation  shown  above  works,  yes,  but  it doesn’t model baseball as well 
as  it  could.  RC seems to forget that a home run creates a run every single time‑ excluding it 
is  taking  out  a  major  aspect  of  the  game.  And  this  is  one  of  the  reasons  why  BsR  works  so 
well.  It is constructed as: 

Runs = A * (B/(B+C)) + D 

Where  “A”  and  “B”  are  the  same  as  RC,  “C”  are outs made, and “D” are home runs.  In short, it 
is essentially: 

Runs = Times on Base * Score Rate + Home Runs 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 13/27
10/24/2018 Linear Weights - Google Docs

And  it  just  so  happens  that  it  spits  out  marginal  run values that match up perfectly with the 
empirical  run  values.  Anyways, let’s say we use the simplest BsR formula out there to extract 
run values for the 2010 MLB season: 

A = H  – HR + BB + HBP 

B = .88*1B + 2.42*2B + 3.96*3B + 2.2*HR + .11*(BB + HBP) + .99*SB – .99*CS 

C = AB – H + CS 

D = HR 

First,  we  can  reconcile  the coefficients in the “B” term so that it matches actual league runs 


scored.  To  find  our  required  “B,”  we  simply  use  (R  –  D)*C/(A  –  R  +  D)  to  solve  for  it. 
Divide  this  by  the  estimated  “B”  and  we  get  0.88,  which  we  multiply  all  of  our  coefficients 
by.  This  is  for  accuracy  purposes  only.  Once  we  have  our  new  coefficients,  we  extract  each 
run value through this (pretty darn intense) formula: 

LW = ((B+C)*(A*b + B*a) – (A*B)*(b+c))/((B+C)^2) + d 

Where  the  capitalized  terms  are  the  sum  of  the  factor  (“B,”  for  example,  would  be  the 
frequency  of  the  event  times  the  coefficient  in  the  B  term), and the lower case terms are the 
coefficient  of  the  factor  (i.e.  .88  for  singles,  2.42  for  doubles, etc.).  Doing so yields us 
the following equation: 

LWRC = .47*1B + .75*2B + 1.04*3B + 1.40*HR + .33*(BB + HBP) + .18*SB – .28*CS – .09* (AB – H) 

You’ll  notice  that  the  title  and  the  out  terms  look  a  bit  different.  The  title  stands  for 
“Linear  Weights  Runs  Created,”  and  the  out  term  is  ‑.09  because  it  is  expressed  in  absolute 
terms.  In  order  to  make  it  relative  to  average,  we  find  the  overall  runs  per  out‑  or  runs 
scored  divided  by  C‑  and  add  this  figure  to  the  events  in  C.  For  2010,  runs  per  out 
(excluding pitcher hitting) is .178.  That gives us this: 

LW = .47*1B + .75*2B + 1.04*3B + 1.40*HR + .33*(BB + HBP) + .18*SB – .45*CS – .27* (AB – H) 

And  that’s  all  there  is to it.  I know it may seem like a lot, but it really isn’t‑ especially 


if  you  have  a  spreadsheet  set  up  for  it.  Heipp  has  one  in  the  aforementioned  link,  and  the 
wOBA  calculator  that  I  published  a  while  back  does  all  of  this  for  you.  More  terms  can  be 
added  to  spice  things  up  a  little  bit‑  for  example,  the  LW  formula  from   
Tango’s  coefficients 
give us this slightly more complicated equation: 

Tango LW = .48*1B + .77*2B + 1.06*3B + 1.41*HR + .49*ROE + .31*NIBB + .34*HBP – .28*(AB – H – 
ROE – K + SF) – .29*K 

And  another  equation  developed  from  Retrosheet  data  that  spans  from  1911  until  2009  gives  us 
the following formula: 

Retro LW = .47*1B + .77*2B + 1.05*3B + 1.40*HR + .50*ROE + .31*NIBB + .34*HBP – .27*(AB – H – 
ROE – K + SF) – .29*K 

All  slightly  different  coefficients  that  give  us  slightly  different  results.  It’s  not  a  big 
deal,  but  I  wanted  to  show  how  different  datasets  and  BsR  formulae  can  influence  the  run 
values  provided.  When  all  is  said  and  done,  though,  you’re not going to see a big difference 
between them. 

Applications beyond hitting 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 14/27
10/24/2018 Linear Weights - Google Docs

LW  values  have  expanded  beyond  the  realm  of  just  offense‑  it  is  applied  to  defense  and  to 
pitching  metrics.  With  defense,  the  run  value  of  a  play made above average is the difference 
between  a  batted  ball  and  an  out,  or  about  .75  runs.  For  the  outfield,  it’s  about  .85 (more 
doubles  and  triples,  obviously).  With  pitching,  FIP  takes  the  basic  run  values,  places  them 
above  the  value  of  a  ball  in  play  and  multiplies  by  9  to  attain  its  coefficients.  Uber‑stat 
tERA  takes  the  linear  weight  value  of  each  batted  ball  to  estimate  the  pitcher’s  defense 
neutral  runs  allowed.  So  LW  doesn’t  apply  just  to  offense‑ it has spread to other aspects of 
the game, as well.  The same applies to baserunning runs as well. 

All  in  all,  LW  are  the  best  way  to  measure  a  player’s  offense  due  to  its  simplicity  and 
theoretical  practicality.  The  process  to  get  them  is  a  bit  complicated,  sure,  but  it  will 
always  provide  you  with an outstanding overall view of a player’s value provided with the bat. 
And it’s a construct that allows you to look at all other aspects of the game, as well. 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 15/27
10/24/2018 Linear Weights - Google Docs

Custom wOBA and Linear Weights Through 2010: Baseball Databank Data Dump 2.1 
 

You  know  what  wOBA  is, right? If not,   get hip to it  . In short,  


wOBA (weighted On‑Base Average) 
was  created  by   
Tom  Tango  as  a  way  of  more  accurately  expressing  a  player's  offensive  value 
(according  to  the   
linear weights of offensive events) than more traditional stats like batting 
average,  on‑base  percentage,  OPS,  or  whatever.  While  those  numbers  have  their  uses,  linear 
weights  more  accurately  reflect  what  a  player  has  contributed  since  it  does  a  better  job  of 
noting  the  relative  value  of  walks,  singles,  doubles,  etc.  than  those  stats.  wOBA  is  simply 
linear  weights  expressed  as  a  "rate  stat"  scaled  on  on‑base  percentage,  so,  for  example 
(depending  on  the  run environment) .320‑.330 are usually around average, .300 is terrible, and 
.400 is awesome.  

While  the  "original  recipe"  uses  some  pretty  standard  and  effective  weights, since then Tango 
has  published  a  script  that  "customizes"  wOBA  for  seasonal  run  environments.  This  has  been 
implemented  at    FanGraphs ,  for  example.  However,  many  people  now  prefer  these  "custom" 
versions,  but  the  values  aren't  readily  available.  I'm  no  sabermetric  or SQL wizard, but I do 
have  the  script  that  these  things  are  based.  Due  to  overwhelming  demand  from  my  massive 
fanbase  (okay,  a  couple  of  people  on    Twitter ),  I've  run  the  script  and  have  the  weights 
through  this  season.  I  take  no  great  claim  to  have  invented  this  method  or  the  script,  but 
below you will find the wOBA coefficients updated for each MLB season through 2010. 

A Few Boring Historical and Methodological Details (Feel Free to Skip) 

  

In  the   
original  formulation  given  in    The  Book ,  the  linear  weights  used  for  events  were:   
HR 
1.70,  3B  1.37,  2B  1.08,  1B  0.77,  uBB  0.62  .  To  scale  this  to  something  resembling  OBP,  Tango 
divided  all  of  these  by  1.15  and  did  other  stuff  to make plate appearances (rather than outs, 
as  in  traditional  linear weights) the denominator to come up with this formula  for caculating 
a player's (or any other entity's) wOBA: 

(0.72xNIBB + 0.75xHBP + 0.90x1B + 0.92xRBOE + 1.24x2B + 1.56x3B + 1.95xHR) / PA 

To  convert  to  linear  weights  runs  above  average  (what  is  called  'wRAA'  at  FanGraphs),  simply 
take  the  players  wOBA,  subtract  the  league  wOBA  from  that,  and  then  divide  by  1.15  (the 
'wOBAScale') and multiply by plate appearances to get back to the actual runs scale. 

Those  weights  work  fine,  actually,  but  Tango  later   


published  a  SQL  (for  Access)  script  using 
the  free  database  from   
Baseball  Databank  to  give  specific  weights  for  each  season  (the  run 
values  of  each  event change for season‑to‑season depending on the run environment. Colin Wyers 
later   
adapted  this  script  for  MySQL,  which  is  the  script  I  use  here.  Again,  check  out  the 
various links given herein for more detailed (and likely more accurate) information. 

The  "original  recipe"  was  created  to  give  one  simple  "rate  stat"  type  to  get  a  hitter‑batter 
matchups  in   
The  Book 
,  so  stolen  bases  weren't  included.  It  was  easy  enough  to  include  them, 
though.  Reached  on  Error  isn't  included  in  this  version  because  they  aren't  recorded  in  the 
Baseball  Databank  (there  are  differing  opinions  as  to  whether  they  should  be  credited  to  the 
player,  I  say  yes,  but  it  isn't  a  big  deal).  What  is  or  isn't  included  in  a  linear 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 16/27
10/24/2018 Linear Weights - Google Docs

weights/wOBA  calculation  isn't  a  simple  matter  of  right  or  wrong,  it depends on what you want 
to  do  with  it.  For  figuring  out  a  batting  order,  for example, you'd probably want to use wOBA 
without  steals/caught  stealing,  for  overall  offensive  value,  including  steals/caught  stealing 
gives a more accurate picture. 

Note  that  Tango's  script  uses 0.2 and 1.4 as every season's linear weights for the stolen base 


and  home  run,  respectively.  Those  are  "quickie"  workaround,  but  they  work  well  enough.  It 
might  look  like  they  change  because  their  wOBA  coefficients  change,  but that's simply because 
the scaling of wOBA to OBP changes each season. 

These  numbers  will  get  you  pretty  close  to  what  is  used  at  FanGraphs,  but  there  are  some 
differences  (likely  due  to  things  like  methods  of  excluding  pitchers  from  the  initial 
calculations,  overall  data  sources,  rounding,  etc.).  I  know  that  the  league wOBAs for seasons 
I  get  and  what  FanGraphs  get  are  sometimes  different,  but  they  are  close  enough.  This  is  not 
'official.'  And  again,  these  are  not  "my"  weights,  I  just  ran  the  script  and  wrote  this 
interminable  post...  I  do  think  these  weights  are  very  good  for  the  most  part,  in  early 
baseball  there  might  be some problems because pitchers took a larger offensive role, and prior 
to  1956  or  so  iBBs  weren't  distinguished  in  the  from  uBBs,  which  also  throws  things  off,  but 
for most of modern baseball, and certainly for 2010, these will do the trick. 

Finally, the Coefficients and Weights 

Here it is, your 2010 wOBA formula (drumroll please): 

(0.70  x  uBB  +  0.73 x HBP + 0.89 x 1B +1.27 x 2B +1.61 x 3B + 2.07 x HR +0.25 x SB + 0.50 x CS) 


/ PA 

The "wOBAScale" for 2010 is 1.25 and the league wOBA is .320, so for runs above average, use 

( (wOBA ‑ .320) /1.25) x PA 

The  "weights  proper"  (rounded  to  two  places)  for  this  season  are 0.30 uBB, 0.33 HBP, 0.46 1B, 
0.76 2B, 1.03 3B, 1.4 HR, 0.2 SB, 0.4 CS. 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 17/27
10/24/2018 Linear Weights - Google Docs

Linear Weights 
Linear  Weights   
are  a  class  of  linear  run  estimators  that  we  use  to  determine  the  relative 
values  of  particular  events. For example, you’re likely familiar with  
Weighted On‑Base Average 
(wOBA)  and   
Fielding  Independent  Pitching  (FIP) 
,  which  have  weights  assigned  to given outcomes 
(i.e.,  singles,  doubles,  home runs, etc) that provide a more nuanced look than statistics such 
as batting average, which counts all hits equally. 
 
Inherently,  we  know  that  we  should  count  doubles  more  than  singles,  but  determining  exactly 
how much more requires some sort of methodology. Linear weights are one such methodology. 
 
It  is  important  to  keep  in  mind  that  the  values  generated  using  this  approach  are 
one‑size‑fits‑all  estimates  using  a  particular  sample  of  data.  They  might  not reflect reality 
under  extreme  conditions  or  in  environments  not  reflective  of  the  original  sample.  This  page 
will use wOBA as a guide, but the logic translates to other applications. 

First Things 

The  first  thing  we  need is a run expectancy matrix. If you need a complete introduction to the 


concept,  head  over  to  this   
page 
.  In  general,  run  expectancy  measures  the  average  number  of 
runs scored (through the end of the current inning) given the current base‑out state. 
 
Base‑out  states  are  a  record  of  the  number  of  outs  (0,  1,  or  2)  and  how  many  runners  are  on 
base  and  where  (no  one  on,  man  on  1B,  men  on  1B  and  3B,  etc).  There  are  three out‑states and 
eight  base‑states,  meaning  that  there  are  24  base‑out  states.  Each  plate  appearance  has  a 
base‑out state. 
 
Let’s  use  one  out,  man  on  first  as  our  example.  In  order  to  calculate  the  run  expectancy  for 
that  base‑out  state,  we  need  to  find  all  instances  of  that  base‑out  state  from  the  entire 
season  (or  set  of  seasons)  and  find  the  total  number  of  runs  scored  from  the  time  that 
base‑out  state  occurred  until the end of the innings in which they occurred. Then we divide by 
the  total  number  of  instances  to  get  the  average.  If  you do the math using 2010‑2015, you get 
0.509  runs.  In  other  words, if all you knew about the situation was that there was one out and 
a  man  on  first,  you  would  expect  there  to  be  .509 runs scored between that moment and the end 
of the inning on average. 
 
You repeat the process for the other 23 base‑out states and wind up with a table like  
this 

 
 
 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 18/27
10/24/2018 Linear Weights - Google Docs

 
 
Run Expectancy Matrix 2010‑2015 
Runners  0 outs  1 outs  2 outs 

__ __ __  0.481  0.254  0.098 

1B __ __  0.859  0.509  0.224 

__ 2B __  1.100  0.664  0.319 

1B 2B __  1.437  0.884  0.429 

__ __ 3B  1.350  0.950  0.353 

1B __ 3B  1.784  1.130  0.478 

__ 2B 3B  1.964  1.376  0.580 

1B 2B 3B  2.292  1.541  0.752 

SOURCE: Tom Tango 
 
The  table  listed  here  was  calculated  by  Tom  Tango  using  2010‑2015  data  for  the  entire  league 
and  serves  as  a  good  baseline.  At  FanGraphs,  we  park  adjust  the  matrix  for  each  game,  so  the 
exact  numbers  might  be  a  touch  different  if  you’re  trying  to  play  along  at  home  in 
excruciating detail. 
 
Now  that  you  have  a  run  expectancy  matrix,  you  need  to  learn  how  to  use  it.  Each  plate 
appearance  moves  you  from  one  base‑out  state  to  another.  So  if  you  walk  with  a  man  on  first 
base  and  one  out,  you  move  to  the  “men  on  first  and  second  and  one  out”  box.  That box has an 
RE  value  of  0.884.  Because  your  plate  appearance  moved  you  from  .509  to  0.884,  that  PA  was 
worth +0.375 in terms of run expectancy. 
 
Every  plate  appearance  has  one  of  these  values,  either  positive  or  negative.  You  can  learn 
more about this by following the earlier link. 

Calculating Linear Weights 

What  we  want  to  determine is the average run value of a walk, HBP, single, double, triple, and 


home  run.  To  do  this,  we  take  the  total  RE  value  of  all  walks  (unintentional  in  this  case), 
for  example,  and  divide  that  number  by  the  number  of  walks  in  that  season.  You’re  going  to 
wind  up  getting  something  around  0.3.  You  repeat  this  for  the  other  five  actions  (when 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 19/27
10/24/2018 Linear Weights - Google Docs

calculating  wOBA)  or  for  any  type  of  play  you  wish.  This  gives  you  the  runs   
above  average 
produced by each of these kinds of events, also known as linear weights. 
 
While  these  linear  weights are an accurate reflection of the data, some people don’t find them 
to  be  particularly  intuitive.  Saying  a  player  has  been  worth  15  runs  above  average  over  the 
course  of  a  season  might  be  accurate,  but  it  also  might  not  translate  very  well  to  all 
audiences.  This  leads  us  to  scale  our  linear  weights  based  stats  into  things  that  are  easier 
to understand. 

Optional Scaling 

For  wOBA,  we  have  the runs above average for walks (0.29), HBP (0.31), singles (0.44), doubles 


(0.74),  triples  (1.01),  and  home  runs  (1.39),  but  what  we  want  to  do  now  is  put  wOBA  on  a 
scale  that  will  look  like  OBP  in  order  to  make  it  easier  to  understand.  In  OBP,  an  out  is 
worth  zero,  so  the  first  thing  we  want  to  do  is  adjust  the  run  value  scale  so  that an out is 
equal to zero. 
 
There  is  an  easy  way  to  do  this.  First,  we  need  to  find  the  linear  weight  for  all outs using 
the  same  method  we  used  to  find  the  value  for  the other events. We’ll call it ‑0.26 for 2015. 
This  means  that  an  out  is  worth  ‑0.26  runs  less  than  the  average  PA  when  it  comes  to  run 
expectancy.  What  we  want  to  do  now  is  add  0.26  to  each  of  our  run  values  so  that  outs  are 
equal  to  zero.  So for walks, which we said are worth 0.29 runs above average, we bump those up 
to  0.55  runs   
relative  to  an  out 
.  Using  linear  weights,  walks  are  worth  0.55  runs  more  than 
outs. We repeat this for each of the five other positive offensive outcomes. 
 
2015 Linear Weights (Relative To Outs) 
Event  Run Value 

BB  0.55 

HBP  0.57 

1B  0.70 

2B  1.00 

3B  1.27 

HR  1.65 

 
As  you’ll  notice,  these  are  not  the  weights  you  saw  in  the  wOBA  equation.  We’re  not  done 
scaling  them  yet.  We  know  that  we  want  BB,  HBP,  1B,  2B,  3B,  and  HR  in  the  numerator  of  the 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 20/27
10/24/2018 Linear Weights - Google Docs

wOBA  formula  and  plate  appearances  (minus  weird  stuff  like  sac  bunts)  in  the  denominator,  so 
what  we’re  going  to  do  is  calculate  “wOBA”  for  the  entire  league  using  the  linear  weights  in 
this table and the total number of events of each type. 
 
In  other  words,  we’re  gong  to  multiply  0.55  times  the  number  of  walks  in  MLB  in  2015  and add 
that  to  0.57  times  the  number  of  HBP  and  so  on,  and  then  divide  the  entire  sum  by the number 
of plate appearances (really AB + BB – IBB + SF +HBP). If we do that, we wind up with 0.250. 
But  remember  that  we  want  wOBA  to  look  like  OBP.  So we need to scale the entire thing so that 
the  league’s  wOBA  is  .313 (to match OBP with IBB removed). To do that, we divide .313/.250 and 
get 1.251, which we call the wOBA Scale. 
 
We  take  the  wOBA  Scale  and  multiply  it  against  the  linear  weights  from  the  table  above  and 
viola,  we  have  ourselves  the  weights  listed  in  the  wOBA  equation. And we’re done! You can use 
a  similar  approach  to  derive  the  FIP  weights,  although  instead  of  scaling  outs  to  zero,  you 
want to scale balls in play to zero. 

Summary 

Essentially,  we  use  linear  weights  to  properly  measure  different  kinds  of  events.  The  most 
common applications are wOBA and FIP. 
 
Linear  weights  requires  taking  the  average  run  expectancy  impact  of  each  type  of  event 
(singles,  doubles,  etc)  and  finding  their  average.  That  leaves  you  with  a  run  value  relative 
to  average,  which  you  can  then  scale  in  any  number  of  ways  to  generate  a  statistic  you  find 
useful. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 21/27
10/24/2018 Linear Weights - Google Docs

The Beginner’s Guide To Deriving wOBA 

by Neil Weinberg ‑ April 11, 2016 

We  feature  many  statistics  on  FanGraphs,  but  one  of  the  most  fundamental  is  Weighted  On‑Base 
Average  (wOBA).  If  you’re  not  familiar  with  the  merits  of  wOBA  in  general,  I  invite  you  to 
head  over  to   
our  full  library  page  on  it  or  to  learn  about  why  it’s  a   
gateway  sabermetric 
statistic 
. For our purposes, I’ll simply include the summary: 

 
wOBA  is  designed  to weigh the different offensive results by their actual average contribution 
to  run  scoring.  Batting  average  treats  all  hits  equally  and  ignores  walks.  OBP  treats  all 
times  on  base  equally.  Slugging  percentage  weighs  hits  based  on  the  number  of  bases  achieved 
but  ignores  walks.  Adding  OBP  and  SLG  is  better  than  any  one  of  AVG/OBP/SLG,  but  it  still 
isn’t quite right. 
 
Hitting  a  single  and  drawing  a  walk  are  both  positive  outcomes,  but  they  have  a  different 
impact  on  the  inning.  A  walk  always  moves  each  runner  up one base while a single could have a 
variety  of  outcomes  depending  on who is on base and where the ball is hit. We want a statistic 
that captures that nuance. 
 
Granted,  wOBA  doesn’t  adjust  for  park,  league,  quality  of  competition,  or  a  number  of  other 
factors,  but  it’s  a  good  starting  point  on  which  to  build.  So  how  do  we  take  the  beautiful 
chaos of baseball and create the formula listed above? 
 
The  exact  numbers  are  going  to  change  each  year  based  on  the  run  environment  (how  many  runs 
are  being  scored  league  wide),  but  they  are  consistent  enough  that we won’t have any problems 
understanding  each  other.  I’m  going  to  use  the  2015  data,  but  you  can  view  every  year   
here 

Allow me to bring a chunk of that table into this post for convenience: 
 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 22/27
10/24/2018 Linear Weights - Google Docs

Seasonal Constants 
Seaso wOBA  wOBAScal wBB  wHBP  w1B  w2B  w3B  wHR  runS runC R/P R/W  cFIP 
n  e  B  S  A 

2015  .313  1.251  .68 .718  .88 1.25 1.59 2.06 .200  ‑.39 .11 9.42 3.13
7  1  6  4  5  2  3  1  4 

2014  .310  1.304  .68 .722  .89 1.28 1.63 2.13 .200  ‑.37 .10 9.11 3.13
9  2  3  5  5  7  8  7  2 

2013  .314  1.277  .69 .722  .88 1.27 1.61 2.10 .200  ‑.38 .11 9.26 3.04
0  8  1  6  1  4  0  4  8 

2012  .315  1.245  .69 .722  .88 1.25 1.59 2.05 .200  ‑.39 .11 9.54 3.09
1  4  7  3  8  8  4  4  5 

2011  .316  1.264  .69 .726  .89 1.27 1.61 2.08 .200  ‑.39 .11 9.45 3.02
4  0  0  1  6  4  2  4  5 

2010  .321  1.251  .70 .732  .89 1.27 1.60 2.07 .200  ‑.40 .11 9.64 3.07
1  5  0  8  2  3  5  3  9 

 
You  can  ignore  the  last four columns for the purposes of wOBA, but this is a truncated version 
of  our  Guts!  page  and  shows  us  each  year’s  league  wOBA,  the  wOBA  scale,  and  the  weights  for 
each  of  our  six offensive events of interest. Hopefully those numbers will look similar to the 
wOBA equation you saw earlier. 
 
Our  ultimate  goal  is  to  create  a  statistic  that  measures  each  offensive  action’s  context 
neutral  contribution  to  run  scoring  because  scoring  runs  is  the  currency of baseball. We have 
decided  that  we  want  to  measure  walks,  HBP,  singles,  doubles,  triples,  and  home  runs.  If  you 
wanted  to,  you  could  build  wOBA  with  more  nuanced  stats  like  fly  ball  outs,  ground  outs, 
strikeouts, etc; it would just get more complicated without much added value. 
 
We  have  a  specific  goal and the set of offensive actions we want to measure, but now we need a 
method of putting them together. 

Run Expectancy 

The  first  thing  we  need is a run expectancy matrix. If you need a complete introduction to the 


concept,  head  over  to  this   
page 
.  In  general,  run  expectancy  measures  the  average  number  of 
runs scored (through the end of the current inning) given the current base‑out state. 
Base‑out  states  are  a  record  of  the  number  of  outs  (0,  1,  or  2)  and  how  many  runners  are  on 
base  and  where  (no  one  on,  man  on  1B,  men  on  1B  and  3B,  etc).  There  are  three out‑states and 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 23/27
10/24/2018 Linear Weights - Google Docs

eight  base‑states,  meaning  that  there  are  24  base‑out  states.  Each  plate  appearance  has  a 
base‑out state. 
 
Let’s  use  one  out,  man  on  first  as  our  example.  In  order  to  calculate  the  run  expectancy  for 
that  base‑out  state,  we  need  to  find  all  instances  of  that  base‑out  state  from  the  entire 
season  (or  set  of  seasons)  and  find  the  total  number  of  runs  scored  from  the  time  that 
base‑out  state  occurred  until the end of the innings in which they occurred. Then we divide by 
the  total  number  of  instances  to  get  the  average.  If  you do the math using 2010‑2015, you get 
0.509  runs.  In  other  words, if all you knew about the situation was that there was one out and 
a  man  on  first,  you  would  expect  there  to  be  .509 runs scored between that moment and the end 
of the inning on average. 
 
You repeat the process for the other 23 base‑out states and wind up with a table like  
this 

 
Run Expectancy Matrix 2010‑2015 
Runners  0 outs  1 outs  2 outs 

__ __ __  0.481  0.254  0.098 

1B __ __  0.859  0.509  0.224 

__ 2B __  1.100  0.664  0.319 

1B 2B __  1.437  0.884  0.429 

__ __ 3B  1.350  0.950  0.353 

1B __ 3B  1.784  1.130  0.478 

__ 2B 3B  1.964  1.376  0.580 

1B 2B 3B  2.292  1.541  0.752 

SOURCE: Tom Tango 
 
The  table  listed  here  was  calculated  by  Tom  Tango  using  2010‑2015  data  for  the  entire  league 
and  serves  as  a  good  baseline.  At  FanGraphs,  we  park  adjust  the  matrix  for  each  game,  so  the 
exact  numbers  might  be  a  touch  different  if  you’re  trying  to  play  along  at  home  in 
excruciating detail. 

Linear Weights 

Now  that  you  have  a  run  expectancy  matrix,  you  need  to  learn  how  to  use  it.  Each  plate 
appearance  moves  you  from  one  base‑out  state  to  another.  So  if  you  walk  with  a  man  on  first 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 24/27
10/24/2018 Linear Weights - Google Docs

base  and  one  out,  you  move  to  the  “men  on  first  and  second  and  one  out”  box.  That box has an 
RE  value  of  0.884.  Because  your  plate  appearance  moved  you  from  .509  to  0.884,  that  PA  was 
worth +0.375 in terms of run expectancy. 
 
Every  plate  appearance  has  one  of  these  values,  either  positive  or  negative.  You  can  learn 
more about this by following the earlier link. 
 
What  we  want  to  determine is the average run value of a walk, HBP, single, double, triple, and 
home  run.  To  do  this,  we  take  the  total  RE  value  of  all  walks  (unintentional  in  this  case), 
for  example,  and  divide  that  number  by  the  number  of  walks  in  that  season.  You’re  going  to 
wind  up  getting  something  around  0.3.  You  repeat  this  for  the  other  five  actions.  This  gives 
you the runs  
above average 
produced by each of these kinds of events. 
 
In  theory,  we  could  essentially  be  done  right  now  because  we have everything we need to build 
a  statistic  that  will  weigh  the  offensive  actions  properly.  However,  the  inventors  of  wOBA 
decided  that  it  would  probably  be  best  to  scale  it  to something familiar to make it easier to 
understand. And they picked OBP. 

Scaling 

We  have  the  runs  above  average  for  walks  (0.29),  HBP  (0.31),  singles  (0.44),  doubles  (0.74), 
triples  (1.01),  and  home  runs  (1.39),  but  what  we  want  to  do  now  is  put  wOBA  on  a scale that 
will  look  like  OBP.  In  OBP,  an  out  is  worth  zero,  so  the  first  thing  we  want  to do is adjust 
the run value scale so that an out is equal to zero. 
 
There  is  an  easy  way  to  do  this.  First,  we  need  to  find  the  linear  weight  for  all outs using 
the  same  method  we  used  to  find  the  value  for  the other events. We’ll call it ‑0.26 for 2015. 
This  means  that  an  out  is  worth  ‑0.26  runs  less  than  the  average  PA  when  it  comes  to  run 
expectancy.  What  we  want  to  do  now  is  add  0.26  to  each  of  our  run  values  so  that  outs  are 
equal  to  zero.  So for walks, which we said are worth 0.29 runs above average, we bump those up 
to  0.55  runs   
relative  to  an  out 
.  Using  linear  weights,  walks  are  worth  0.55  runs  more  than 
outs. We repeat this for each of the five other positive offensive outcomes. 
 
 
 
 
 
 
 
 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 25/27
10/24/2018 Linear Weights - Google Docs

 
 
2015 Linear Weights (Relative To Outs) 
Event  Run Value 

BB  0.55 

HBP  0.57 

1B  0.70 

2B  1.00 

3B  1.27 

HR  1.65 

 
As  you’ll  notice,  these  are  not  the  weights  you  saw  in  the  wOBA  equation.  We’re  not  done 
scaling  them  yet.  We  know  that  we  want  BB,  HBP,  1B,  2B,  3B,  and  HR  in  the  numerator  of  the 
wOBA  formula  and  plate  appearances  (minus  weird  stuff  like  sac  bunts)  in  the  denominator,  so 
what  we’re  going  to  do  is  calculate  “wOBA”  for  the  entire  league  using  the  linear  weights  in 
this table and the total number of events of each type. 
 
In  other  words,  we’re  gong  to  multiply  0.55  times  the  number  of  walks  in  MLB  in  2015  and add 
that  to  0.57  times  the  number  of  HBP  and  so  on,  and  then  divide  the  entire  sum  by the number 
of plate appearances (really AB + BB – IBB + SF +HBP). If we do that, we wind up with 0.250. 
But  remember  that  we  want  wOBA  to  look  like  OBP.  So we need to scale the entire thing so that 
the  league’s  wOBA  is  .313 (to match OBP with IBB removed). To do that, we divide .313/.250 and 
get 1.251, which we call the wOBA Scale. 
 
We  take  the  wOBA  Scale  and  multiply  it  against  the  linear  weights  from  the  table  above  and 
viola, we have ourselves the weights listed in the wOBA equation. And we’re done! 

Concluding Thoughts 

It’s  important  to  remember that wOBA is one implementation of a linear weights based offensive 


metric.  Baseball  Prospectus  has  their  own  version,  True  Average,  which  is  based  on  the  same 
pillars  and  implemented  differently.  Choosing  to  scale  it  to  OBP  is  an  aesthetic  choice.  We 
could  scale  it  to batting average or to nothing. The important part is just that we understand 
the scale we’re using. 
 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 26/27
10/24/2018 Linear Weights - Google Docs

The  main  idea  is  that we’re giving each type of outcome a value based on the average change in 


run  expectancy  that  particular  outcome  yields.  The  idea  is  to  give the right amount of credit 
to  each  kind  of  event.  Doing  so  does  not  make  wOBA  a  perfect  statistic,  it  simply  makes  it a 
better one than the traditional AVG/OBP/SLG. 
 
There  are  lots  of  little  nuances  you  can  add  to  something  like  wOBA  to  get  it  closer  and 
closer to the truth. All we’re doing here is creating the foundation for all of that work. 
 

https://docs.google.com/document/d/1WVXu8MSNWw2WKeO7brV75zOYqD3i9_CCDxKcjnIQJrM/edit# 27/27

You might also like