Wednesday, March 07, 2012

BA/OBA/SLG Algebra, pt. 2


OPS = OBA + SLG = (H + W)/(AB + W) + TB/AB = ((H+W)*AB + TB*(AB + W))/(AB*(AB + W))

I believe the technical term for that is gobbledy-gook.

The only argument in OPS favor is that it is easy to calculate, given that you already have OBA and SLG. The argument that it is simple in theory is only true to math simpletons, who don’t bother to ask why two statistics with different denominators should be added and what the algebraic result of doing so looks like.

Suppose that OBA and SLG did not exist in their present forms as commonly used statistics. Would anyone ever propose

((H + W)*AB + TB*(AB + W))/(AB*(AB + W))
as a measure of a hitter’s productivity?

Or, alternatively, assume that when you were first introduced to OPS, you were not told it was OBA + SLG. Rather, it was introduced to you as the mess above. How long would it have taken you to do the algebra that would pull it apart until into OBA + SLG? Wouldn’t you have asked, “Why are times on base weighted by at bats while total bases are weighted by plate appearances? What is the reasoning behind it?”

OTS/Basic Runs Created

On Base Times Slugging (OBA*SLG) has gone by a few different names (BRA and SLOB) the most frequent, but it’s most easily recognizable when it’s multiplied by at bats:

(H + W)/(AB + W)*(TB/AB)*AB = (H + W)*TB/(AB + W)

Which of course is Bill James’ basic Runs Created formula, which means that OTS is equal to Runs Created/At Bat. We can convert it to Runs Created/PA by multiplying by AB% (since RC/AB*AB/PA = RC/PA), which we have already seen is (1 - OBA)/(1 - BA):

RC/AB*AB% = OBA*SLG*(1 - OBA)/(1 - BA) = RC/PA

We can also endeavor to figure RC/Out from BA/OBA/SLG. Since OBA*SLG is RC/AB:

(RC/AB)*(AB/Out) = RC/Out

Since we’re only considering batting outs, AB/Out is AB/(AB - H) = 1/(1 - BA), leading to:

RC/Out = (RC/AB)*(AB/Out) = OBA*SLG*(1/(1 - BA)) = OBA*SLG/(1 - BA)

I have a lengthier post I want to write about this equation, comparing it to Euler’s identity (in elegance only). It captures the three most commonly used rate statistics and relates them elegantly to the fundamental (at least on the team level) measure of offensive productivity (run/out). It would be perfect if not for the fact that it doesn’t hold up theoretically (minor details, you know).

Bases per Plate Appearance

Bases/PA (which I’ll call BPA) and Bases/Out are intuitive enough ideas for an overall offensive statistic that they have been “invented” many times over. Leaving aside baserunning events, BPA = (TB + W)/(AB + W), which can easily be calculated from BA/OBA/SLG:

(TB + W)/(AB + W) = TB/(AB + W) + W/(AB + W)

We already know the formula for W/(AB + W), so:

TB/(AB + W) = (TB/AB)*(AB/(AB + W))

The second term is AB%, so:

BPA = SLG*(1 - OBA)/(1 - BA) + (OBA - BA)/(1 - BA)
= (SLG*(1 - OBA) + OBA - BA)/(1 - BA)

I’m not sure which of those equations looks better, but take your pick.

Bases per Out

The batting-events version of bases/out is (TB - H)/(AB - H). That of course can be split into TB/(AB - H) + W/(AB - H), and we can start with TB/AB and W/AB and convert to per (AB - H) by multiplying by AB/(AB - H). Again, AB/(AB - H) is 1/(1 - BA), so:

TB/(AB - H) = (TB/AB)*((AB - H)/AB) = SLG*1/(1 - BA) = SLG/(1 - BA)
W/(AB - H) = (W/AB)*((AB - H)/AB) = ((OBA - BA)/(1 - OBA))*1/(1 - BA) = (OBA - BA)/((1 - OBA)*(1 - BA))

Bases/Out = SLG/(1 - BA) + (OBA - BA)/((1 - OBA)*(1 - BA)) = (1/(1 - BA))*(SLG + (OBA - BA)/(1 - OBA)) = (SLG + (OBA - BA)/(1 - OBA))/(1 - BA)

Estimated Runs Produced

If you’re still awake, you should be starting to realize that BA, OBA, and SLG can be converted into just about any components that rely only on some combination of AB, H, TB, and W. This means that it’s quite possible to get some pretty decent linear run estimators from the slash stats; you just have to avoid those that break out doubles, triples, and homers rather than treating all extra bases equally. This constraint does reduce the possible accuracy a bit, but still leaves you with some pretty decent options.

A quick skeleton-style linear weight formula I use a lot is essentially Paul Johnson’s Estimated Runs Produced:

ERP = (TB + .8H + W - .3AB)*.324

It is easiest to start by writing this in its per AB form:

ERP/AB = (TB + .8H + W - .3)*.324/AB

Which can be rewritten as:

ERP/AB = (SLG + .8*BA + (OBA - BA)/(1 - OBA) - .3)*.324

Runs/at bat is not a particularly useful form if you intend to just use the result as a rate; per plate appearance or per out are much more meaningful, and of course we can convert:

(ERP/AB)*(AB/PA) = ERP/PA = (SLG + .8*BA + (OBA - BA)/(1 - OBA) - .3)*(1 - OBA)/(1 - BA)

= (SLG*(1 - OBA)/(1 - BA) + .8*BA*(1 - OBA)/(1 - BA) + (OBA - BA)/(1 - BA) - .3*(1 - OBA)/(1 - BA))*.324

= ((OBA - BA + .8*BA*(1 - OBA) + SLG*(1 - OBA) - .3*(1 - OBA))/(1 - BA) * .324

ERP/PA = ((OBA - BA) + (1 - OBA)*(.8*BA + SLG - .3))/(1 - BA)*.324

These formulas are certainly less elegant than their RC counterparts when expressed in terms of the slash stats, but they are much more sound, and arguably just as easy to calculate when using their components rather than the slash stats.

To get ERP/Out, it’s easiest to start with ERP/AB and multiply by (AB - H)/AB. There’s not much simplification to be had:

ERP/Out = (ERP/AB)*((AB - H)/AB) = (SLG + .8*BA + (OBA - BA)/(1 - OBA) - .3)*.324*1/(1 - BA)

= (SLG + .8*BA + (OBA - BA)/(1 - OBA) - .3)/(1 - BA)*.324

If you’d like that in a convenient R/G format, you can multiply by 25.2, which would leave you with:

ERP/G = (SLG + .8*BA + (OBA - BA)/(1 - OBA) - .3)/(1 - BA)*8.16

Please remember that it’s much more straightforward to just figure ERP or other similar linear weight methods from the inputs and not to bother with BA/OBA/SLG at all. I certainly wouldn’t want these more complex equations to encourage the usage of “simple” formulas like OBA + SLG.

No comments:

Post a Comment

I reserve the right to reject any comment for any reason.